MySQL物理備份與恢復工具XtraBackup使用小結
1.描述
借助Percona XtraBackup工具實現(xiàn)MySQL的物理備份與恢復,相當于將整個MySQL進行了復制,再粘貼到其他地方運行。
2.安裝
XtraBackup與MySQL版本對應關系:
XtraBackup | MySQL |
---|---|
percona-xtrabackup-24 | 5.7 |
percona-xtrabackup-80 | 8 |
percona-xtrabackup-81 | 8.1 |
percona-xtrabackup-82 | 8.2 |
percona-xtrabackup-83 | 8.3 |
yum -y install percona-xtrabackup-24 yum -y install rsync yum -y install perl-Digest-MD5 yum -y install qpress
3.使用
3.1 備份源數據庫
#讀取指定配置文件中的信息,壓縮mysql的數據,輸出到/mysql目錄下,再重定向到test.xbstream文件中(相當于tar包)。 innobackupex --defaults-file=/etc/my.cnf --user=root --password='123456' --port=3306 --socket=/tmp/mysql.sock --stream=xbstream --compress --parallel=8 --compress-threads=8 /mysql > /databak/test.xbstream
–defaults-file指定mysql配置文件,需要包含datadir等信息
–stream采用流的方式備份,這樣可以選擇輸出到本地或遠程
3.2 恢復到目標數據庫
如果恢復位置不在同一臺服務器,可以通過scp進行文件傳輸。
3.2.1 恢復目錄
#相當于解壓tar包,輸出到指定目錄下 xbstream -x < /databak/test.xbstream -C /databak/test
3.2.2 解壓文件
#對前一步輸出目錄下的所有壓縮文件進行解壓 innobackupex --decompress --parallel=8 --compress-threads=8 /databak/test
3.2.3 應用日志
#通過redo同步已提交的事務,使數據文件保持一致 innobackupex --apply-log /databak/test
3.2.4 復制數據
復制數據前,先停止目標MySQL,刪除他的data目錄和日志目錄
#將數據文件拷貝到目標MySQL的數據目錄下 innobackupex --defaults-file=/etc/my.cnf --parallel=8 --copy-back /databak/test
3.2.5 啟動
#修改mysql相關的文件持有者為mysql用戶 chown -R mysql.mysql /data/mysql #啟動mysql systemctl start mysqld
如果是目標MySQL是從服務器,需要恢復主從關系
#查看備份的數據最后的binlog的偏移量,或者gtid cat /databak/test/xtrabackup_binlog_info #格式如下: #mysql-bin.000001 3229488 87bd47b9-12f6-11ed-ae2c-0050569534a2:1-6,8cdb65cf-12f6-11ed-aab7-005056950a99:1-139
連接到MySQL客戶端:
stop slave; #清理中繼日志 reset slave; #清理binlog reset master; #設置已經執(zhí)行但本地binlog中未記錄的gtid集合 set @@global.gtid_purged='87bd47b9-12f6-11ed-ae2c-0050569534a2:1-6,8cdb65cf-12f6-11ed-aab7-005056950a99:1-139'; #重新建立主從關系 change master to master_host='192.168.86.111',master_port=3306,master_user='backuser',master_password='123456', master_auto_position=1 ; start slave; show slave status\G
4.使用總結
環(huán)境:96核 754G內存 30T磁盤(生產環(huán)境的物理機)
4.1 備份
壓縮效率:XtraBackup默認采用的zstd壓縮算法,理論壓縮比為5:1。實際使用中,一個MySQL實例由3.2t壓縮為502G;另一個MySQL實例由5.7t壓縮為825G,壓縮比達到6:1以上
備份速度:一個MySQL實例備份生成502G的壓縮文件,耗時大約50分鐘,判斷每10分鐘生成100G的壓縮文件。如果5個t的數據,壓縮后可能為800G,則耗時約80分鐘。
傳輸文件:通過scp傳輸文件,速度約為350-450MB/s,500G需要20-25分鐘
4.2 恢復
恢復包含多個步驟:
恢復目錄:將壓縮文件解包到指定目錄下,速度較快,約10-20分鐘
解壓:一個MySQL實例為512G,解壓后3.6T,解壓耗時約37分鐘,約10分鐘1T
應用日志:一個MySQL實例耗時約15分鐘
復制:一個MySQL實例,3.6T數據復制耗時約40分鐘,約10分鐘1T
4.3 例子
綜上,假設現(xiàn)有5T的數據需要處理,從備份到恢復的整個流程耗時如下:
- 備份,5T按6:1壓縮至800G,耗時80分鐘
- 傳輸,scp按450M/s,耗時30分鐘
- 恢復,20分鐘
- 解壓,10分鐘1T,耗時50分鐘
- 應用日志,20分鐘
- 復制,10分鐘1T,耗時50分鐘
在以上理想情況下,5T數據至少需要4個小時以上,實際可能5-6小時
到此這篇關于MySQL物理備份與恢復工具XtraBackend使用小結的文章就介紹到這了,更多相關MySQL XtraBackend使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL利用AES_ENCRYPT()與AES_DECRYPT()加解密的正確方法示例
MySQL中AES_ENCRYPT('密碼','鑰匙')函數可以對字段值做加密處理,AES_DECRYPT(表的字段名字,'鑰匙')函數解密處理,下面這篇文章主要給大家介紹了關于MySQL利用AES_ENCRYPT()與AES_DECRYPT()加解密的正確方法,文中給出了詳細的示例代碼,需要的朋友可以參考下。2017-08-08mysql中如何判斷當前是字符 mysql判斷字段中有無漢字
這篇文章主要介紹了mysql如何判斷字段中有無漢字的方法,使用length與char_length兩個函數就可以完成2014-01-01CentOS下安裝mysql時忘記設置root密碼致無法登錄的解決方法
最近在給公司的內網開發(fā)用服務器裝系統(tǒng),然后裝mysql居然就花了一天,原因是因為本人在CentOS下安裝萬mysql后,無法通過root進入,因為安裝的時候,并沒有設置root密碼而導致無法登錄,通過查找了資料終于解決了,現(xiàn)在想方法分享給大家,有需要的朋友們可以參考借鑒。2016-11-11