mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程
增量備份依賴于全量備份,因此首先要有全量備份,在全量備份的基礎(chǔ)上,添加增量備份。
為了方便操作,我們先來做些準(zhǔn)備工作。在客戶端直接輸入mysql、mysqldump、mysqladmin、mysqlbinlog??词欠衲苤苯映鰜怼?/p>
[root@develop mysqlbackup]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection idis 15Server version:5.7.20-log MySQL Community Server (GPL)**********mysql>
[root@develop mysqlbackup]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
如果提示 :未找到命令,我們可以創(chuàng)建軟鏈接
# /usr/local/mysql/ 為mysql的安裝路徑
[root@develop ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin
[root@develop ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
好了,接下來,我們將正式進(jìn)入話題。
第一步 :修改my.cnf
(1)添加如下配置
# log_bin為增量備份位置,我這里設(shè)置為/var/mysqlbackup/,binlog是它的文件名
log_bin=/var/mysqlbackup/binlog
# server-id 必須要有,可以任意賦值。如果缺失,則無法啟動(dòng)服務(wù)。
server-id=127
(2)修改完之后,重啟服務(wù),使其生效,生效后,會(huì)有下列兩個(gè)初始化文件
第二步:建立全量備份
mysqldump -uroot -p --all-databases --flush-logs --delete-master-logs --single-transaction -R > /data/mysqlfullbackup/prm1.sql -- 數(shù)據(jù)全量備份
說明:
/data/mysql/backups/prm1.sql??存放路徑,自定義
-u 賬戶???????????? -p 密碼
--all-databases, -A??? 轉(zhuǎn)儲(chǔ)所有數(shù)據(jù)庫中的所有表。會(huì)帶有CREATE DATABASE 語句。
--databases?? -B?????????? 第一個(gè)名稱參數(shù)視為數(shù)據(jù)庫名稱
--tables??????????????????????? 表名
--add-drop-database? 在每個(gè)CREATE DATABASE語句之前添加DROP DATABASE語句
--flush-logs, -F ? ? ? ?? 在開始轉(zhuǎn)儲(chǔ)之前刷新MySQL服務(wù)器日志文件。
--delete-master-logs?? 刪除前面二進(jìn)制日志。此選項(xiàng)自動(dòng)啟用?--master-data。此參數(shù)可加可不加
--single-transaction??? 此選項(xiàng)將事務(wù)隔離模式設(shè)置為,?REPEATABLE READ并START TRANSACTION在轉(zhuǎn)儲(chǔ)數(shù)據(jù)之前將SQL語句發(fā)送到服務(wù)器。它僅對(duì)事務(wù)表有用,例如InnoDB
--routines,?-R?????????? 在輸出中包含轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫的存儲(chǔ)例程(過程和函數(shù))
-E,? --events????????????? 任務(wù)
下面開始測試
第三步,往一個(gè)表里面增加數(shù)據(jù)、刪除數(shù)據(jù)
(1)先建一個(gè)測試表,有以下原始數(shù)據(jù)
(2)先添加一些記錄
(3)刪除一些記錄
第四步:刷新日志
由于恢復(fù)全量備份的操作會(huì)存在日志里,所以先刷新日志,這樣恢復(fù)全量備份的操作會(huì)存在新的日志里,有利于跟前面的增量備份區(qū)分開來
使用以下語句
mysqladmin -uroot -p flush-logs;
或者
[root@develop ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection idis 42.....................mysql>flush logs;
Query OK,0 rows affected (0.14 sec)
第五步:恢復(fù)全量備份
mysql -uroot -p < /data/mysql/backups/prm1.sql
此步操作有點(diǎn)慢,耐心等候,完成后,我們查看表,已經(jīng)還原到初始狀態(tài)
第六步:增量備份還原
(1)查看日志
①將其轉(zhuǎn)化為sql文件
mysqlbinlog --base64-output=decode-rows -vv binlog.000002 > temp.sql
--base64-output使用base-64編碼打印二進(jìn)制日志條目,decode-rows
--verbose重建行事件并將其顯示為注釋的SQL語句。如果給出此選項(xiàng)兩次(通過傳入“-vv”或“--verbose --verbose”),則輸出包括用于指示列數(shù)據(jù)類型和一些元數(shù)據(jù)的注釋,以及如果已配置的行查詢?nèi)罩臼录?/p>
②找位置和時(shí)間節(jié)點(diǎn)
找自己想恢復(fù)的某個(gè)點(diǎn),我這里找到最后一個(gè)插入語句節(jié)點(diǎn)
③恢復(fù)節(jié)點(diǎn)
mysqlbinlog --stop-datetime="2019-01-11 11:10:54" binlog.000002 | mysql -uroot -p
或
mysqlbinlog--stop-position=1449 binlog.000002 | mysql -uroot -p
--start-datetime 在時(shí)間戳等于或晚于datetime參數(shù)的第一個(gè)事件處開始讀取二進(jìn)制日志
--start-position 在位置等于或大于的第一個(gè)事件處開始讀取二進(jìn)制日志
--stop-datetime 在時(shí)間戳等于或晚于datetime參數(shù)的第一個(gè)事件處停止讀取二進(jìn)制日志
--stop-position 在位置等于或大于的第一個(gè)事件處停止讀取二進(jìn)制日志
恢復(fù)后面的
mysqlbinlog --start-position=1449 binlog.000002 | mysql -uroot -p
最后一步:flush logs 刷新日志,開始新的操作
知識(shí)點(diǎn):
要查看所有二進(jìn)制日志文件的列表,請(qǐng)使用以下語句:
mysql> SHOW BINARYLOGS;
要確定當(dāng)前二進(jìn)制日志文件的名稱,請(qǐng)發(fā)出以下語句:
mysql> SHOW MASTER STATUS;
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql更新数据索引慢_mysql添加
- 下一篇: ubuntu mysql 迁移_(最新)