Mysql实现完全备份 + 增量备份 + 恢复

1、MySql数据库完全备份

  • 完全备份保存的是备份完成时刻的数据库;
  • 完全备份是增强备份的基础
  • 完全备份有两种实现方式

1.1 使用tar打包文件夹备份

[root@localhost opt]# yum install -y xz #下载压缩工具

[root@localhost opt]# tar jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/         #压缩备份

[root@localhost opt]# ls
mysql-2018-08-30.tar.xz  rh
 解压恢复
tar Jxvf /opt/mysql-2018-08-30.tar.xz -C /usr/local/mysql/data

systemctl restart mysql

1.2 使用mysqldump工具进行完全备份

查看所有库

img

准备用test库做模拟,转到test库,查看所有表,建了一个学生表stu,员工表emp

img

1.2.1 完全备份指定库中的部分表

(如stu表)test库中的表备份到opt目录下

mysqldump -u root -p123 test stu > /opt/test_stu.sql

img

查看备份文件

grep -v "^--" /opt/test_stu.sql | grep -v "^/" | grep -v "^$"

img

恢复数据表

(1)先删除stu表

mysql -uroot -p123 -e 'drop table test.stu;'

然后查看test库所有表

mysql -uroot -p123 -e 'show tables from test;'

img

(2)使用备份文件恢复stu表

mysql -uroot -p123 test < /opt/test_stu.sql

然后查看test库中所有表,可以看道stu表已经被恢复了

img

查看表中数据,可以看到和之前一样没有消失

img

1.2.2 完全备份一个或多个完整的库(包括其中所有的表)

这里备份test库,把test库备份到opt目录下

mysqldump -uroot -p123 --databases test > /opt/test.sql

img

恢复数据库

(1)先删除test库

mysql -u root -p -e 'drop database test;',

然后查看所有数据库可以看到已经没有test库啦

mysql -u root -p -e 'show databases;'

img

(2) 先用备份文件恢复test库

 mysql -u root -p < /opt/test.sql,

然后查看所有库,发现test 库已)经恢复了

mysql -u root -p -e 'show databases;'

img

1.2.3 完全备份MySQL服务器中所有的库

(1)把所有库备份到opt目录下

mysqldump -u root -p123 --all-databases > /opt/all_database.sql

img

后面的操作和上面一样,先删除所有库,再用备份文件恢复,这里就不演示了

2、MySql数据库增量备份

增量备份就是备份自上一次备份之后记录对数据库操作的文件或者内容,必须先有完全备份才能进行增量备份。
(1)增量备份的特点:

没有重复数据,备份量不大,时间短;
恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复。
增量备份依赖二进制日志文件,首先需要开启二进制日志文件:

修改 my.cnf文件,添加:log-bin=mysql-bin

查看日志

ls -l /var/lib/mysql/mysql-bin.*

img

刷新日志:

mysqladmin -u root -p123 flush-logs

可以看到新生成一个二进制备份文件

img

往stu表插入新数据,以模拟数据的增加或变更

img

刷新日志:

mysqladmin -u root -p123 flush-logs

可以看到新生成一个二进制备份文件

img

模拟丢失更改的数据的恢复步骤

img

用备份文件mysql-bin.000031恢复数据

mysqlbinlog --no-defaults /var/lib/mysql/mysql-bin.000031 | mysql -u root -p

然后查看etu表可以看到stu表中的数据已经恢复了

mysql -u root -p123 -e "select * from test.stu;"

img

这是一次数据库作业整理而成,希望能帮助到需要的人。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值