服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - MySQL/MariaDB/Percona数据库升级脚本

MySQL/MariaDB/Percona数据库升级脚本

2023-05-07 02:11未知服务器之家 MongoDB

MySQL/MariaDB/Percona数据库升级脚本截取《OneinStack》中upgrade_db.sh,一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们。为防止大版本之间兼容问题,脚本默认仅支持同一大版本之间的升级,如:MySQL-5.6.25升级到MySQL-5

   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》:

  1. cp oneinstack/options.conf ./  #备份options.conf 
  2. rm -rf oneinstack  #删除旧版 
  3. wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz  #下载***版 
  4. tar xzf oneinstack-full.tar.gz 
  5. /bin/mv options.conf ./oneinstack  #还原options.conf, 必须使用旧版options.conf文件 
  6. cd oneinstack 
  7. ./upgrade db  #升级数据库版本 

  《lnmp一键安装包》:

  1. cp lnmp/options.conf ./  #备份options.conf 
  2. rm -rf lnmp  #删除旧版 
  3. wget http://mirrors.linuxeye.com/lnmp-full.tar.gz  #下载***版 
  4. tar xzf lnmp-full.tar.gz 
  5. /bin/mv options.conf ./lnmp  #还原options.conf, 必须使用旧版options.conf文件 
  6. cd lnmp 
  7. ./upgrade db  #升级数据库版本 

  PS:

 

  MySQL/MariaDB/Percona数据库升级脚本内容如下(cat upgrade_db.sh):

  1. #!/bin/bash 
  2. # Author:  yeho <lj2007331 AT gmail.com> 
  3. # Blog:  http://blog.linuxeye.com 
  4.  
  5. Upgrade_DB() 
  6. cd $oneinstack_dir/src 
  7. [ ! -e "$db_install_dir/bin/mysql" ] && echo -e "\033[31mThe MySQL/MariaDB/Percona is not installed on your system!\033[0m " && exit 1 
  8. DB_version_tmp=`$db_install_dir/bin/mysql -V | awk '{print $5}' | awk -F, '{print $1}'
  9. DB_tmp=`echo $DB_version_tmp | awk -F'-' '{print $2}'
  10. if [ "$DB_tmp" == 'MariaDB' ];then 
  11.     public_IP=`../functions/get_public_ip.py` 
  12.     if [ "`../functions/get_ip_area.py $public_IP`" == '\u4e2d\u56fd' ];then 
  13.             FLAG_IP=CN 
  14.     fi 
  15.     [ "$FLAG_IP"x == "CN"x ] && DOWN_ADDR=http://mirrors.aliyun.com/mariadb || DOWN_ADDR=https://downloads.mariadb.org/f 
  16.     [ -d "/lib64" ] && { SYS_BIT_a=x86_64;SYS_BIT_b=x86_64; } || { SYS_BIT_a=x86;SYS_BIT_b=i686; } 
  17.     LIBC_VERSION=`getconf -a | grep GNU_LIBC_VERSION | awk '{print $NF}'
  18.     LIBC_YN=`echo "$LIBC_VERSION < 2.14" | bc` 
  19.     [ $LIBC_YN == '1' ] && GLIBC_FLAG=linux || GLIBC_FLAG=linux-glibc_214 
  20.  
  21.     DB=MariaDB 
  22.     Old_DB_version=`echo $DB_version_tmp | awk -F'-' '{print $1}'
  23. elif [ -n "$DB_tmp" -a "$DB_tmp" != 'MariaDB' ];then 
  24.     DB=Percona 
  25.     Old_DB_version=$DB_version_tmp 
  26. else 
  27.     DB=MySQL 
  28.     Old_DB_version=$DB_version_tmp 
  29. fi 
  30.  
  31. #backup 
  32. while : 
  33. do 
  34.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "quit" >/dev/null 2>&1 
  35.         if [ $? -eq 0 ];then 
  36.                 break 
  37.         else 
  38.                 echo 
  39.                 read -p "Please input the root password of database: " NEW_dbrootpwd 
  40.                 $db_install_dir/bin/mysql -uroot -p${NEW_dbrootpwd} -e "quit" >/dev/null 2>&1 
  41.                 if [ $? -eq 0 ];then 
  42.                         dbrootpwd=$NEW_dbrootpwd 
  43.                         sed -i "s+^dbrootpwd.*+dbrootpwd='$dbrootpwd'+" ../options.conf 
  44.                         break 
  45.                 else 
  46.                         echo -e "\033[31m$DB root password incorrect,Please enter again! \033[0m" 
  47.                 fi 
  48.         fi 
  49.  
  50. done 
  51. echo 
  52. echo -e "\033[32mStarting $DB backup......\033[0m" 
  53. $db_install_dir/bin/mysqldump -uroot -p${dbrootpwd} --opt --all-databases > DB_all_backup_$(date +"%Y%m%d").sql 
  54. [ -f "DB_all_backup_$(date +"%Y%m%d").sql" ] && echo -e "$DB backup success, Backup file: \033[32m`pwd`/DB_all_backup_$(date +"%Y%m%d").sql\033[0m" 
  55.  
  56. #upgrade 
  57. echo 
  58. echo -e "Current $DB Version: \033[32m$Old_DB_version\033[0m" 
  59. [ -e /usr/local/lib/libtcmalloc.so ] && { je_tc_malloc=2; EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"; } 
  60. [ -e /usr/local/lib/libjemalloc.so ] && { je_tc_malloc=1; EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"; } 
  61.  
  62. while : 
  63. do 
  64.         echo 
  65.         read -p "Please input upgrade $DB Version(example: 5.6.25): " DB_version 
  66.         if [ `echo $DB_version | awk -F. '{print $1"."$2}'` == `echo $Old_DB_version | awk -F. '{print $1"."$2}'` ]; then 
  67.         if [ "$DB" == 'MariaDB' ];then 
  68.             DB_name=mariadb-${DB_version}-${GLIBC_FLAG}-${SYS_BIT_b} 
  69.             DB_URL=$DOWN_ADDR/mariadb-${DB_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/$DB_name.tar.gz 
  70.         elif [ "$DB" == 'Percona' ];then 
  71.             DB_name=percona-server-$DB_version 
  72.             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 
  73.         elif [ "$DB" == 'MySQL' ];then 
  74.             DB_name=mysql-$DB_version 
  75.             DB_URL=http://cdn.mysql.com/Downloads/MySQL-`echo $DB_version | awk -F. '{print $1"."$2}'`/$DB_name.tar.gz 
  76.         fi 
  77.                 [ ! -e "$DB_name.tar.gz" ] && wget -c $DB_URL > /dev/null 2>&1 
  78.          
  79.                 if [ -e "$DB_name.tar.gz" ];then 
  80.                         echo -e "Download \033[32m$DB_name.tar.gz\033[0m successfully! " 
  81.                 else 
  82.                         echo -e "\033[31mIt does not exist!\033[0m" 
  83.                 fi 
  84.                 break 
  85.         else 
  86.                 echo -e "\033[31minput error!\033[0m Please only input '\033[32m${Old_DB_version%.*}.xx' \033[0m" 
  87.         fi 
  88. done 
  89.  
  90. if [ -e "$DB_name.tar.gz" ];then 
  91.         echo -e "\033[32m$DB_name.tar.gz\033[0m [found]" 
  92.         echo "Press Ctrl+c to cancel or Press any key to continue..." 
  93.         char=`get_char` 
  94.     if [ "$DB" == 'MariaDB' ];then  
  95.         service mysqld stop 
  96.         mv ${db_install_dir}{,_old_`date +"%Y%m%d"`} 
  97.         mv ${db_data_dir}{,_old_`date +"%Y%m%d"`} 
  98.         mkdir -p $db_data_dir;chown mysql.mysql -R $db_data_dir 
  99.         tar xzf $DB_name.tar.gz 
  100.         [ ! -d "$db_install_dir" ] && mkdir -p $db_install_dir 
  101.         mv mariadb-${DB_version}-linux-${SYS_BIT_b}/* $db_install_dir 
  102.         if [ "$je_tc_malloc" == '1' ];then 
  103.                 sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $db_install_dir/bin/mysqld_safe 
  104.         elif [ "$je_tc_malloc" == '2' ];then 
  105.                 sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $db_install_dir/bin/mysqld_safe 
  106.         fi 
  107.         $db_install_dir/scripts/mysql_install_db --user=mysql --basedir=$db_install_dir --datadir=$db_data_dir 
  108.         chown mysql.mysql -R $db_data_dir 
  109.         service mysqld start 
  110.         $db_install_dir/bin/mysql < DB_all_backup_$(date +"%Y%m%d").sql  
  111.         service mysqld restart 
  112.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;" >/dev/null 2>&1 
  113.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "reset master;" >/dev/null 2>&1 
  114.                 [ $? -eq 0 ] &&  echo -e "You have \033[32m$DB successfully\033[0m upgrade from \033[32m$Old_DB_version\033[0m to \033[32m$DB_version\033[0m" 
  115.     elif [ "$DB" == 'Percona' ];then 
  116.         tar zxf $DB_name.tar.gz  
  117.         cd $DB_name 
  118.         make clean 
  119.         if [ "`echo $DB_version | awk -F. '{print $1"."$2}'`" == '5.5' ];then 
  120.             cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \ 
  121. -DMYSQL_DATADIR=$db_data_dir \ 
  122. -DSYSCONFDIR=/etc \ 
  123. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  124. -DWITH_PARTITION_STORAGE_ENGINE=1 \ 
  125. -DWITH_FEDERATED_STORAGE_ENGINE=1 \ 
  126. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
  127. -DWITH_MYISAM_STORAGE_ENGINE=1 \ 
  128. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 
  129. -DWITH_READLINE=1 \ 
  130. -DENABLE_DTRACE=0 \ 
  131. -DENABLED_LOCAL_INFILE=1 \ 
  132. -DDEFAULT_CHARSET=utf8mb4 \ 
  133. -DDEFAULT_COLLATION=utf8mb4_general_ci \ 
  134. $EXE_LINKER 
  135.         else 
  136.             cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \ 
  137. -DMYSQL_DATADIR=$db_data_dir \ 
  138. -DSYSCONFDIR=/etc \ 
  139. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  140. -DWITH_PARTITION_STORAGE_ENGINE=1 \ 
  141. -DWITH_FEDERATED_STORAGE_ENGINE=1 \ 
  142. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
  143. -DWITH_MYISAM_STORAGE_ENGINE=1 \ 
  144. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 
  145. -DENABLED_LOCAL_INFILE=1 \ 
  146. -DENABLE_DTRACE=0 \ 
  147. -DDEFAULT_CHARSET=utf8mb4 \ 
  148. -DDEFAULT_COLLATION=utf8mb4_general_ci \ 
  149. $EXE_LINKER 
  150.         fi 
  151.         make -j `grep processor /proc/cpuinfo | wc -l` 
  152.         service mysqld stop 
  153.         mv ${db_install_dir}{,_old_`date +"%Y%m%d"`} 
  154.                 mv ${db_data_dir}{,_old_`date +"%Y%m%d"`} 
  155.         [ ! -d "$db_install_dir" ] && mkdir -p $db_install_dir 
  156.                 mkdir -p $db_data_dir;chown mysql.mysql -R $db_data_dir 
  157.         make install 
  158.         $db_install_dir/scripts/mysql_install_db --user=mysql --basedir=$db_install_dir --datadir=$db_data_dir 
  159.                 chown mysql.mysql -R $db_data_dir 
  160.                 service mysqld start 
  161.         $db_install_dir/bin/mysql < DB_all_backup_$(date +"%Y%m%d").sql 
  162.                 service mysqld restart 
  163.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;" >/dev/null 2>&1 
  164.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "reset master;" >/dev/null 2>&1 
  165.                 [ $? -eq 0 ] &&  echo -e "You have \033[32m$DB successfully\033[0m upgrade from \033[32m$Old_DB_version\033[0m to \033[32m$DB_version\033[0m" 
  166.     elif [ "$DB" == 'MySQL' ];then 
  167.         tar zxf $DB_name.tar.gz 
  168.                 cd $DB_name 
  169.                 make clean 
  170.                 if [ "`echo $DB_version | awk -F. '{print $1"."$2}'`" == '5.5' ];then 
  171.                         cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \ 
  172. -DMYSQL_DATADIR=$db_data_dir \ 
  173. -DSYSCONFDIR=/etc \ 
  174. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  175. -DWITH_PARTITION_STORAGE_ENGINE=1 \ 
  176. -DWITH_FEDERATED_STORAGE_ENGINE=1 \ 
  177. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
  178. -DWITH_MYISAM_STORAGE_ENGINE=1 \ 
  179. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 
  180. -DWITH_READLINE=1 \ 
  181. -DENABLED_LOCAL_INFILE=1 \ 
  182. -DENABLE_DTRACE=0 \ 
  183. -DDEFAULT_CHARSET=utf8mb4 \ 
  184. -DDEFAULT_COLLATION=utf8mb4_general_ci \ 
  185. -DWITH_EMBEDDED_SERVER=1 \ 
  186. $EXE_LINKER 
  187.                 else 
  188.                         cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \ 
  189. -DMYSQL_DATADIR=$db_data_dir \ 
  190. -DSYSCONFDIR=/etc \ 
  191. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  192. -DWITH_PARTITION_STORAGE_ENGINE=1 \ 
  193. -DWITH_FEDERATED_STORAGE_ENGINE=1 \ 
  194. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
  195. -DWITH_MYISAM_STORAGE_ENGINE=1 \ 
  196. -DENABLED_LOCAL_INFILE=1 \ 
  197. -DENABLE_DTRACE=0 \ 
  198. -DDEFAULT_CHARSET=utf8mb4 \ 
  199. -DDEFAULT_COLLATION=utf8mb4_general_ci \ 
  200. -DWITH_EMBEDDED_SERVER=1 \ 
  201. $EXE_LINKER 
  202.                 fi 
  203.         make -j `grep processor /proc/cpuinfo | wc -l` 
  204.         service mysqld stop 
  205.                 mv ${db_install_dir}{,_old_`date +"%Y%m%d"`} 
  206.                 mv ${db_data_dir}{,_old_`date +"%Y%m%d"`} 
  207.                 [ ! -d "$db_install_dir" ] && mkdir -p $db_install_dir 
  208.                 mkdir -p $db_data_dir;chown mysql.mysql -R $db_data_dir 
  209.                 make install 
  210.         $db_install_dir/scripts/mysql_install_db --user=mysql --basedir=$db_install_dir --datadir=$db_data_dir 
  211.                 chown mysql.mysql -R $db_data_dir 
  212.                 service mysqld start 
  213.                 $db_install_dir/bin/mysql < DB_all_backup_$(date +"%Y%m%d").sql 
  214.                 service mysqld restart 
  215.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;" >/dev/null 2>&1 
  216.         $db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "reset master;" >/dev/null 2>&1 
  217.                 [ $? -eq 0 ] &&  echo -e "You have \033[32m$DB successfully\033[0m upgrade from \033[32m$Old_DB_version\033[0m to \033[32m$DB_version\033[0m" 
  218.     fi  
  219. fi 
Thu Jul 16 12:34:49 CST 2015

关于版权

《Linux运维笔记》的博文均基于创作共享的知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议发布。转载本站博文时请务必以超链接形式标明源文出处,否则谢绝一切转载!

转载请保留固定链接: https://blog.linuxeye.com/424.html

延伸 · 阅读

精彩推荐
  • MongoDBmongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参...

    ZJW02155642020-05-22
  • MongoDBMongoDB的索引

    MongoDB的索引

    数据库中的索引就是用来提高查询操作的性能,但是会影响插入、更新和删除的效率,因为数据库不仅要执行这些操作,还要负责索引的更新 ...

    MongoDB教程网2532020-05-12
  • MongoDBMongodb索引的优化

    Mongodb索引的优化

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。接下来通过本文给大家介绍Mongodb索引的优化,本文介绍的非常详细,具有参考借鉴价值,感...

    MRR3252020-05-05
  • MongoDBMongoDB系列教程(五):mongo语法和mysql语法对比学习

    MongoDB系列教程(五):mongo语法和mysql语法对比学习

    这篇文章主要介绍了MongoDB系列教程(五):mongo语法和mysql语法对比学习,本文对熟悉Mysql数据库的同学来说帮助很大,用对比的方式可以快速学习到MongoDB的命...

    MongoDB教程网3252020-05-01
  • MongoDBWindows下MongoDB配置用户权限实例

    Windows下MongoDB配置用户权限实例

    这篇文章主要介绍了Windows下MongoDB配置用户权限实例,本文实现需要输入用户名、密码才可以访问MongoDB数据库,需要的朋友可以参考下 ...

    MongoDB教程网3082020-04-29
  • MongoDBMongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    这篇文章主要给大家介绍了关于MongoDB查询之高级操作(多条件查询、正则匹配查询等)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者...

    w田翔3872020-12-19
  • MongoDB在mac系统下安装与配置mongoDB数据库

    在mac系统下安装与配置mongoDB数据库

    这篇文章主要介绍了在mac系统下安装与配置mongoDB数据库的操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    CXYhh1219312021-11-14
  • MongoDBMongoDB多条件模糊查询示例代码

    MongoDB多条件模糊查询示例代码

    这篇文章主要给大家介绍了关于MongoDB多条件模糊查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值...

    浅夏晴空5902020-05-25