Skip to content

Instantly share code, notes, and snippets.

@twelvejie
Last active May 10, 2024 05:25
Show Gist options
  • Save twelvejie/fa12268dc329d591cc766b4575a4eb2e to your computer and use it in GitHub Desktop.
Save twelvejie/fa12268dc329d591cc766b4575a4eb2e to your computer and use it in GitHub Desktop.

MySQL 5.6 升级 5.7

!!! 注意 (通用)

  1. 注意大小写配置,必须统一。(lower_case_table_names = 1,0为区分,1为不区分)
  2. 其他配置用新版本,根据机器配置调整。
  3. 关闭数据库前,必须执行(set global innodb_fast_shutdown=0)

升级

  1. 执行以下语句,第一行必须执行。(设置为0时,InnoDB关闭的最慢,需要清除所有的undo log(除了XA prepare 的事务),完成change buffer的合并,将脏页刷盘,关闭redo log。)
# mysql --user root --password --execute="set global innodb_fast_shutdown=0"
# service mysqld stop
  1. 物理备份5.6数据库(过大就不备份)
  2. 安装mysql 5.7 直接指定5.6的data目录,或者docker用5.7的容器直接挂在5.6的data目录
  3. 启动mysql 5.7
  4. 升级, 运行以下命令
mysql_upgrade --password

myslq 5.7 升级 myslq 8.0

  1. 执行一下语句,第一行必须执行。(设置为0时,InnoDB关闭的最慢,需要清除所有的undo log(除了XA prepare 的事务),完成change buffer的合并,将脏页刷盘,关闭redo log。)
# mysql --user root --password --execute="set global innodb_fast_shutdown=0"
# service mysqld stop
  1. 一样,最好物理备份数据目录
  2. 安装mysql 8.0 直接指定5.7的data目录,或者docker用8.0的容器直接挂在5.7的data目录
  3. MySQL 8.0以后会自动升级,等待数据库启动就行。启动时间根据数据量的大小和硬盘读取速度
  4. 升级完成
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment