参考文档:https://mp.weixin.qq.com/s/na7uM5sCyydq9AbOUqV1pAmysql
本文主要介绍数据库的备份与在突发状况下的数据恢复。话很少说,若是要看详细的数据库备份与恢复的场景和恢复思路啥的,请查看参考文档。在这里有必要介绍一下全量备份和增量备份。sql
全量备份:截止某一时间点,对以前全部的数据进行备份,这时候要求数据库再也不更新数据库
增量备份:项目进行了一段时间,天天都有大量的数据。此时若是每次备份都选择全量备份则耗时耗力,对以前已经备份过的数据来讲浪费极大,所以,咱们能够选择相对于以前没备份过的数据进行备份,此时数据量相对较小,不容易出错。spa
简单点来讲,本次实验就是先进行全量备份,再设置增量备份。在数据丢失后,先恢复全量备份的数据,再恢复全量备份以后到数据丢失以前的数据。3d
在/etc/my.cnf文件里的[mysqld]区块添加以下内容rest
log-bin=mysql-bin
#而后重启mysql服务
systemctl restart mysqld.service
首先查看一下salary表,咱们经过这张表来展现对数据的备份与恢复的现象日志
建立一个目录用来存放备份的数据库code
mkdir /home/mysql_backup
对tc数据库进行全量备份,这里你能够对你本身存在的数据库进行操做blog
注意:date与+之间有一个空格ip
mysqldump -uroot -p -B -F -R -x --master-data=2 tc|gzip > /home/mysql_backup/tc_$(date +%F).sql.gz
参数说明: -B:指定数据库 -F:刷新日志 -R:备份存储过程等 -x:锁表,再也不更新数据库
–master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信
备份好以后对salary数据表再次插入数据
此时tc数据库文件已经丢失,须要对文件进行恢复
先恢复全量备份的数据,在经过binlog恢复从全量备份到数据丢失以前的操做
查看全量备份以后新增的binlog文件
这是全备时刻的binlog文件位置,即mysql-bin.000003的155行,所以在该文件以前的binlog文件中的数据都已经包含在这个全备的sql文件中了
查看mysql的数据存放目录,能够看到放在了/var/lib/mysql/目录中
show global variables like "%datadir%";
移动binlog文件
导出为sql文件
mysqlbinlog -d tc mysql-bin.000003 >003bin.sql
剔除其中的drop语句,要把drop下面的语句所有删掉,不然会报错
先恢复全量备份的数据
此时能够看到,已经恢复到全量备份时的数据了
接下来经过003bin.sql文件恢复全量备份到数据丢失以前的数据