mysql增量时时备份

InnoDB是MySQL数据库中一种非常流行的存储引擎,对于大规模高并发的应用场景,使用InnoDB是非常合适的。InnoDB有一种自动增量备份功能,可以实现在数据库运行期间的24小时持续的增量备份。下面,我们将详细介绍如何使用MySQL的增量时时备份功能。

首先,我们需要开启MySQL的自动二进制日志功能(binary logging)。我们打开MySQL的配置文件(my.cnf或my.ini),并在[mysqld]下面加入以下配置:

log-bin=mysql-binbinlog-format=mixedserver-id=1

其中,log-bin=mysql-bin配置了二进制日志文件的前缀,MySQL会自动创建以这个前缀为前缀的二进制日志文件;binlog-format=mixed配置了日志格式为“mixed”(混合格式),可以同时保存语句和行级别的改变信息;server-id=1配置了MySQL的服务器ID。

接下来,我们进入MySQL命令行界面,输入以下命令:

mysql>
    flush logs;
        # 刷新日志,新建一个二进制日志文件mysql>
    show master status;
        # 查看当前二进制日志文件的名字和位置

通过show master status命令,我们可以查看到当前的二进制日志文件的名字和位置,例如,我们可以看到以下信息:

+------------------+-----------+--------------+------------------+| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+-----------+--------------+------------------+| mysql-bin.000003 | 506055532 |              |                  |+------------------+-----------+--------------+------------------+

其中,File列显示了当前的二进制日志文件名字,Position列显示了当前二进制日志文件的位置。

现在,我们可以通过类似以下的备份脚本实现增量备份:

#!/bin/bashDATE=`date +%Y%m%d%H%M`BACKUP_DIR="/data/backup/mysql"MYSQL_USER="root"MYSQL_PWD="123456"MYSQL_DB="mydb"BINLOG_FILE=`mysql -u$MYSQL_USER -p$MYSQL_PWD -e "show master status;
    " | awk 'NR>
1{
print $1}
    '`BINLOG_POS=`mysql -u$MYSQL_USER -p$MYSQL_PWD -e "show master status;
    " | awk 'NR>
1{
print $2}
    '`mkdir -p $BACKUP_DIR/$DATEmysqldump -u$MYSQL_USER -p$MYSQL_PWD $MYSQL_DB >
    $BACKUP_DIR/$DATE/$MYSQL_DB.sqlmysqlbinlog --start-position=$BINLOG_POS --stop-position=`expr $BINLOG_POS + 1000000` mysql-bin.000003 >
    >
    $BACKUP_DIR/$DATE/$MYSQL_DB.sql

备份脚本的第1行获取当前日期,创建备份目录时使用;第2行指定备份目录;第3行指定MySQL的用户名;第4行指定MySQL的密码;第5行指定MySQL要备份的数据库名;第6行获取当前二进制日志文件名字;第7行获取当前二进制日志文件的位置,即备份时的起点;第9行使用mysqldump备份MySQL数据库;第10行使用mysqlbinlog备份二进制日志文件。

至此,我们已经成功实现了MySQL的增量时时备份。在实际生产环境中,我们可以将备份脚本放在定时任务中执行,实现自动备份。