阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL升级 参考分享

202次阅读
没有评论

共计 2996 个字符,预计需要花费 8 分钟才能阅读完成。

MySQL 的升级相对来说还是比较简单的。

它支持两种方式的升级:

原地升级(In-place Upgrade)

关闭数据库,替换旧的二进制文件,重启数据库,执行 mysql_upgrade

逻辑升级(Logical Upgrade)

用 mysqldump 导出数据,安装新的数据库版本,将数据导入到新的数据库中,执行 mysql_upgrade

但是 MySQL 版本众多,不仅有各种大版本,譬如 5.1,5.5,5.6,5.7, 同一个大版本中也会有各种小版本。

那么官方支持怎么的升级路径呢?

1. 同一个大版本中的小版本升级,譬如 5.6.25 到 5.6.31。

2. 跨版本升级,但只支持跨一个版本升级,譬如 5.5 到 5.6,5.6 到 5.7。

3. 不支持跨版本的直接升级,譬如直接从 5.1 到 5.6,可以先从 5.1 升级到 5.5,再从 5.5 升级到 5.6。

以上均是指 MySQL 的 GA 版本,从非 GA 版本到 GA 版本的升级并不支持,譬如 5.6.9 到 5.6.10,因为前者并不是一个 GA 版本。

关于版本信息,可参考官方说明

http://downloads.mysql.com/archives/community/

下面演示一下原地升级

待升级版本 MySQL 5.5.30

目标版本 MySQL 5.6.32

  设置参数

mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)

innodb_fast_shutdown 参数有三个值

0:在数据库关闭的时候,会执行 purge 操作和 change buffer 合并,也称为“show shutdown”

1:默认值,在数据库关闭的时候,会跳过 purge 操作和 change buffer 合并,也称为“fast shutdown”

2:在数据库关闭的时候,只是 flush log,然后执行关闭操作。在恢复的时候可能需要较长时间的 crash recovery

彻底关闭数据库

# ./bin/mysqladmin shutdown -uroot -p123456 --socket /data/mysql.sock

更新 MySQL 二进制文件

在这里,我直接使用新的二进制压缩包

使用新的 MySQL 启动

此时 datadir 指向原来的数据目录

# ./bin/mysqld_safe  --defaults-file=/usr/test/mysql-5.6.32-linux-glibc2.5-x86_64/my.cnf --user=mysql --ledir=/usr/test/mysql-5.6.32-linux-glibc2.5-x86_64/bin  &

其中,配置文件中的内容如下

[mysqld]
basedir = /usr/test/mysql-5.6.32-linux-glibc2.5-x86_64
datadir = /data
port = 3310
socket = /data/mysql.sock

主要是指定了 datadir

执行 mysql_upgrade

# ./bin/mysql_upgrade -uroot -p123456 --socket=/data/mysql.sock
Warning: Using a password on the command line interface can be insecure.
Looking for 'mysql' as: ./bin/mysql
Looking for 'mysqlcheck' as: ./bin/mysqlcheck
Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql.sock' 
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql.sock' 
Warning: Using a password on the command line interface can be insecure.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql.sock' 
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql.sock' 
Warning: Using a password on the command line interface can be insecure.
test.test                                          OK
OK 

关于 mysql_upgrade 的作用,官方文档说明如下:

mysql_upgrade examines all tables in all databases for incompatibilities with the current version of MySQL Server. mysql_upgrade also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.

If mysql_upgrade finds that a table has a possible incompatibility, it performs a table check and, if problems are found, attempts a table repair.

主要是升级系统表和修复不兼容的表。

参考

1. http://dev.mysql.com/doc/refman/5.6/en/upgrading.html

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-08/134342.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2996字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中