MySQL各版本升级最佳实践

MySQL各版本升级最佳实践


一、升级前注意事项
在开始之前,你要意识到这是一个很慎重的操作,将一步跨过一个重要的MySQL版本。也就是说,这是有风险的。用二进制文件升级是不建议的,而且这样直接跨越一个重要版本也是不安全的,所以你绝不能这样5.0->5.5,5.1->5.6,或者5.0->5.6做。有一个问题是,MySQL版本不是所有改变都前向兼容的。新版本中介绍的一些改变可能不仅会影响数据如何处理,还会影响服务器行为包括SQL语句和MySQL服务器和内部存储引擎(此处不知标准否)。另一个问题是MySQL5.0与5.6版本之间的变化,一些默认的设置变量被改变了,这可能会导致结果完全不一样或者行为完全不同。例如:MySQL5.5的默认存储引擎是InnoDB,MySQL5.6的存储引擎InnoDB将可以为每个数据库表创建单独表空间(separate tablespace),还有GTID复制(GTID replication)也被引入。有太多细节这里就不一一列举了,所有这些改变都被描述在MySQL的“升级文档”中,详情可以查看升级文档
二、两种升级方式
  • 通常情况下,有两中升级方式:
    • 直接升级:安装好新版本数据库后,利用已经存在的数据文件夹,同时运行mysql_upgrade脚本来升级。
    • SQL 导出: 从一个较老版本的mysql把数据导出,然后恢复到新版本的数据库中。(利用mysqldump工具)。
      相比之下,第二种方式更安全些,但是这也会使得升级的过程要慢一些。
      理论上讲,最安全的方式是:
      • 导出所有用户的权限
      • 导出所有数据并恢复到新版本数据库中
      • 恢复用户权限到新数据库中
三、具体步骤
  • 获取用户和权限信息. 该操作会备份所有用户的权限.
$ wget percona.com/get/pt-show-grants;
$ perl pt-show-grants --user=root --ask-pass --flush > /root/grants.sql
  • dump 数据库实例的所有信息(除去mysql, information_schema 和performance_schema数据库).
 $ mysql -BNe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'performance_schema', 'information_schema')" | tr 'n' ' ' > /root/dbs-to-dump.sql
$ mysqldump --routines --events --single-transaction --databases $(cat /root/dbs-to-dump.sql) > /root/full-data-dump.sql
  • 停止数据库
$ service mysql stop
or
$ /etc/init.d/mysql stop
  • 移动旧数据库(5.5版本)的数据目录(假设是/var/lib/mysql,此处应该改为你自己的数据目录)
$ mv /var/lib/mysql/ /var/lib/mysql-55
  • 安装5.6版本(按照正常安装流程). 如果你不是用的yum/apt-get方式安装的,你需要执行 mysql_install_db 和mysql_upgrade两个命令.
  • 将在1)操作中导出的用户信息导入到新数据库中.
mysql -uroot < /root/grants.sql
  • 将2)导出的数据导入到新数据库.
$ mysql -e "SET GLOBAL max_allowed_packet=1024*1024*1024";
$ mysql -uroot -p --max-allowed-packet=1G < /root/full-data-dump.sql;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值