学习mysql常用的三种备份方法

发布时间:2019-09-21编辑:脚本学堂
本文介绍下,mysql中备份的常用方法,共介绍三种,分别为使用mysqldump工具备份、基于LVM快照备份、使用percona提供的xtrabackup进行备份。有需要的朋友,参考下吧。

综述:
mysql按照备份恢复方式分为逻辑备份和物理备份。
逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现。
物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单。
这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小。

为大家介绍三种常用的mysql备份方法,供大家学习参考。

一、mysqldump工具备份
mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具。支持基于innodb的热备份。但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景。
mysqldump完全备份+二进制日志 —>实现时间点恢复。

温备:
在使用myisam引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁

这时候可以进入数据库手动加读锁。这样比较麻烦,在mysqldump工具中直接有一个加锁的选项:
 

mysqldump --databases mydatabase --lock-all-tables --flush-logs> /tmp/backup-`date +%F-%H-%M`.sql

如果是针对某张表备份,只要在数据库名称后面加上表名称就行了

这里注意,要实现时间点的恢复,加上--flush-logs选项,在使用备份文件恢复后,然后再基于二进制日志进行时间点的恢复

时间点的恢复方法
 

mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql

然后用mysql命令导入这个sql脚本就行了。

热备:
如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:--single-transaction
 

mysqldump --databases mydb --single-transaction  --flush-logs --master-data=2 > /tmp/backup-`date +%F-%H-%M`.sql

注意点:
恢复的时刻关闭二进制日志
mysql>set sql_log_bin=0;
因为这是基于逻辑备份方式,在恢复日志时会执行sql语句插入数据,而恢复时候插入数据的日志没有意义。