1. 检查是log_bin是否开启
增量备份需要开启log_bin
若状态为on
则是已经开启log_bin
若没开启log_bin,则修改mysql配置文件my.cnf,添加以下配置,重启mysql使配置生效
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
例:
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
user=mysql
port=3306
character-set-server=utf8
查看当前正在记录操作的日志log_bin文件名称
2. 全量备份
mysqldump参数说明
--quick : 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
--all-databases : 导出所有数据库
--flush-logs : 生成新的二进制日志文件
--single-transaction : 此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性。 为了确保使用--single-transaction命令时,保证dump文件的有效性。需没有下列语句ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,因为一致性读不能隔离上述语句。所以如果在dump过程中,使用上述语句,可能会导致dump出来的文件数据不一致或者不可用。
3. 备份恢复
简单的定时增量全量备份案例:
增量备份脚本
/usr/local/mysql/bin/mysqladmin -uroot -pxxxxx flush-logs;
全量备份脚本
backupDatabase=mysql
fileName=${backupDatabase}`date +"%Y-%m-%d_%H:%M:%S"`
baseDir=/usr/local/mysql/backup/
/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --databases pay cemao_carpool --flush-logs --delete-master-logs --single-transaction -R > ${baseDir}${fileName}.sql
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql
rm -f ${baseDir}${fileName}.sql;