Mysql数据库备份恢复
1、务必确保数据库版本为5.7或者8.0(这两个版本数据可跨版本恢复)
2、确保源数据库和目标数据库必要参数已被修改,可参考必要参数修改说明
一、mysql数据库命令备份恢复
1、mysql数据库备份:
mysqldump -h127.0.0.1 -uecology -p -R ecology > /data/ecology_test_1103.sql
2、将备份的数据库文件传输至目标端(跨服务器可参考 Oracle备份还原)
3、mysql数据库恢复:
mysql -h127.0.0.1 -uecology --default-character-set=utf8 -p ecology < /data/ecology_test_1103.sql
参数说明:
参数说明:
-h 数据库地址
-u 用户名(备份和恢复的环境用户名要保持一致)
-p 密码
-R 备份存储过程和函数
--default-character-set=utf8 设置备份存储编码
ecology 备份恢复的数据库名
4、备份恢复过程中注意点:
1、注意:如果备份准备用来做主从恢复,需加上 --master-data参数,形如:
mysqldump -uroot -p -R --triggers --master-data --default-character-set=utf8 ecology > ecology_test_20231103.sql
2、有时因为字符集问题(常见的是windows环境导出的sql文件中包含有'/'字符,导入到linux环境该字符被标识为目录标识),恢复是需要指明字符集,命令如下
mysql -uroot -p --default-character-set=utf8 ecology < ecology_test_20231103.sql
3、如果数据准备恢复至其他用户(原用户与目标用户名不一致),需在目标库建一个相同权限的同名用户即可,或者在备份完成后对备份文件进行处理,在linux下执行如下命令
[root@localhost ~]# sed -i "s/DEFINER=\`[^\`]\+\`@\`[^\`]\+\`//g" ecology_test_20231103.sql
[root@localhost ~]# sed -i "s/DEFINER = '[^']\+'@'[^']\+'//g" ecology_test_20231103.sql
4、如果数据准备恢复至其他用户(原用户与目标用户名不一致)执行3以后依旧报错,修改恢复语句,并加上 -f 参数,会有18行和24行报错,可以忽略直至恢复完成(阿里云RDS中会遇到)
mysql -h127.0.0.1 -uecology --default-character-set=utf8 -f -p ecology < /data/ecology_test_1103.sql
评论区