Skip to content

MySQL 5.7.4 数据库迁移

29

方案 A:mysqldump 逻辑备份还原

重点:保持前后数据库密码一样,保持数据库服务开启

1. 原服务器完整备份 默认在 /root 目录生成 a.sql 完整备份文件

# 带密码命令
mysqldump -ugame -p'uu5!^%jg' --all-databases --triggers --routines --events > a.sql

以下命令可选,相关说明在最下面

# 常规命令
mysqldump -ugame -p --all-databases --triggers --routines --events > a.sql

# 找不到命令使用lampp完整路径
/opt/lampp/bin/mysqldump -ugame -p --all-databases --triggers --routines --events > a.sql

2. 备份文件迁移

将生成的 a.sql 下载至本地,再上传至新服务器/root目录

3. 新服务器数据还原

# 带密码命令
mysql -ugame -p'uu5!^%jg' < a.sql

以下命令可选

# 常规命令
mysql -ugame -p < a.sql

# 找不到命令使用lampp完整路径
/opt/lampp/bin/mysql -ugame -p < a.sql

方案 B:停止数据库服务,物理目录还原 /var/lib/mysql

⚠️ 专属约束:仅支持 MySQL5.7.4 → MySQL5.7.4 同版本迁移,禁止跨版本使用

⚠️ 服务名固定:MySQL5.7.4 服务名为 mysqld.service,非 mysql、非 mariadb

⚠️ 核心规则:物理目录还原会完整迁移源库所有数据、账号、密码、权限,直接覆盖目标库配置

⚠️:注意未测试,是否可用

1. 兼容关闭 mariadb 服务(规避端口冲突)

systemctl stop mariadb

2. 核查本机数据库服务名称

systemctl list-unit-files | grep -E 'mysql|mariadb'

3. 查杀残留 mysqld 进程(防止锁文件)

ps -ef | grep mysqld

4. 停止 MySQL5.7.4 数据库服务

systemctl stop mysqld
# 校验服务状态,确保完全关闭
systemctl status mysqld

输出 inactive (dead) 即为完全关闭,可操作 /var/lib/mysql 目录替换文件

5. 物理文件还原必做操作(高频踩坑点)

替换完 /var/lib/mysql 目录后,必须修复文件权限,否则数据库启动失败

chown -R mysql:mysql /var/lib/mysql
chmod 700 /var/lib/mysql

6. 启动数据库服务

systemctl start mysqld

7. 按需修改数据库密码

物理还原后密码同步源库 uu5!^%jg,如需重置可登录数据库执行语句

# 登录数据库
mysql -ugame -p

输入当前密码后,执行密码修改语句(5.7.4 双语法兼容,任选其一)

# 写法1(原生兼容)
SET PASSWORD FOR 'game'@'%' = PASSWORD('uu5!^%jg');
FLUSH PRIVILEGES;

# 写法2(标准推荐)
ALTER USER 'game'@'%' IDENTIFIED BY 'uu5!^%jg';
FLUSH PRIVILEGES;

相关说明

备份相关命令说明:

--all-databases :导出 mysql 系统库

--triggers:导出触发器

--routines:导出存储过程、自定义函数

--events:导出数据库定时事件

XAMPP 集成环境务必使用 /opt/lampp/bin/ 前缀调用 mysql 相关命令。

查看所有数据库目录

mysql -ugame -p'uu5!^%jg'
SHOW DATABASES;

数据库 root账户是否存在查询

mysql -ugame -p

SELECT user,host FROM mysql.user WHERE user='root';

输出empty,标识无root

数据库查询所有账户,按字母排序

SELECT user,host FROM mysql.user ORDER BY user,host;