備份方式
一般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是默認選項。
實際執行效果如下:
從上圖我們可以得出默認的backup_id是從1開始遞增的,備份文件會放在datadir的BACKUP目錄下,每一次備份都會子目錄BACKUP-backup_id。因此備份轉移可以通過打包壓縮這個目錄然后轉移到備份服務器。
還原測試
單表還原
首先我在數據庫刪除一個測試表,然后通過ndb_restore
命令來對數據進行還原。
還原單個表,需要一次在每個數據節點運行以下命令。
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/