More  

小編的世界 優質文選 資料

使用Xtrabackup實現MySQL數據庫的增量備份


2021年2月03日 - 資料小編  
   

酷扯兒

《酷扯兒》官方帳號

# mkdir /backup#innobackupex --defaults-file=/etc/my.cnf --user=root --password=MySQL@2019 --socket=/tmp/mysql.sock /backup

接下面我們再在表中插入幾條新數據

要實現第一次增量備份,可以使用下面的命令進行:# innobackupex --incremental /backup --incremental-basedir=BASEDIR其中,BASEDIR指的是完全備份所在的目錄,此命令執行結束後,innobackupex命令會在/backup目錄中創建一個新的以時間命名的目錄以存放所有的增量備份數據。--incremental-basedir應該指向上一次的增量備份所在的目錄。--incremental /backup/ 指定增量備份文件備份的目錄innobackupex --defaults-file=/etc/my.cnf --user=root --password=MySQL@2019 --socket=/tmp/mysql.sock --incremental /backup --incremental-basedir=/backup/2019-09-15_14-12-17/

下面我們刪除幾條數據,然後通過之前的增量備份進行還原

“准備”(prepare)增量備份與整理完全備份有著一些不同,尤其要注意的是:(1)需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行“重放”。“重放”之後,所有的備份數據將合並到完全備份上。(2)基於所有的備份將未提交的事務進行“回滾”。於是,操作就變成了:# innobackupex --apply-log --redo-only BASE-DIR接著執行:# innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1而後是第二個增量:# innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR-1指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,其它依次類推,即如果有多次增量備份,每一次都要執行如上操作下面模擬只有一次增量備份的增量備份還原過程先確認兩個備份目錄哪一個是全量備份,哪一個是增量備份

然後進行prepare操作innobackupex --defaults-file=/etc/my.cnf --user=root --password=MySQL@2019 --socket=/tmp/mysql.sock --apply-log --redo-only /backup/2019-09-15_14-12-17/innobackupex --defaults-file=/etc/my.cnf --user=root --password=MySQL@2019 --socket=/tmp/mysql.sock --apply-log --redo-only /backup/2019-09-15_14-12-17/ --incremental-dir=/backup/2019-09-15_14-22-35/接下來停掉數據庫服務,移除當前的數據庫數據目錄service mysqld stopmv /usr/local/mysql/data/ /backup/mysql_data_backup進行備份還原innobackupex --copy-back /backup/2019-09-15_14-12-17/

然後chown -R mysql:mysql /usr/local/mysql/data/service mysqld start登錄數據庫驗證是否恢複成功

可以看出增量備份恢複成功當然有時也可以通過mysqlbinlog來查看某個時間段的二進制日志進行恢複

mysqlbinlog --start-datetime="2019-09-15 09:12:51" --stop-datetime="2019-09-15 09:14:00" mysqlbin.000001 > /root/bak.sql--start-datetime :指定起始的時間點。--stop-datetime: 指定結束的時間點。--start-position: 指定二進制日志開始日志點。--stop-position : 指定二進制日志結束的日志點。上面四個參數可以配合使用然後把上面導出sql文件導入到MySQL服務中。mysql> set sql_log_bin=0; #導入時,若文件較大會產生很多二進制日志文件,可以先把二進制日志文件關閉,mysql> source bak.sql; #導入文件,可以使用mysql直接導入mysql> set sql_log_bin=1; #導入完成之後,開啟二進制日志文件具體的操作就不演示了。

  大家在看