mysql备份工具xtr_mysql-xtrbackup备份与恢复
mysql-xtrbackup備份與恢復
★簡介:
Xtrabackup是由percona提供的mysql數據庫備份工具,據官方介紹,這也是世界上惟一款開源的能夠對innodb和xtradb數據庫進行熱備的工具。
★特點:
? 物理備份,備份過程快速、可靠;
? 備份過程不會打斷正在執行的事務;
? 能夠基于壓縮等功能節約磁盤空間和流量;
? 自動實現備份驗;
? 還原速度快;
★支持的存儲引擎功能:
? MyISAM:溫備,不支持增量備份;
? InnoDB:熱備,增量;
zxb????IP:10.0.0.128
zxb2? IP:10.0.0.129
操作:
兩臺機下載xtrbackup,并安裝;
[root@zxb?~]#?wget?https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
[root@zxb?~]#?yum?install?-y?percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
開啟二進制日志(備份機器);
[root@zxb?~]#?cat?/etc/my.cnf
[mysqld]
log-bin=/etc/mysql/mysql-bin
一、全量備份:
1.首先在zxb創建備份目錄,給權限;
[root@zxb?~]#?mkdir??-p?/data/backup/
[root@zxb?~]#?chown?-R?mysql:mysql?/data/backup
2.創建數據庫;
MariaDB?[(none)]>?create?database?allbackup;
Query?OK,?1?row?affected?(0.00?sec)
MariaDB?[(none)]>?show?databases;
+--------------------+
|?Database???????????|
+--------------------+
|?information_schema?|
|
allbackup
|
|?mysql??????????????|
|?performance_schema?|
|?zabbix?????????????|
+--------------------+
5?rows?in?set?(0.00?sec)
3.導入數據庫數據
[root@zxb?~]#?innobackupex?-uroot?-p0?/data/backup
。。。
171108?17:22:40?completed?OK!
[root@zxb?~]#?cd?/data/backup/2017-11-08_20-41-09/
[root@zxb?2017-11-08_20-41-09]#?cat?xtrabackup_binlog_info
mysql-bin.000007????1216
4.拷貝數據到對端目錄,首先創建目錄;
[root@zxb2?~]#?mkdir??/backup_data/
[root@zxb2?~]#?chown?-R?mysql:mysql?/backup_data/
[root@zxb?2017-11-08_20-41-09]#?scp?-r?*?zxb2:/backup_data/
5.準備一個數據,保證數據沒有提交或則回滾的事物;
[root@zxb2?~]#?innobackupex?--apply-log?/backup_data/
''''
171108?20:53:40?completed?OK
##--apply-log:回滾日志
一般情況下,在備份完成后,數據尚且不能用于恢復操作,因為備 份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處理不一致狀態。“準 備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至 數據文件也使得數據文件處于一致性狀態。
6.暫停mysql服務器,修改/etc/my.cnf,直接恢復后啟動服務;
[root@zxb2?~]#?systemctl?stop?mariadb
[root@zxb2?~]#?cat?/etc/my.cnf
[mysqld]
datadir=/backup_data
[root@zxb2?~]#?innobackupex?--copy-back?/backup_data/
171108?20:56:42?innobackupex:?Starting?the?copy-back?operationIMPORTANT:?Please?check?that?the?copy-back?run?completes?successfully.
At?the?end?of?a?successful?copy-back?run?innobackupex
prints?"completed?OK!".innobackupex?version?2.4.8?based?on?MySQL?server?5.7.13?Linux?(x86_64)?(revision?id:?97330f7)
Original?data?directory?/backup_data?is?not?empty!
[root@zxb2?~]#?systemctl?start?mariadb
7.查看數據是否同步;
MariaDB?[(none)]>?show?databases;
+--------------------+
|?Database???????????|
+--------------------+
|?information_schema?|
|
allbackup
|
|?mysql??????????????|
|?performance_schema?|
|?zabbix?????????????|
+--------------------+
5?rows?in?set?(0.00?sec)
二、增量備份:
1.操作命令:
第一次增量備份;
innobackupex --incremental /zl1(增量備份目錄1) --innobackupex-basedir=BASEDIR(全備目錄)
第二次增量備份;
innobackupex --incremental /zl2(增量備份目錄1) --innobackupex-basedir=zl1(增量備份目錄2)
第一次增量備份:
創建兩個增量目錄;
[root@zxb?~]#?mkdir?/data/backup_zl1
[root@zxb?~]#?mkdir?/data/backup_zl2
2.進入數據庫,增加數據;
MariaDB?[(none)]>?use?allbackup;
Database?changed
MariaDB?[allbackup]>?select?*?from?increment;
+------+-------+
|?id???|?name??|
+------+-------+
|????1?|?test??|
3.開始增量備份;
[root@zxb?~]#?innobackupex?-uroot?-p0?--incremental?/data/backup_zl1?--incremental-
basedir=/data/backup/2017-11-08_21-08-56/
。。。
171108?21:14:00?completed?OK!
4.拷貝數據到對端目錄,首先創建目錄;
[root@zxb2?~]#?mkdir?/zl1
[root@zxb2?~]#?mkdir?/zl2
[root@zxb2?~]#?chown?-R?mysql:mysql?/zl1
[root@zxb2?~]#?chown?-R?mysql:mysql?/zl2
[root@zxb?~]#?scp?-r?/data/backup_zl1/*?zxb2:/zl1/
5.停止服務,首先恢復完整數據,再合并第一個增量到完全備份里面;
##--redo-only:回滾合并
[root@zxb2?~]#?systemctl?stop?mariadb
[root@zxb2?~]#?innobackupex?--apply-log??--redo-only?/backup_data/
[root@zxb2?~]#?innobackupex?-uroot?-p0?--apply-log?--redo-only?/backup_data/
--incremental-dir=/zl1/backup_zl1/2017-11-08_22-30-37/
6.在全備目錄下恢復;
[root@zxb2?~]#?innobackupex?-uroot?-p0?--copy-backup?/backup_data/
7.啟動服務,查看數據;
[root@zxb2?~]#?systemctl?start?mariad
MariaDB?[(none)]>?use?allbackup;
Database?changed
MariaDB?[allbackup]>?select?*?from?increment;
+------+-------+
|?id???|?name??|
+------+-------+
|????1?|?test??|
第二次增量備份:
1.進入數據庫,增加數據;
MariaDB?[(none)]>?use?allbackup;Database?changed
MariaDB?[allbackup]>?select?*?from?increment;
+------+-------+
|?id???|?name??|
+------+-------+
|????1?|?test??|
|????2?|?test2?|
2.開始增量備份;
[root@zxb?~]#??innobackupex?-uroot?-p0?--incremental?/data/backup_zl2?--incremental-
basedir=/data/backup_zl1/2017-11-08_22-30-37/
3.拷貝數據到對端目錄;
[root@zxb?~]#?scp?-r?/data/backup_zl2/?zxb2:/zl2
4.停止服務,首先恢復完整數據,再合并第二個增量到完全備份里面;
[root@zxb2?~]#??innobackupex?--apply-log??--redo-only?/backup_data
[root@zxb2?~]#?innobackupex?-uroot?-p0?--apply-log?--redo-only?/backup_data/
--incremental-dir=/zl2/backup_zl2/2017-11-08_23-07-21/
5.在全備目錄下恢復;
[root@zxb2 ~]# innobackupex -uroot -p0 --copy-backup /backup_data/
6.啟動服務,查看數據;
MariaDB?[allbackup]>?select?*?from?increment;
+------+-------+
|?id???|?name??|
+------+-------+
|????1?|?test??|
|????2?|?test2?|
總結:經常會遇到mysql啟動不了,通常是由于權限問題,或者配置文件配置問題;
總結
以上是生活随笔為你收集整理的mysql备份工具xtr_mysql-xtrbackup备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: set集合python_python基础
- 下一篇: mysql case函数吗_mySQL