#!/usr/bin/env bash Backup_MySQL2() { echo "Starting backup all databases..." echo "If the database is large, the backup time will be longer." /usr/local/mysql/bin/mysqldump --defaults-file=~/.my.cnf --all-databases > /root/mysql_all_backup${Upgrade_Date}.sql if [ $? -eq 0 ]; then echo "MySQL databases backup successfully."; else echo "MySQL databases backup failed,Please backup databases manually!" exit 1 fi lnmp stop echo "Remove autostart..." Remove_StartUp mysql mv /usr/local/mysql /usr/local/mysql2mariadb${Upgrade_Date} mv /etc/init.d/mysql /usr/local/mysql2mariadb${Upgrade_Date}/init.dmysql2mariadb.bak.${Upgrade_Date} mv /etc/my.cnf /usr/local/mysql2mariadb${Upgrade_Date}/my.cnf.mysql2mariadbbak.${Upgrade_Date} if [ "${MariaDB_Data_Dir}" != "/usr/local/mariadb/var" ]; then mv ${MariaDB_Data_Dir} ${MariaDB_Data_Dir}${Upgrade_Date} fi if echo "${mariadb_version}" | grep -Eqi '^5.5.' && echo "${cur_mysql_version}" | grep -Eqi '^5.6.';then sed -i 's/STATS_PERSISTENT=0//g' /root/mysql_all_backup${Upgrade_Date}.sql fi } Upgrade_MySQL2MariaDB() { Check_DB if [ "${Is_MySQL}" = "n" ]; then Echo_Red "Current database was MariaDB, Can't run MySQL2MariaDB upgrade script." exit 1 fi Verify_DB_Password cur_mysql_version=`/usr/local/mysql/bin/mysql_config --version` mariadb_version="" echo "Current MySQL Version:${cur_mysql_version}" echo "You can get version number from https://downloads.mariadb.org/" Echo_Yellow "Please enter MariaDB Version you want." read -p "(example: 10.1.33 ): " mariadb_version if [ "${mariadb_version}" = "" ]; then echo "Error: You must input MariaDB Version!!" exit 1 fi #do you want to install the InnoDB Storage Engine? echo "===========================" InstallInnodb="y" Echo_Yellow "Do you want to install the InnoDB Storage Engine?" read -p "(Default yes, if you want please enter: y , if not please enter: n): " InstallInnodb case "${InstallInnodb}" in [yY][eE][sS]|[yY]) echo "You will install the InnoDB Storage Engine" InstallInnodb="y" ;; [nN][oO]|[nN]) echo "You will NOT install the InnoDB Storage Engine!" InstallInnodb="n" ;; *) echo "No input, The InnoDB Storage Engine will enable." InstallInnodb="y" esac echo "=====================================================================" echo "You will upgrade MySQL V${cur_mysql_version} to MariaDB V${mariadb_version}" echo "=====================================================================" if [ -s /usr/local/include/jemalloc/jemalloc.h ] && lsof -n|grep "libjemalloc.so"|grep -q "mysqld"; then MariaDBMAOpt='' elif [ -s /usr/local/include/gperftools/tcmalloc.h ] && lsof -n|grep "libtcmalloc.so"|grep -q "mysqld"; then MariaDBMAOpt="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc' -DWITH_SAFEMALLOC=OFF" else MariaDBMAOpt='' fi Press_Start echo "============================check files==================================" cd ${cur_dir}/src if [ -s mariadb-${mariadb_version}.tar.gz ]; then echo "mariadb-${mariadb_version}.tar.gz [found]" else echo "Notice: mariadb-${mariadb_version}.tar.gz not found!!!download now......" wget -c --progress=bar:force https://downloads.mariadb.org/interstitial/mariadb-${mariadb_version}/source/mariadb-${mariadb_version}.tar.gz if [ $? -eq 0 ]; then echo "Download mariadb-${mariadb_version}.tar.gz successfully!" else wget -c --progress=bar:force https://downloads.mariadb.org/interstitial/mariadb-${mariadb_version}/kvm-tarbake-jaunty-x86/mariadb-${mariadb_version}.tar.gz if [ $? -eq 0 ]; then echo "Download mariadb-${mariadb_version}.tar.gz successfully!" else echo "You enter MySQL Version was:"${mariadb_version} Echo_Red "Error! You entered a wrong version number, please check!" sleep 5 exit 1 fi fi fi echo "============================check files==================================" Backup_MySQL2 echo "Starting upgrade MySQL to MariaDB..." MariaDB_WITHSSL Tar_Cd mariadb-${mariadb_version}.tar.gz mariadb-${mariadb_version} if echo "${mariadb_version}" | grep -Eqi '^10.4.';then patch -p1 < ${cur_dir}/src/patch/mariadb_10.4_install_db.patch cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 elif echo "${mariadb_version}" | grep -Eqi '^10.[123].';then cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${MariaDBWITHSSL} else cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 ${MariaDBWITHSSL} fi Make_Install groupadd mariadb useradd -s /sbin/nologin -M -g mariadb mariadb cat > /etc/my.cnf<