干货,MySQL备份恢复指南
❝本文介绍了三种备份恢复方法,根据实际情况选用最简单的一种即可
❞
一.备份恢复前准备
1.务必确保数据库版本为5.7或者8.0(这两个版本数据可跨版本恢复)
2.源数据库和目标数据库必要参数已被修改
3.果数据准备恢复至其他用户(原用户与目标用户名不一致),需在目标库建一个相同权限的同名用户即可,或者在备份完成后对备份文件进行处理,在linux下执行如下命令
sed -i "s/DEFINER=\`[^\`]\+\`@\`[^\`]\+\`//g" ecology_bak_20190428.sql
sed -i "s/DEFINER = '[^']\+'@'[^']\+'//g" ecology_bak_20190428.sql
二.使用工具备份迁移
推荐使用「sqlyog」进行备份,不要使用「navicate」,因为navicate在备份数据库时函数和存储过程被视为同一类数据库对象处理,在导入时常常因为导入的先后问题导致导入失败
1.sqlyog工具
下载链接: https://pan.baidu.com/s/1e72G3ptuR2d1lgcvWBNQ0A 提取码: 860w
注:安装程序之后关闭程序,点击安装文件同目录下的注册表进行注册即可使用
2.导出过程
右键要导出的数据库,备份/导出-备份数据库,导出过程注意将 "包含使用数据库声明"和"包括 CREATE database语句"选项去掉!
3.导入
导入前创建新的数据库
create database weaver_test;
右键新建的数据库名-导入-执行SQL脚本,选择要导入的文件执行即可
三.命令备份恢复
1.备份,将备份传输至目标端
mysqldump -uroot -p -R --triggers --default-character-set=utf8 ecology > ecology_test_20181105.sql
2.恢复
mysql -uroot -p ecology < ecology_test_20181105.sql
参数说明:
参数 | 说明 |
---|---|
-u | 用户名 |
-p | 密码 |
-R | 备份存储过程和函数 |
--triggers | 备份触发器 |
--default-character-set=utf8 | 设置备份存储编码 |
ecology | 备份恢复的数据库名 |
注意:如果备份准备用来做主从恢复,需加上 --master-data参数,形如:
mysqldump -uroot -p -R --triggers --master-data --default-character-set=utf8 ecology > ecology_test_20181105.sql
备注:有时因为字符集问题(常见的是windows环境导出的sql文件中包含有'/'字符,导入到linux环境该字符被标识为目录标识),恢复是需要指明字符集,命令如下
mysql -uroot -p --default-character-set=utf8 ecology < ecology_test_20181105.sql
四.其它备份恢复方法
1.冷备份恢复
注:该方式备份恢复较快捷,方便,适合相同版本的数据迁移,备份恢复前请做好相关数据的备份工作
-
关闭mysql服务
service mysqld stop
-
复制mysql datadir下的所有文件至新的数据库datadir下
cd /var/lib/mysq/
scp -r * 10.10.10.1:/var/lib/mysql/
-
修改新的目录的权限
cd /var/lib/mysq/
chown mysql.mysql -R *
-
启动新的mysql服务
service mysqld start
2.innodbbackup备份
注:该备份的优点在于可以在线进行类似冷备份的操作,备份完成后追加备份期间的日志应用,保证备份的完整性,该方法也要求数据库的版本一致,此处仅列出的备份命令
-
备份
innobackupex --user=root --password=work123 --socket=/var/lib/mysql/mysql.sock /opt/backup
-
应用日志
innobackupex --apply-log /opt/backup/2018-09-20_14-03-17/
-
恢复
cd /var/lib/mysql
cp /opt/backup/2018-09-20_14-03-17/* /var/lib/mysql/
-
启动新的mysql服务
service mysqld start