Mysql-Cluster

如何將 MySQL 集群 (NDB) 備份遷移到不同的 ndb 集群?

  • December 11, 2017

我有兩個 MySQL 集群 (NDB),Prod 和 Dev。每個集群包含 SQL 節點、管理節點和數據節點。使用以下文章在一個集群上完成備份:

https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-using-management-client.html

如何將創建的備份文件導入到單獨的 MySQL Cluster?即用產品數據刷新開發集群。

備份似乎與創建它的集群相關聯。有沒有辦法使用備份文件在單獨的集群上進行“恢復”?

可以在不同的集群上恢復備份。我自己做過很多次。在 NDB 的情況下,僅備份和恢復過程並不那麼簡單。

  1. 使用 mysqldump 備份 NDB 表結構。
  2. 進行 NDB 備份。
  3. 在新集群上恢復 mysqldump 備份。
  4. 使用 ndb_restore 恢復 NDB 數據(在兩個數據節點上)。
  5. 重建索引(命令必須只在一個數據節點上執行)。

我正在使用以下步驟來執行備份和恢復。在第一步中,我生成轉儲腳本以備份方案結構。

echo "select concat('mysqldump --opt --no-data ', table_schema, ' ', table_name, ' > ', table_schema, '/', table_name, '.mysqldump') from tables where engine='ndbcluster' and table_schema 不在 ('mysql');" |
mysql -NB information_schema > dumpscript.sh
ndb_mgm -e "開始備份 222 等待完成"
[將 BACKUP/BACKUP-222 目錄從源數據節點複製到目標數據節點]
[恢復mysqldump文件]
ndb_restore --nodeid=10 --no-binlog --restore_data --disable-indexes --parallelism=1024 --promote-attributes --backupid=222 --exclude-databases=ndbinfo --backup_path=/mysql/cluster/備份/備份-222/
ssh othernode ndb_restore --nodeid=11 --no-binlog --restore_data --disable-indexes --parallelism=1024 --promote-attributes --backupid=222 --exclude-databases=ndbinfo --backup_path=/mysql/集群/備份/備份-222/
ndb_restore --nodeid=10 --no-binlog --backupid=222 --exclude-databases=ndbinfo --backup_path=/mysql/cluster/BACKUP/BACKUP-222/ --rebuild-indexes --parallelism=512

如果這看起來太簡單 - 請記住,如果有外鍵,您將不得不刪除並稍後重新創建外鍵。:)

引用自:https://dba.stackexchange.com/questions/192598