本文共 3462 字,大约阅读时间需要 11 分钟。
MySQL版本升级
MySQL版本升级这项工作对DBA来说是十分必要的,因为每个MySQL 版本都有自己支持的生命周期,在超过生命周期之后,官方就不再提供服务支持。而且新版本的性能与特性比老版本的 MySQL提升得太多了。针对新版本增加的特性,更是便于DBA 去管理优化 MySQL数据库的工作。
但是在没有充分的测试之前,就应用到线上生产环境中也是非常危险的,因为升级可能会让应用不能正常运作,也可能引起性能问题。所以我们要经常去关注MySQL官方发布的信息,不要冒险去做第一个吃“螃蟹”的人,多收集资料,多测试,最后升级到一个稳定的发布版本。
MySQL升级方式有两种,一种叫In-Place Upgrade,另一种叫Logical Upgrade(逻辑升级方式)
Logical Upgrade:利用mysqldump来直接导出SQL文件,然后导入到新库中,适应于跨大版本的升级方案,做法相对安全,并能整理表中碎片。但如果有数据量较大的库需要mysqldump导出,时间上的消耗就会很大,升级效率就会受到影响。
In-Place Upgrade:它的工作方法简单快速,就是直接替换掉原来版本MySQL的安装目录和 my.cnf配置文件,利用mysql_upgrade 脚本来完成系统表的升级。跨小版本升级可以使用in-place这种方式。
mysql-5.7.20升级到mysql-5.7.32
首先停止服务
[root@mysqldb ~]# service mysql stop
Shutting down MySQL.. [确定]
[root@mysqldb app]# ll -h
总用量 1.3G
lrwxrwxrwx 1 mysql mysql 35 7月 18 09:09 mysql -> mysql-5.7.20-linux-glibc2.12-x86_64
drwxr-xr-x 9 mysql mysql 4.0K 7月 18 09:08 mysql-5.7.20-linux-glibc2.12-x86_64
-rw-r--r-- 1 mysql mysql 612M 7月 18 09:08 mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 631M 11月 28 20:20 mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
[root@mysqldb app]# rm mysql
rm:是否删除符号链接 "mysql"?y
chown -R mysql:mysql *
[root@mysqldb app]# ll -h
总用量 1.3G
lrwxrwxrwx 1 mysql mysql 36 11月 28 20:40 mysql -> mysql-5.7.32-linux-glibc2.12-x86_64/
drwxr-xr-x 9 mysql mysql 4.0K 7月 18 09:08 mysql-5.7.20-linux-glibc2.12-x86_64
-rw-r--r-- 1 mysql mysql 612M 7月 18 09:08 mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
drwxr-xr-x 9 mysql mysql 4.0K 11月 28 20:38 mysql-5.7.32-linux-glibc2.12-x86_64
-rw-r--r-- 1 mysql mysql 631M 11月 28 20:37 mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
由于是小版本升级不用修改配置文件从5.7.20到5.7.32
启动mysql服务
mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --skip-grant-tables --skip-networking --user=mysql &
--skip-grant-tables 此选项会让MySQL服务器跳过验证步骤,允许所有用户以匿名的方式,无需做密码验证直接登陆MySQL服务器,并且拥有所有的操作权限。
--skip-networking 此选项会关门MySQL服务器的远程连接。这是因为以--skip-grant-tables方式启动MySQL服务器会有很大的安全隐患,为了降低风险,需要禁止远程客户端的连接。
在启动过程中要注意的是需要加上--skip-grant-tables和--skip-networking参数,来保证没有任何的应用连接,让升级过程更加安全。
mysql_upgrade
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info 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
Found outdated sys schema version 1.5.1.
Upgrading the sys schema.
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
mysqladmin -u root -p shutdown
Enter password:
正常启动MySQL数据库,不要使用--skip-grant-tables和--skip-networking参数。
service mysql start
Starting MySQL.. [确定]
show variables like 'version';
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| version | 5.7.32-log |
升级成功
转载地址:http://kabai.baihongyu.com/