色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql增量時時備份

林國瑞2年前9瀏覽0評論

InnoDB是MySQL數據庫中一種非常流行的存儲引擎,對于大規模高并發的應用場景,使用InnoDB是非常合適的。InnoDB有一種自動增量備份功能,可以實現在數據庫運行期間的24小時持續的增量備份。下面,我們將詳細介紹如何使用MySQL的增量時時備份功能。

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

log-bin=mysql-bin
binlog-format=mixed
server-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/bash
DATE=`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/$DATE
mysqldump -u$MYSQL_USER -p$MYSQL_PWD $MYSQL_DB >$BACKUP_DIR/$DATE/$MYSQL_DB.sql
mysqlbinlog --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的增量時時備份。在實際生產環境中,我們可以將備份腳本放在定時任務中執行,實現自動備份。