在开始备份之前,请确保集群正确配置以执行备份。(见 第 25.6.8.3 节,“NDB 集群备份配置”。)
使用 START BACKUP
命令创建备份,其语法如下所示:
START BACKUP [backup_id]
[encryption_option]
[wait_option]
[snapshot_option]
encryption_option:
ENCRYPT [PASSWORD=password]
password:
{'password_string' | "password_string"}
wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT
snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND
连续备份将自动标识为顺序,因此 backup_id
,一个大于或等于 1 的整数,是可选的;如果省略,将使用下一个可用的值。如果使用现有的 backup_id
值,备份将失败,错误为 备份失败:文件已存在。如果使用,backup_id
必须紧跟在 START BACKUP
关键字之后,在使用其他选项之前。
START BACKUP
支持使用 ENCRYPT PASSWORD=
创建加密备份。password
-
密码
password
必须满足以下所有要求: -
使用任何可打印的 ASCII 字符,除了
!
、'
、"
、$
、%
、\
和^
-
长度不超过 256 个字符
被单引号或双引号括起来
key = KDF(random_salt, password)
当 ENCRYPT PASSWORD='
时,备份数据记录和日志文件将使用用户提供的 password
'password
和随机生成的 salt 通过 PBKDF2-SHA256 算法生成对称加密密钥,然后使用 AES 256 CBC 内联对备份文件集进行加密。
NDB 集群 从不 保存用户提供的密码或生成的加密密钥。
可以从 encryption_option
中省略 PASSWORD
选项。在这种情况下,管理客户端将提示用户输入密码。
可以使用 PASSWORD
设置空密码 (''
或 ""
),但这不是推荐的做法。
可以使用以下命令解密加密备份:
-
ndbxfrm
--decrypt-password=
password
input_file
output_file
-
ndb_print_backup_file
-P
password
file_name
-
ndbxfrm
--decrypt-password-from-stdin
输入文件
输出文件
-
ndb_mgm
--backup-password-from-stdin
--execute "START BACKUP ..."
请参阅这些程序的描述,以获取更多信息,例如可能需要的其他选项。
可以使用 wait_option
确定在发出 START BACKUP
命令后何时将控制返回到管理客户端,如下所示:
WAIT COMPLETED
是默认值。
可以使用 snapshot_option
确定备份是否与集群在 START BACKUP
发出时的状态匹配,还是在完成时的状态匹配。SNAPSHOTSTART
导致备份与集群在备份开始时的状态匹配;SNAPSHOTEND
导致备份反映集群在备份完成时的状态。SNAPSHOTEND
是默认值,匹配以前 NDB 集群版本中的行为。
如果您使用 SNAPSHOTSTART
选项与 START BACKUP
一起,并且启用了 CompressedBackup
参数,只有数据和控制文件被压缩—日志文件不被压缩。
如果同时使用 wait_option
和 snapshot_option
,它们可以以任意顺序指定。例如,以下所有命令都是有效的,假设没有 ID 为 4 的现有备份:
START BACKUP WAIT STARTED SNAPSHOTSTART
START BACKUP SNAPSHOTSTART WAIT STARTED
START BACKUP 4 WAIT COMPLETED SNAPSHOTSTART
START BACKUP SNAPSHOTEND WAIT COMPLETED
START BACKUP 4 NOWAIT SNAPSHOTSTART
创建备份的步骤如下:
-
启动管理客户端 (ndb_mgm),如果它尚未运行。
-
执行
START BACKUP
命令。这将产生几行输出,指示备份的进度,如下所示:ndb_mgm> START BACKUP Waiting for completed, this may take several minutes Node 2: Backup 1 started from node 1 Node 2: Backup 1 started from node 1 completed StartGCP: 177 StopGCP: 180 #Records: 7362 #LogRecords: 0 Data: 453648 bytes Log: 0 bytes ndb_mgm>
-
Backup backup_id started from node node_id
备份ID
是该特定备份的唯一标识符。如果未进行其他配置,则该标识符将保存在集群日志中。节点ID
是管理服务器的标识符,该服务器正在与数据节点协调备份。在备份过程的这个点上,集群已经收到并处理了备份请求。但这并不意味着备份已经完成。下面是一个示例语句:Node 2: Backup 1 started from node 1
-
管理客户端将以类似以下消息的形式指示备份已经开始:
Backup backup_id started from node node_id completed
与备份开始的通知类似,
备份ID
是该特定备份的唯一标识符,而节点ID
是管理服务器的标识符,该服务器正在与数据节点协调备份。该输出还包括其他信息,包括相关的全局检查点、备份的记录数和数据大小,如下所示:Node 2: Backup 1 started from node 1 completed StartGCP: 177 StopGCP: 180 #Records: 7362 #LogRecords: 0 Data: 453648 bytes Log: 0 bytes
也可以从系统shell中使用ndb_mgm带有-e
或--execute
选项来执行备份,如下所示:
$> ndb_mgm -e "START BACKUP 6 WAIT COMPLETED SNAPSHOTSTART"
使用START BACKUP
时,必须指定备份ID。
集群备份默认情况下是在每个数据节点的BACKUP
子目录中创建的。这可以在config.ini
文件中使用BackupDataDir
配置参数来覆盖一个或多个数据节点,或者所有集群数据节点。使用给定的备份ID
创建的备份文件将存储在备份目录中的子目录BACKUP-
中。备份ID
-
启动管理客户端。
-
执行以下命令:
ndb_mgm> ABORT BACKUP backup_id
数字
备份ID
是备份的标识符,该标识符包含在管理客户端的响应中,当备份开始时(在消息Backup
中)。备份ID
started from node管理节点ID
-
管理客户端将确认abort请求,例如:
Abort of backup
。备份ID
orderedNote在这个点上,管理客户端还没有从集群数据节点接收到对该请求的响应,备份还没有实际被取消。
-
在备份被取消后,管理客户端将以类似以下形式报告该事实:
Node 1: Backup 3 started from 5 has been aborted. Error: 1321 - Backup aborted by user request: Permanent error: User defined error Node 3: Backup 3 started from 5 has been aborted. Error: 1323 - 1323: Permanent error: Internal error Node 2: Backup 3 started from 5 has been aborted. Error: 1323 - 1323: Permanent error: Internal error Node 4: Backup 3 started from 5 has been aborted. Error: 1323 - 1323: Permanent error: Internal error
在这个示例中,我们展示了一个具有4个数据节点的集群的示例输出,其中要取消的备份的序列号是
3
,管理节点的节点ID是5
。第一个完成其部分的节点报告说备份被取消的原因是用户的请求。(剩余的节点报告说备份被取消是由于内部错误。)Note没有保证集群节点将以特定的顺序响应
ABORT BACKUP
命令。消息
Backup
意味着备份已经终止,并且所有与该备份相关的文件都已从集群文件系统中删除。备份ID
started from node管理节点ID
has been aborted
也可以从系统shell中使用以下命令来取消备份:
$> ndb_mgm -e "ABORT BACKUP backup_id"
如果在发出ABORT BACKUP
命令时没有正在运行的备份具有ID 备份ID
,则管理客户端不会响应,也不会在集群日志中指示无效的abort命令。