使用mysqldump导入导出功能备份恢复

MySQL 5.7迁移到另一台MySQL 8,然后使用mysqldump导入导出功能来实现升级。
MySQL 5.7 迁移 8.0 (mysqldump导入导出)
我们除了直接升级外,还可以新建实例并将数据导入到新实例里。由于应用、模式、配置兼容性,可能需要一一排错。
下载地址是通过官网找的8.4然后推理得到8.0的地址。
1 | wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm |
不知为了,gpgcheck检查不通过,估计可能和系统本身自带mysql-server有关。我们当然可以使用自带的,然后通过versionlock的形式锁定特定版本。自带的版本不完整,这里使用MySQL社区源。
同理,安装特定版本需要将部分组件都写上,不然他直接安装最新版。
1 | yum install mysql-community-server-8.0.34-1.el8 mysql-community-client-8.0.34-1.el8 mysql-community-client-plugins-8.0.34-1.el8 mysql-community-libs-8.0.34-1.el8 |
安装完后禁用源:
1 | # 查询源列表 |
如果数据文件夹另外放置到数据盘请根据5.7版本操作。
在获得临时密码后,我们通常修改密码,但是MySQL 8默认密码规则其实很复杂的,且你不能在修改密码前就修改密码规则。
故而:
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'N[IA&@v!g}X^[]Yv[E9gcCXtO'; |
然后新增用户及权限
1 | CREATE USER 'dbuser1'@'%' IDENTIFIED BY 'dFKhugE3pjnoRDsR'; |
一般的,我们不会允许用户拥有和root同等权限,且我们会新建角色(role),然后分配角色到用户会更符合规范。
我们通过MySQLDump 官方文档 mysqldump –databases db1 db2… > dump.sql或者mysqldump –all-databases来备份。
1 | mysqldump --all-databases |
然后通过mysql < dump.sql 导入
1 | mysql -uroot -pdFKhugE3pjnoRDsR < dump_all.sql |
如果需要不直接输入密码则需要进入mysql后
1 | source dump_all.sql |
导入可能遇到ERROR 1118 (42000): Row size too large (> 8126)错误,直接禁用Strict Mode等导入完成后再启用即可。
1 | SET GLOBAL innodb_strict_mode=OFF; |
- 标题: 使用mysqldump导入导出功能备份恢复
- 作者: 暗香疏影
- 创建于 : 2024-12-31 00:00:00
- 更新于 : 2024-12-31 00:00:00
- 链接: https://blog.23ikr.com/2024/12/31/2024-12-31-MySQL57-upgrade-to-8-backup-restore/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论