MySQL企业备份支持加密的InnoDB表空间。MySQL服务器如何加密和解密InnoDB表,请参见InnoDB数据静止加密它解释了主键和表空间键等概念,这对于理解MySQL企业备份如何使用加密的InnoDB表空间非常重要。
当InnoDB表空间加密使用集中的密钥管理解决方案时,该特性被称为”MySQL企业透明数据加密(TDE)。”
下面简要介绍MySQL Enterprise Backup在备份、恢复和应用日志操作中如何处理加密的InnoDB表。
用加密的InnoDB表备份数据库。下面是备份包含加密InnoDB表的数据库的一个典型命令:
$ mysqlbackup——user=root——password——backup-image=/home/admin/backups/my。Mbi——backup-dir=/home/admin/backup-tmp \——encrypt-password="密码“backup-to-image
备份过程中,mysqlbackup将加密的InnoDB表空间文件拷贝到备份文件中,并执行以下操作:
MySQL Enterprise Backup 4.1.0, MySQL Enterprise Backup 4.1.1及以上版本,MySQL Enterprise Server 5.7.20及以上版本,MySQL Enterprise Backup 4.1.1及以上版本,MySQL Community Server 5.7版本:
对于在线备份,mysqlbackup联系MySQL服务器,以确定服务器正在使用的密匙环插件,目前是其中之一
keyring_file
或keyring_okv
(对于脱机备份,使用——密匙环
选项必须用于将相同的信息传递给mysqlbackup).mysqlbackup还从服务器找出访问密匙环的位置(对于脱机备份,使用——keyring_file_data
或——keyring_okv_conf_dir
选项必须用于提供相同的信息)。一次mysqlbackup它可以访问密钥环,获取主密钥并使用它解密加密的表空间密钥,这些表空间密钥用于加密服务器上的InnoDB表。使用选项提供的用户密码
——encrypt-password
,mysqlbackup重新加密表空间密钥。对于每个加密的表,重新加密的表空间密钥以及其他信息都存储到传输文件中(使用.bkt
扩展),该扩展保存到备份中。
MySQL Enterprise Backup 4.1.1及以上版本,MySQL Enterprise Server 5.7.21及以上版本:
MySQL Enterprise Backup总是将主密钥存储在备份中的一个加密文件中,而不管服务器使用哪种密匙环插件。
mysqlbackup联系MySQL服务器,以确定服务器正在使用的密匙环插件,目前是其中之一
keyring_encrypted_file
,keyring_file
,keyring_okv
,或keyring_aws
.如果服务器正在使用
keyring_encrypted_file
插件中,用户必须使用该选项——encrypt-password
供给给mysqlbackup已在服务器上设置的密匙环文件加密密码keyring_encrypted_file_password
选择。mysqlbackup然后将加密的密匙环数据文件(其中包含用于加密所有表空间密钥的主密钥)从服务器复制到元
备份中的文件夹。加密的表空间文件也被复制到备份中。如果服务器使用密匙环插件而不是
keyring_encrypted_file
,mysqlbackup访问密钥环获得主密钥,并使用它解密加密的表空间密钥,这些表空间密钥用于加密服务器上的InnoDB表。然后,将主密钥放入使用该选项提供的用户密码加密的密匙环数据文件中——encrypt-password
并保存命名为keyring_kef
,进入元
备份中的文件夹。
不希望在命令行或默认文件中提供密码的用户可以使用——encrypt-password
选项,不指定任何值;mysqlbackup然后要求用户在操作开始之前输入密码。属性的所有命令都适用——encrypt-password
选择。
一个提取
或image-to-backup-dir
命令用于包含加密InnoDB表的映像备份,不需要——encrypt-password
选择。
使用加密的InnoDB表恢复备份。下面是一个典型的命令,用于恢复包含加密InnoDB表的单文件备份:
$ mysqlbackup——defaults-file=/usr/local/mysql/my.cnf——backup-image=/home/admin/backups/my。Mbi \——backup-dir=/home/admin/restore-tmp——encrypt-password="密码“copy-back-and-apply-log
MySQL Enterprise Backup 4.1.0,或MySQL Enterprise Backup 4.1.1及以上版本与MySQL 5.7.20及之前版本兼容:在恢复操作期间,mysqlbackup将加密的InnoDB表空间文件拷贝到服务器上。mysqlbackup同时执行以下操作:
使用选项提供的用户密码
——encrypt-password
,与备份数据库时使用的密码相同,mysqlbackup解密表空间密钥,这些密钥是在前面执行备份时使用密码加密的。如果
——generate-new-master-key
选项被使用,mysqlbackup生成一个新的主密钥并使用它重新加密表空间密钥。要使用——generate-new-master-key
选项时,——密匙环
选项,以及——keyring_file_data
选项(当——密匙环
=keyring_file
)或——keyring_okv_conf_dir
选项(当——密匙环
=keyring_okv
)必须指定,因此mysqlbackup可以访问密钥环并向其添加新的主密钥。$ mysqlbackup——defaults-file=/usr/local/mysql/my.cnf——backup-image=/home/admin/backups/my。Mbi \——backup-dir=/home/admin/restore-tmp——encrypt-password="密码"——生成新主密钥——keyring=keyring_file——keyring-file-data =path-to-keyring-file\ copy-back-and-apply-log
然后应该将密匙环参数提供给恢复的服务器。
如果
——generate-new-master-key
不使用,mysqlbackup假设备份服务器时在服务器上使用的相同密匙环继续有效,并可用于恢复的服务器。
MySQL企业备份4.1.1及以上版本,MySQL 5.7.21及以上版本:参数必须提供用于备份数据库的相同密码——encrypt-password
恢复操作选项。在恢复期间,mysqlbackup复制加密的InnoDB表空间文件和包含主密钥的加密文件(keyring_kef
)到服务器上。它还执行以下操作:
对于MySQL企业服务器:mysqlbackup将加密密匙环数据文件恢复到服务器上的适当位置。必须以启动恢复的服务器
keyring_encrypted_file
插件和选项keyring_encrypted_file_data
而且keyring_encrypted_file_password
的密码应该为服务器提供与——encrypt-password
选项)。对于MySQL社区服务器
keyring_file
插件是MySQL Community Server唯一支持的keyring插件;因此mysqlbackup参数提供的密码——encrypt-password
选项来解密密匙环数据文件,然后将其恢复到服务器上的适当位置keyring_file
插件使用。
用于增量备份。对于一系列的增量备份,如果密匙环插件不是keyring_encrypted_file
正在使用的服务器上,用户可以提供不同的值为——encrypt-password
用于备份序列中的任何完全备份或增量备份。但是,为了恢复该备份,必须提供用于进行特定的完全备份或增量备份的密码。在恢复一系列增量备份后启动服务器时,应该向服务器提供用于恢复上次增量备份的密码(MySQL Community server除外,它将以keyring_file
插件,不需要keyring_encrypted_file_password
选项启动)。
高级:使用加密的InnoDB表创建和恢复目录备份。下面是一个典型的命令,用来创建包含加密InnoDB表的目录备份:
$ mysqlbackup——user=root——password——backup-dir=/home/admin/backup \——encrypt-password="密码“备份
方法准备备份的典型命令如下运用原木
命令:
$ mysqlbackup——backup-dir=/home/admin/backup——encrypt-password="密码“运用原木
方法必须提供用户密码——encrypt-password
选项,因为在应用日志之前必须解密表空间密钥。方法尝试用增量备份更新备份时,也适用相同的要求apply-incremental-backup
命令:
$ mysqlbackup——backup-dir=/home/admin/backup——increment -backup-dir=/home/admin/backup-in \——encrypt-password="password" apply-increment -backup . sh
如果你使用不同的值——encrypt-password
对于备份序列中的完整备份或增量备份,请确保在执行备份时提供用于创建单个备份的密码运用原木
或apply-incremental-backup
用它来操作。
接下来,一个复制回去
命令将准备好的备份恢复到服务器上:
$ mysqlbackup——defaults-file=/usr/local/mysql/my.cnf——backup-dir=/home/admin/backup copy-back
注意——encrypt-password
选项为此步骤不需要。
你可以结合这两个步骤运用原木
而且复制回去
通过运行copy-back-and-apply-log
命令,其中——encrypt-password
选项是必需的:
$ mysqlbackup——defaults-file=/usr/local/mysql/my.cnf——backup-dir=/home/admin/backup \——encrypt-password="密码“copy-back-and-apply-log
MySQL Enterprise Backup 4.1.0,或MySQL Enterprise Backup 4.1.1及以上版本与MySQL 5.7.20及之前版本兼容:你也可以使用——generate-new-master-key
选项,就像恢复单文件备份时一样:
$ mysqlbackup——defaults-file=/usr/local/mysql/my.cnf——backup-dir=/home/admin/backup \——generate-new-master-key——keyring= /usr/local/mysql/my.cnfkeyring_file——keyring-file-data =path-to-keyring-file\——encrypt-password = "密码“copy-back-and-apply-log
的局限性。当MySQL企业备份使用加密的InnoDB表时,有一些限制:
对于MySQL 5.7.11及以前版本,InnoDB表空间的备份是加密的”MySQL企业透明数据加密(TDE)”不支持mysqlbackup.要对这些表执行备份,请将服务器升级到最新的MySQL 5.7版本,并注意中解释的任何升级要求MySQL 5.7的变化特别是关于……的问题
——early-plugin-load
选项,并使用旋转innodb主键声明。然后继续备份过程。在一次
验证
操作,如果mysqlbackup遇到任何加密的InnoDB表,它会发出警告,然后跳过它们。对于使用可传输表空间的部分备份(即当
——use-tts
选项),加密的InnoDB表永远不会包含在备份中。当一个与表选择标准相匹配的加密InnoDB表被跳过时,日志文件中就会发出警告。的
——skip-unused-pages
选项在备份期间对加密的InnoDB表没有影响(也就是说,那些表的空页不会被跳过)。MySQL Enterprise Backup 4.1.1及更高版本在使用MySQL Enterprise Server 5.7.21及更高版本时不支持离线备份加密的InnoDB表。