標籤:mysqld ase error *** inno 服務 bsp 上進 基礎上
mysqldump 備份鑒於其自身的某些特性(鎖表,本質上備份出來insert指令碼或者文本,不支援差異備份),不太適合對即時性要求比較高的情況
Xtrabackup可以解決mysqldump存在的上述的一些問題,生產環境應用的也會更多一些。
本文簡單測試一下Xtrabackup對MySQL資料庫的備份還原作業。
本著先把功能先擼起來再深入細節的原則,粗略地實現了一個備份還原,並未深入細節。
網上有不少xtrabackup的文章,因為環境不一樣,有些需要配置xtrabackup的設定檔,
但是我在xtrabackup 2.4.7版本下測試就需要需求任何設定檔。
innobackupex 備份
xtrabackup和MySQL的版本如下
完整備份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock /data/backup
說明:
1.--defaults-file=/etc/my.cnf檔案必須在最前面
2.--user=root --password=root,--use=***與 --password=*** 中間一定要有空格,
如,完整備份完成
如,完整備份會建立一個日期(年月日時分秒,yyyy-MM-dd_hh-mm-ss)命名的檔案
完整備份出來的記憶體,實際上是對所備份的資料庫的資料檔案的copy加上備份時候產生的一些資訊,
比如xtrabackup_checkpoints就是當前完整備份的一些個資訊,這個資訊對差異備份非常重要。
差異備份
差異備份之所以能夠做到差異,就是依賴於完整備份的,在完整備份的基礎上進行完整備份之後的差異的備份。
而如何確定完整的備份之後備份到哪裡,就依賴於完整備份之後的xtrabackup_checkpoints這個檔案的。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/2017-06-22_13-40-29
如,差異備份完成
如果在進行差異備份的時候,指定的完整備份的檔案錯誤或者是未指定完整備份檔案,會發現xtrabackup提示找不到xtrabackup_checkpoints這個檔案。
innobackupex 還原
準備階段
1,恢複完整備份,也即完整備份應用(--apply-log)日誌
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock /data/backup/2017-06-22_13-40-29
, 2,分別將增量備份應用到完整備份
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock --incremental /data/backup/2017-06-22_13-40-29 --incremental-basedir=/data/backup/2017-06-22_13-41-48
如果有多個差異備份,分別應用差異備份到完整備份。
恢複階段
完成差異備份的全部應用到完整備份之後,將恢複後的差異備份copy到原資料目錄
預設情況下,如果資料路徑下存在檔案,則copy失敗,需要清空資料檔案路徑下的檔案。
innobackupex --copy-back /data/backup/2017-06-22_13-40-29
如,完成copy-back
啟動MySQL服務
啟動mysql服務,發現啟動失敗
看一下錯誤記錄檔(啟動錯誤資訊),mysql5.7之後預設error位於/var/log/mysqld.log中,且預設不會滾動,意味著所有的錯誤資訊都記錄在這個檔案中。
資料檔案還原之後,需要讀資料檔案路徑授予可讀寫的許可權
這裡直接授權資料檔案路徑777,chmod -R 777 /var/lib/mysql
然後啟動mysql服務,可以正常啟動。
xtrabackupex才剛剛開始,留下一大堆問題,有時間再一個一個驗證。
1,怎麼實現單個庫(表)的備份與還原,畢竟實際環境中,因為每個庫備份的頻率和方式(備份方案)是不一樣的?
2,怎麼用全備+差異備份然後結合二進位日誌做基於時間點的方式還原?
3,如何驗證備份檔案的有效性?
xtrabackup備份還原MySQL資料庫