mysql物理完全备份和逻辑完全备份

mysql物理完全备份:
数据库物理备份: tar


|准备环境(模拟企业中存放数据库磁盘损坏):(工作中千万不能做) ------删库跑路 |
|systemctl stop mysqld |
|rm -rf /var/lib/mysql/* 如果误删mysql目录就新建目录并授予权限chown -R mysql.mysql |


模拟环境下,企业中服务器千万不能做

备份过程
1,停止数据库服务 systemctl stop mysqld ///企业中千万不能做
2,创建备份目录 mkdir /backup
3,tar 压缩数据库内容到备份目录下 tar -cf /backup/date +%F-mysql-all.tar /var/lib/mysql
3,重启数据库 systemctl start mysqld
恢复过程
1,停止数据库服务 systemctl stop mysqld
2,导入备份数据 tar -xf /backup/2016-12-07-mysql-all.tar -C / 注意权限chown -R mysql.mysql
3,重启数据库 systemctl start mysqld

备份脚本:

!/bin/bash

systemctl stop mysqld

mkdir /backup

tar -cf /backup/date +%F-mysql-all.tar /var/lib/mysql
systemctl restart mysqld

逻辑完全备份:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
备份:
[root@localhost ~]# mysqldump -p'QianFeng@123'
--all-databases --single-transaction \
//// 锁表保持数据一致性和可用性
--master-data=2 \
注释掉日志记录 1和2的区别就是注释 1:不注释 2:注释
--flush-logs > /backup/date +%F-%H-mysql-all.sql
刷新/截断日志 备份目录
cp /var/lib/mysql/bin ~
拷贝数据库二进制文件 以便于恢复备份点到灾难点之间没有备份的数据

恢复:
1,mysql -p'QianFeng@1234' < /backup/2016-12-08-04-mysql-all.sql
2,mysql -p'QianFeng@1234' -e 'flush privileges'
重启服务;
此时恢复的是已经备份的数据
数据库最后一次备份和灾难点之间的数据还没有恢复
二进制日志恢复操作 (备份点到灾难点之间没有备份的数据)
恢复
3,mysqlbinlog localhost-bin.000002 localhost-bin.000003 --start-position=154 | mysql -p'QianFeng@123'
查看二进制文件 斩断后的日志 交给

注:恢复之前先关闭二进制文件
mysql> set sql_log_bin =0
mysql> source /backup/*.sql

猜你喜欢

转载自blog.csdn.net/weixin_34055910/article/details/87578427