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