25.6.8.2 使用 NDB 集群管理客户端创建备份
在开始备份之前,确保集群已经正确配置好用于执行备份的。 (请参阅第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个字符
-
需要用单引号或双引号括起来
当使用ENCRYPT PASSWORD='
时,每个数据节点写入的备份数据记录和日志文件将使用来自用户提供的密码
'密码
和随机生成的盐的密钥,通过使用PBKDF2-SHA256算法来生成一个对称加密密钥,然后使用该密钥对备份数据进行AES 256 CBC inline加密,并将生成的密钥用于加密备份文件集。
key = KDF(random_salt, password)
生成的密钥然后被用来加密备份数据,使用对称加密对备份文件集进行加密(使用生成的密钥).
NDB 集群从不保存用户提供的密码或生成的加密密钥。
可以省略PASSWORD
选项来自加密选项
. 在这种情况下,管理客户端将提示用户输入密码。
使用PASSWORD
可以设置一个空密码(''
或""
),但这不建议。
加密的备份可以使用以下命令进行解密:
-
ndb_restore
--decrypt
--backup-password=
密码
-
ndbxfrm
--decrypt-password=
密码
input_file
output_file
-
ndb_print_backup_file
-P
密码
file_name
-
ndbxfrm
--decrypt-password-from-stdin
input_file
output_file
-
ndb_print_backup_file
--backup-password=
密码
文件名
-
ndb_print_backup_file
--backup-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
backup_id
是该特定备份的唯一标识符。如果没有配置其他方式,这个标识符将被保存在集群日志中。node_id
是协调备份与数据节点的管理服务器的标识符。在备份过程中的这个点,集群已经接收和处理了备份请求。但这并不意味着备份已经完成。以下是一个示例语句:Node 2: Backup 1 started from node 1
-
管理客户端使用以下消息指示备份已经开始:
Backup backup_id started from node node_id completed
与备份已经开始的通知一样,
backup_id
是这个特定备份的唯一标识符,node_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
配置参数为所有集群数据节点重写。为一个备份的给定backup_id
创建的备份文件存储在名为BACKUP-
的子目录中。backup_id
取消备份. 要取消或中止已经在进行中的备份,请执行以下步骤:
-
启动管理客户端。
-
执行以下命令:
ndb_mgm> ABORT BACKUP backup_id
其中,
backup_id
是备份的标识符,这个标识符来自管理客户端在开始备份时返回的响应消息(在消息中)。 -
管理客户端将以
Abort of backup
确认中止请求。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
backup_id
从节点management_node_id
开始的备份已经被中止”表明该备份已经终止,并且与该备份相关的所有文件已从集群文件系统中删除。
也可以使用以下命令在系统 shell 中中止正在进行中的备份:
$> ndb_mgm -e "ABORT BACKUP backup_id"
如果当发起
ABORT BACKUP
命令时没有运行的备份拥有 ID backup_id
,管理客户端将无响应,也不会在集群日志中记录无效的中止命令发送。