我有一个将增长超过 250GB 的数据库,所有数据都在 NDB 引擎(2 个数据节点)中,没有其他用于数据存储的 mysql 引擎。
MySQL Cluster NDB 数据库备份的最佳方法或计划是什么。
MySQL Enterprise Backup(MySQL Cluster CGE 的一部分)或任何其他工具是否为 NDB 进行备份?
像我这样的初学者可以轻松完成这些 NDB 备份还是需要专业技能?
亲切的问候,
您应该阅读更多有关集群的文章以更好地理解。我在此处列出了使用 4 个数据节点场景进行集群备份和恢复的步骤。
1.MySQL集群原生备份工具(ONLINE Backup)与恢复
1.1
ndb_mgm> START BACKUP <Option>
<Option>:NOWAIT, WAIT STARTED, WAIT COMPLETED
Run Code Online (Sandbox Code Playgroud)
NOWAIT - 这会立即向显示器返回响应并开始备份,而无需等待来自数据节点的响应。
WAIT STARTED - 仅当所有数据节点都返回响应表明备份已开始时,才会向显示器返回响应。
WAIT COMPLETED - 仅当所有数据节点都返回响应表明备份已成功完成时,才会向显示器返回响应。
在大多数情况下,使用 START BACKUP WAIT COMPLETED 是最好的选择:
ndb_mgm> START BACKUP WAIT COMPLETED
Run Code Online (Sandbox Code Playgroud)
在磁盘上创建的文件
1.1.1 .ctl - 这组文件(标记为backup-..ctl)是来自集群的每个数据节点的元数据。
1.1.2 .log - 这组文件(标记为backup-..log)包含UNDO 日志文件,以保持备份一致并确保在备份过程中不需要锁定。
1.1.3 .Data - 这组文件(标记为备份——..Data)包含整个系统的数据。
1.2 中断正在进行的备份。
如果中止成功,将显示一条消息,说明这一点并发出错误(这是意料之中的)。如果输入了备份 ID,但没有与该 ID 关联的备份发生,则有响应但没有发出错误:
ndb_mgm> ABORT BACKUP <backup id>
ndb_mgm> ABORT BACKUP 6
Run Code Online (Sandbox Code Playgroud)
1.3 ndb_mgm> <node_id> REPORT BackupStatus
此命令在备份期间随时为 node_id 或使用 ALL 的所有数据节点提供有关集群备份的状态报告。
1.4 恢复集群备份
1.4.1 关闭集群再重启管理节点
1.4.1.1
ndb_mgm>SHUTDOWN
Run Code Online (Sandbox Code Playgroud)
1.4.1.2
/usr/local/mysql/bin/ndb_mgmd
Run Code Online (Sandbox Code Playgroud)
1.4.2 启动并清空数据节点:-
在恢复备份之前,重要的是启动和清空数据节点。这是通过使用 --initial 选项启动每个数据节点来完成的。
./ndbd --initial
Run Code Online (Sandbox Code Playgroud)
1.4.3 恢复集群备份
1.4.3.1 ndb_mgm> ENTER SINGLE USER MODE [Node-Id of First Free Slot]
1.4.3.2 在操作系统控制台中,从 /var/lib/mysqlcluster/BACKUP/BACKUP-1/ 目录输入以下命令:
ndb_restore -m -r -b 1 -n 2 /* -- For First DataNode*/
ndb_restore -r -b 1 -n 3 /*-- For Second DataNode */
Run Code Online (Sandbox Code Playgroud)
1.4.3.3
ndb_mgm> EXIT SINGLE USER MODE
Run Code Online (Sandbox Code Playgroud)
2. 通过 MySQLDump Utility 备份 MySQL Cluster
2.1
shell> mysqldump -u root -p --lock-tables Dd_Name > Db_Name-backup.sql
Run Code Online (Sandbox Code Playgroud)
2.2 恢复mysqldump文件
shell> mysql -u root -p < Db_Name-backup.sql
Run Code Online (Sandbox Code Playgroud)