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

2019-01-21  本文已影响0人  带着小猪闯天下

mysql物理完全备份:

数据库物理备份: tar

1,准备环境(模拟企业中存放数据库磁盘损坏):(工作中千万不能做) ------删库跑路

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       
#4,重启数据库                                    
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

备份:

mysqldump -p123 \
--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* ~     
拷贝数据库二进制文件  以便于恢复备份点到灾难点之间没有备份的数据

恢复:

mysql -p'123' < /backup/2016-12-08-04-mysql-all.sql
mysql -p'123' -e 'flush privileges'

重启服务;
此时恢复的是已经备份的数据
数据库最后一次备份和灾难点之间的数据还没有恢复
二进制日志恢复操作 (备份点到灾难点之间没有备份的数据)
恢复

mysqlbinlog localhost-bin.000002 localhost-bin.000003 --start-position=154  | mysql -p'123'

查看二进制文件 斩断后的日志 交给

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

上一篇下一篇

猜你喜欢

热点阅读