2022-10-27 356
MySQL/MariaDB/Percona数据库升级脚本截取《OneinStack》中upgrade_db.sh,一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们。为防止大版本之间兼容问题,脚本默认仅支持同一大版本之间的升级,如:MySQL-5.6.25升级到MySQL-5.6.26、MySQL-5.5.44升级到MySQL-5.5.45、MariaDB-10.0.20升级到MariaDB-10.0.21;不能跨分支版本且不能跨大版本,如从MySQL-5.5.44升级到PerconaL-5.5.44-37.3、MySQL-5.5.44升级到MySQL-5.6.25。
2015-07-16之前版本如何支持数据库版本升级?
《OneinStack》:
cponeinstack/options.conf./#备份options.conf rm-rfoneinstack#删除旧版 wgethttp://mirrors.linuxeye.com/oneinstack-full.tar.gz#下载***版 tarxzfoneinstack-full.tar.gz /bin/mvoptions.conf./oneinstack#还原options.conf,必须使用旧版options.conf文件 cdoneinstack ./upgradedb#升级数据库版本
《lnmp一键安装包》:
cplnmp/options.conf./#备份options.conf rm-rflnmp#删除旧版 wgethttp://mirrors.linuxeye.com/lnmp-full.tar.gz#下载***版 tarxzflnmp-full.tar.gz /bin/mvoptions.conf./lnmp#还原options.conf,必须使用旧版options.conf文件 cdlnmp ./upgradedb#升级数据库版本
PS:
MySQL/MariaDB/Percona数据库升级脚本内容如下(cat upgrade_db.sh):
#!/bin/bash #Author:yeho<lj2007331ATgmail.com> #Blog:http://blog.linuxeye.com Upgrade_DB() { cd$oneinstack_dir/src [!-e"$db_install_dir/bin/mysql"]&&echo-e"\033[31mTheMySQL/MariaDB/Perconaisnotinstalledonyoursystem!\033[0m"&&exit1 DB_version_tmp=`$db_install_dir/bin/mysql-V|awk'{print$5}'|awk-F,'{print$1}'` DB_tmp=`echo$DB_version_tmp|awk-F'-''{print$2}'` if["$DB_tmp"=='MariaDB'];then public_IP=`../functions/get_public_ip.py` if["`../functions/get_ip_area.py$public_IP`"=='\u4e2d\u56fd'];then FLAG_IP=CN fi ["$FLAG_IP"x=="CN"x]&&DOWN_ADDR=http://mirrors.aliyun.com/mariadb||DOWN_ADDR=https://downloads.mariadb.org/f [-d"/lib64"]&&{SYS_BIT_a=x86_64;SYS_BIT_b=x86_64;}||{SYS_BIT_a=x86;SYS_BIT_b=i686;} LIBC_VERSION=`getconf-a|grepGNU_LIBC_VERSION|awk'{print$NF}'` LIBC_YN=`echo"$LIBC_VERSION<2.14"|bc` [$LIBC_YN=='1']&&GLIBC_FLAG=linux||GLIBC_FLAG=linux-glibc_214 DB=MariaDB Old_DB_version=`echo$DB_version_tmp|awk-F'-''{print$1}'` elif[-n"$DB_tmp"-a"$DB_tmp"!='MariaDB'];then DB=Percona Old_DB_version=$DB_version_tmp else DB=MySQL Old_DB_version=$DB_version_tmp fi #backup while: do $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"quit">/dev/null2>&1 if[$?-eq0];then break else echo read-p"Pleaseinputtherootpasswordofdatabase:"NEW_dbrootpwd $db_install_dir/bin/mysql-uroot-p${NEW_dbrootpwd}-e"quit">/dev/null2>&1 if[$?-eq0];then dbrootpwd=$NEW_dbrootpwd sed-i"s+^dbrootpwd.*+dbrootpwd='$dbrootpwd'+"../options.conf break else echo-e"\033[31m$DBrootpasswordincorrect,Pleaseenteragain!\033[0m" fi fi done echo echo-e"\033[32mStarting$DBbackup......\033[0m" $db_install_dir/bin/mysqldump-uroot-p${dbrootpwd}--opt--all-databases>DB_all_backup_$(date+"%Y%m%d").sql [-f"DB_all_backup_$(date+"%Y%m%d").sql"]&&echo-e"$DBbackupsuccess,Backupfile:\033[32m`pwd`/DB_all_backup_$(date+"%Y%m%d").sql\033[0m" #upgrade echo echo-e"Current$DBVersion:\033[32m$Old_DB_version\033[0m" [-e/usr/local/lib/libtcmalloc.so]&&{je_tc_malloc=2;EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'";} [-e/usr/local/lib/libjemalloc.so]&&{je_tc_malloc=1;EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'";} while: do echo read-p"Pleaseinputupgrade$DBVersion(example:5.6.25):"DB_version if[`echo$DB_version|awk-F.'{print$1"."$2}'`==`echo$Old_DB_version|awk-F.'{print$1"."$2}'`];then if["$DB"=='MariaDB'];then DB_name=mariadb-${DB_version}-${GLIBC_FLAG}-${SYS_BIT_b} DB_URL=$DOWN_ADDR/mariadb-${DB_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/$DB_name.tar.gz elif["$DB"=='Percona'];then DB_name=percona-server-$DB_version DB_URL=http://www.percona.com/redir/downloads/Percona-Server-`echo$DB_version|awk-F.'{print$1"."$2}'`/LATEST/source/tarball/$DB_name.tar.gz elif["$DB"=='MySQL'];then DB_name=mysql-$DB_version DB_URL=http://cdn.mysql.com/Downloads/MySQL-`echo$DB_version|awk-F.'{print$1"."$2}'`/$DB_name.tar.gz fi [!-e"$DB_name.tar.gz"]&&wget-c$DB_URL>/dev/null2>&1 if[-e"$DB_name.tar.gz"];then echo-e"Download\033[32m$DB_name.tar.gz\033[0msuccessfully!" else echo-e"\033[31mItdoesnotexist!\033[0m" fi break else echo-e"\033[31minputerror!\033[0mPleaseonlyinput'\033[32m${Old_DB_version%.*}.xx'\033[0m" fi done if[-e"$DB_name.tar.gz"];then echo-e"\033[32m$DB_name.tar.gz\033[0m[found]" echo"PressCtrl+ctocancelorPressanykeytocontinue..." char=`get_char` if["$DB"=='MariaDB'];then servicemysqldstop mv${db_install_dir}{,_old_`date+"%Y%m%d"`} mv${db_data_dir}{,_old_`date+"%Y%m%d"`} mkdir-p$db_data_dir;chownmysql.mysql-R$db_data_dir tarxzf$DB_name.tar.gz [!-d"$db_install_dir"]&&mkdir-p$db_install_dir mvmariadb-${DB_version}-linux-${SYS_BIT_b}/*$db_install_dir if["$je_tc_malloc"=='1'];then sed-i's@executingmysqld_safe@executingmysqld_safe\nexportLD_PRELOAD=/usr/local/lib/libjemalloc.so@'$db_install_dir/bin/mysqld_safe elif["$je_tc_malloc"=='2'];then sed-i's@executingmysqld_safe@executingmysqld_safe\nexportLD_PRELOAD=/usr/local/lib/libtcmalloc.so@'$db_install_dir/bin/mysqld_safe fi $db_install_dir/scripts/mysql_install_db--user=mysql--basedir=$db_install_dir--datadir=$db_data_dir chownmysql.mysql-R$db_data_dir servicemysqldstart $db_install_dir/bin/mysql<DB_all_backup_$(date+"%Y%m%d").sql servicemysqldrestart $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"dropdatabasetest;">/dev/null2>&1 $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"resetmaster;">/dev/null2>&1 [$?-eq0]&&echo-e"Youhave\033[32m$DBsuccessfully\033[0mupgradefrom\033[32m$Old_DB_version\033[0mto\033[32m$DB_version\033[0m" elif["$DB"=='Percona'];then tarzxf$DB_name.tar.gz cd$DB_name makeclean if["`echo$DB_version|awk-F.'{print$1"."$2}'`"=='5.5'];then cmake.-DCMAKE_INSTALL_PREFIX=$db_install_dir\ -DMYSQL_DATADIR=$db_data_dir\ -DSYSCONFDIR=/etc\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_PARTITION_STORAGE_ENGINE=1\ -DWITH_FEDERATED_STORAGE_ENGINE=1\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1\ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DWITH_ARCHIVE_STORAGE_ENGINE=1\ -DWITH_READLINE=1\ -DENABLE_DTRACE=0\ -DENABLED_LOCAL_INFILE=1\ -DDEFAULT_CHARSET=utf8mb4\ -DDEFAULT_COLLATION=utf8mb4_general_ci\ $EXE_LINKER else cmake.-DCMAKE_INSTALL_PREFIX=$db_install_dir\ -DMYSQL_DATADIR=$db_data_dir\ -DSYSCONFDIR=/etc\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_PARTITION_STORAGE_ENGINE=1\ -DWITH_FEDERATED_STORAGE_ENGINE=1\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1\ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DWITH_ARCHIVE_STORAGE_ENGINE=1\ -DENABLED_LOCAL_INFILE=1\ -DENABLE_DTRACE=0\ -DDEFAULT_CHARSET=utf8mb4\ -DDEFAULT_COLLATION=utf8mb4_general_ci\ $EXE_LINKER fi make-j`grepprocessor/proc/cpuinfo|wc-l` servicemysqldstop mv${db_install_dir}{,_old_`date+"%Y%m%d"`} mv${db_data_dir}{,_old_`date+"%Y%m%d"`} [!-d"$db_install_dir"]&&mkdir-p$db_install_dir mkdir-p$db_data_dir;chownmysql.mysql-R$db_data_dir makeinstall $db_install_dir/scripts/mysql_install_db--user=mysql--basedir=$db_install_dir--datadir=$db_data_dir chownmysql.mysql-R$db_data_dir servicemysqldstart $db_install_dir/bin/mysql<DB_all_backup_$(date+"%Y%m%d").sql servicemysqldrestart $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"dropdatabasetest;">/dev/null2>&1 $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"resetmaster;">/dev/null2>&1 [$?-eq0]&&echo-e"Youhave\033[32m$DBsuccessfully\033[0mupgradefrom\033[32m$Old_DB_version\033[0mto\033[32m$DB_version\033[0m" elif["$DB"=='MySQL'];then tarzxf$DB_name.tar.gz cd$DB_name makeclean if["`echo$DB_version|awk-F.'{print$1"."$2}'`"=='5.5'];then cmake.-DCMAKE_INSTALL_PREFIX=$db_install_dir\ -DMYSQL_DATADIR=$db_data_dir\ -DSYSCONFDIR=/etc\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_PARTITION_STORAGE_ENGINE=1\ -DWITH_FEDERATED_STORAGE_ENGINE=1\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1\ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DWITH_ARCHIVE_STORAGE_ENGINE=1\ -DWITH_READLINE=1\ -DENABLED_LOCAL_INFILE=1\ -DENABLE_DTRACE=0\ -DDEFAULT_CHARSET=utf8mb4\ -DDEFAULT_COLLATION=utf8mb4_general_ci\ -DWITH_EMBEDDED_SERVER=1\ $EXE_LINKER else cmake.-DCMAKE_INSTALL_PREFIX=$db_install_dir\ -DMYSQL_DATADIR=$db_data_dir\ -DSYSCONFDIR=/etc\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_PARTITION_STORAGE_ENGINE=1\ -DWITH_FEDERATED_STORAGE_ENGINE=1\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1\ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DENABLED_LOCAL_INFILE=1\ -DENABLE_DTRACE=0\ -DDEFAULT_CHARSET=utf8mb4\ -DDEFAULT_COLLATION=utf8mb4_general_ci\ -DWITH_EMBEDDED_SERVER=1\ $EXE_LINKER fi make-j`grepprocessor/proc/cpuinfo|wc-l` servicemysqldstop mv${db_install_dir}{,_old_`date+"%Y%m%d"`} mv${db_data_dir}{,_old_`date+"%Y%m%d"`} [!-d"$db_install_dir"]&&mkdir-p$db_install_dir mkdir-p$db_data_dir;chownmysql.mysql-R$db_data_dir makeinstall $db_install_dir/scripts/mysql_install_db--user=mysql--basedir=$db_install_dir--datadir=$db_data_dir chownmysql.mysql-R$db_data_dir servicemysqldstart $db_install_dir/bin/mysql<DB_all_backup_$(date+"%Y%m%d").sql servicemysqldrestart $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"dropdatabasetest;">/dev/null2>&1 $db_install_dir/bin/mysql-uroot-p${dbrootpwd}-e"resetmaster;">/dev/null2>&1 [$?-eq0]&&echo-e"Youhave\033[32m$DBsuccessfully\033[0mupgradefrom\033[32m$Old_DB_version\033[0mto\033[32m$DB_version\033[0m" fi fi }
Thu Jul 16 12:34:49 CST 2015
《Linux运维笔记》的博文均基于创作共享的知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议发布。转载本站博文时请务必以超链接形式标明源文出处,否则谢绝一切转载!
转载请保留固定链接:https://blog.linuxeye.com/424.html
原文链接:https://77isp.com/post/5631.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态