为了增强备份数据的安全性,MySQL Enterprise Backup 提供了对单个文件备份的加密。在创建部分、压缩或增量单文件备份时,以及将 备份数据流式传输到另一台设备或服务器时,也可以应用加密。
加密是在 CBC 模式下使用高级加密标准 (AES) 块密码执行的,使用用户提供的 64 位十六进制数字的密钥字符串。使用相同的密钥执行解密。密钥可以通过将 64 个随机十六进制字节放在一起来手动创建,也可以 通过为它提供一个关键字短语来由 shasum(或适用于您的平台的哈希计算的类似程序)生成:
$ echo -n "my secret passphrase" | shasum -a 256
a7e845b0854294da9aa743b807cb67b19647c1195ea8120369f3d12c70468f29 -
请注意,末尾的“ - ”不是密钥的一部分,应忽略。
使用该选项将密钥提供给mysqlbackup--key
,或将密钥粘贴到密钥文件中并
使用该选项将文件的路径名提供给mysqlbackup
--key-file
。
要随机生成密钥,您可以使用 OpenSSL 等工具:
$ openssl rand -hex 32
8f3ca9b850ec6366f4a54feba99f2dc42fa79577158911fe8cd641ffff1e63d6
要将 OpenSSL 生成的密钥放入密钥文件中,您可以执行以下操作:
$ openssl rand -hex 32 >keyfile
$ cat keyfile
6a1d325e6ef0577f3400b7cd624ae574f5186d0da2eeb946895de418297ed75b
加密功能使用MySQL Enterprise Backup自带的加密格式,也就是说只有使用MySQL Enterprise Backup才能解密。对于类 Unix 操作系统,使用不同的幻数来识别加密和未加密的备份文件。例如,您可以将这些行添加到/etc/magic
操作系统的文件中:
0 string MBackuP\n MySQL Enterprise Backup backup image
0 string MebEncR\n MySQL Enterprise Backup encrypted backup
然后可以使用 文件命令来识别文件类型:
$ file /backups/image1 /backups/image2
/backups/image1: MySQL Enterprise Backup backup image
/backups/image2: MySQL Enterprise Backup encrypted backup
用于加密和解密的命令选项有
--encrypt
、
--decrypt
、
--key
和
--key-file
。这些选项可用于备份映像的各种操作。有关详细信息,请参阅
第 20.13 节,“加密选项”。
以下是创建加密备份的示例命令:
mysqlbackup --defaults-file=/home/dbadmin/backup.cnf --backup-image=/backups/image.enc --encrypt \
--key=23D987F3A047B475C900127148F9E0394857983645192874A2B3049570C12A34 \
--backup-dir=/var/tmp/backup backup-to-image
要为同一任务使用密钥文件:
mysqlbackup --defaults-file=/home/dbadmin/backup.cnf --backup-image=/backups/image.enc --encrypt
--key-file=/meb/key --backup-dir=/var/tmp/backup backup-to-image
要在提取备份时解密备份:
mysqlbackup --backup-image=/backups/image.enc --decrypt
--key-file=/meb/key --backup-dir=/backups/extract-dir extract
要验证加密的备份映像:
mysqlbackup --backup-image=/logs/encimage.bi --decrypt --key-file=/meb/enckey validate