MySQL Cluster在線備份和恢復


備份方式

一般MySQL數據庫都是用mysqldump命令進行數據備份,其生成的文件實際上是創建對象和導入對象的sql語句。

在MySQL Cluster集群上,可以在管理節點上使用start backup命令實現數據庫的在線備份,在還原時可以使用ndb_restore命令來進行數據庫的還原。

使用MySQL Cluster的start backup,可以生成以下三種格式的備份文件:

  • BACKUP-backup-id.node_id.ctl
    ctl控制文件存儲表定義以及其他對象的元數據(metadata)。

  • BACKUP-backup-id.node_id.data
    data數據文件,保存的是表中的記錄行,由於數據節點分片的原因,沒有節點上文件的數據是不一致的。

  • BACKUP-backup-id.node_id.log
    log日志文件保存已提交的事物記錄。

上述文件中,backup-id是備份標識,node_id是數據節點的唯一編號。

備份命令

在ndb_mgm交互模式下,可以執行如下命令進行備份。


START BACKUP [backup_id] [wait_option] [snapshot_option]

wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT

snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND

命令后面帶3個參數,在交互模式下都是可選的。其中backuop_id如果添加,需要保持唯一。wait_option是指在ndb_mgm交互模式下,執行命令后是否將命令控制權返回給用戶。

wait_option: WAIT STARTED表示一旦備份開始,就把控制交給用戶;NOTWAIT表示用戶一執行命令,就把控制權返回給用戶;WAIT COMPLETED表示需要等備份全部結束才把控制權交還給用戶。默認的選項是WAIT COMPLETED。

snapshot_option: SNAPSHOTSTART表示備份文件的內容同開始備份時的數據庫快照一致,SNAPSHOTEND表示備份文件的內容同備份結束時的數據庫快照一致。SNAPSHOTEND是默認選項。

實際執行效果如下:

start backup

bakcup files

從上圖我們可以得出默認的backup_id是從1開始遞增的,備份文件會放在datadir的BACKUP目錄下,每一次備份都會子目錄BACKUP-backup_id。因此備份轉移可以通過打包壓縮這個目錄然后轉移到備份服務器。

還原測試

單表還原

首先我在數據庫刪除一個測試表,然后通過ndb_restore命令來對數據進行還原。

drop dept table

還原單個表,需要一次在每個數據節點運行以下命令。

shell> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2

在執行單個節點還原后查詢數據,可以發現會有部分數據可以查詢到,說明還原的節點存儲了該表的部分數據。


shell> ndb_restore -c 192.168.1.131 -n 1 -b 1 -m -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1 --include-tables=testdb.dept

mysql> select count(*) from dept;
+----------+
| count(*) |
+----------+
|       25 |
+----------+
1 row in set (0.00 sec)

在后續節點上還原時就不需要指定-m選項來還原metadata,否則還原時會報Restore: Failed to restore table: testdb/def/dept ... Exiting錯誤。

整庫還原

首先進入單用戶模式。


ndb_mgm> ENTER SINGLE USER MODE 9
ndb_mgm> EXIT SINGLE USER MODE

USER MODE 9表示只有一個還原程序通過nodeid為9的api節點連接。

假設集群中由於同一nodegroup的所有節點都宕機,且硬盤上的數據也無法恢復。則所有節點通過ndbmtd --initial啟動后,存放在ndb引擎上的數據都會丟失。此時,就需要調用ndb_restore進行數據庫的還原。

同時,為了防止其他用戶的接入操作,在完全操作前可以將集群進入上面所述的單用戶模式。

然后根據備份文件的位置,依次進行還原。其中只有第一個節點還原時要使用-m命令。


ndb_restore -c 192.168.1.131 -n 1 -b 1 -m -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 2 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 3 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 4 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1

注意:所有數據節點的備份文件可以放到一個備份目錄下,還原程序會根據還原命令自行尋找對應的備份文件。

版權說明:camash原創,轉載請注明出處 http://www.cnblogs.com/shenfeng/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM