加密InnoDB表空间备份¶
的MySQL5.7.11, InnoDB支持数据为InnoDB表加密存储在每表一个文件的表空间中。该特性为物理表空间数据文件提供静态加密。
对于通过认证的用户或应用程序访问加密表空间,InnoDB将使用主加密密钥解密表空间密钥。主加密密钥存储在密匙环中。xtrabackup支持的两个密匙环插件是keyring_file和keyring_vault。这些插件被安装到插件目录中。
使用keyring_file插件¶
支持加密InnoDB表空间备份keyring_file已经在雷竞技下载官网Percona XtraBackup2.4.2通过实现xtrabackup——keyring-file-data选项(以及xtrabackup——服务器id选项,用于MySQL5.7.13之前)。这些选项只能被xtrabbackup二进制文件识别,也就是说,innobackupex将无法备份和准备加密的表空间。
创建备份¶
为了备份和准备包含加密InnoDB表空间的数据库,必须使用xtrabackup——keyring-file-data选择。
美元xtrabackup——备份——target-dir=/ /数据/备份——用户=根\——keyring-file-data=/var/lib/mysql-keyring /密匙环
与MySQL5.7.13之前使用xtrabackup——服务器id在backup creation命令中:
美元xtrabackup——备份——target-dir=/ /数据/备份——用户=根\——keyring-file-data=/var/lib/mysql-keyring /密匙环——服务器id=1
xtrabackup完成备份后,您应该看到以下消息:
xtrabackup:将lsn(5666709)的事务日志复制到(5696718)。160401 10:25:51完成OK!
警告
Xtrabackup不会将keyring文件复制到备份目录中。为了准备备份,您必须自己制作密匙环文件的副本。
准备备份¶
为了准备备份,您需要指定存储keyring-file-data(服务器id)的路径backup-my.cnf文件,因此在准备备份时可以忽略它,而不管MySQL版本使用)。
美元xtrabackup——准备——target-dir=/数据/备份\——keyring-file-data=/var/lib/mysql-keyring /密匙环
当xtrabackup完成备份准备后,您应该看到以下消息:
InnoDB: Shutdown completed;日志序号5697064 160401 10:34:28 completed OK!
备份现在已经准备好了,可以使用xtraback_copy -back选项进行恢复。如果密匙环已被旋转,您将需要恢复密匙环是用来采取和准备备份。
使用命令进行备份keyring_vault插件¶
支持加密InnoDB表空间备份keyring_vault已经在雷竞技下载官网Percona XtraBackup2.4.11.介绍了密匙环保险库插件的设置在这里。
创建备份¶
下面的命令在/数据/备份目录:
美元xtrabackup——备份——target-dir=/数据/备份——用户=根
在xtrabackup完成备份后,您应该看到以下消息:
xtrabackup:将lsn(5666709)的事务日志复制到(5696718)。160401 10:25:51完成OK!
准备备份¶
为了准备备份,xtrabackup将需要访问密匙环。因为xtrabackup不与MySQL服务器对话,也不读取默认值my.cnf在准备配置文件时,用户需要通过命令行指定keyring设置:
美元xtrabackup——准备——target-dir=/数据/备份\——keyring-vault-config=/etc/vault.cnf
另请参阅
Percona服务器的Rest加密数据[keyring 雷竞技下载官网vault插件设置](//m.doggingzone.com/doc/percona-server/LATEST/management/data_at_rest_encryption.html#keyring-vault-plugin)。
在xtrabackup完成备份准备后,您应该看到以下消息:
InnoDB: Shutdown completed;日志序号5697064 160401 10:34:28 completed OK!
备份现在已经准备好了,可以使用xtrabackup——复制回去选择:
美元xtrabackup——复制回去——target-dir=/数据/备份——datadir=/数据/ mysql
增量加密InnoDB表空间备份keyring_file¶
使用InnoDB表空间加密进行增量备份的过程类似于使用增量备份未加密的表空间。
创建增量备份¶
要进行增量备份,请从完全备份开始。xtrabackup二进制文件写入一个名为xtrabackup_checkpoints到备份的目标目录。该文件包含一行显示to_lsn,这是数据库的LSN在备份结束时。首先,需要使用以下命令创建一个全量备份:
美元xtrabackup——备份——target-dir=/数据/备份/基地\——keyring-file-data=/var/lib/mysql-keyring /密匙环
警告
Xtrabackup不会将keyring文件复制到备份目录中。为了准备备份,您必须自己制作密匙环文件的副本。如果您在更改密匙环后尝试恢复备份,您将看到如下错误错误3185 (HY000):无法从keyring中找到主密钥,请检查是否加载了keyring插件。当试图访问加密表时。
如果你看一下xtrabackup_checkpoints文件中,你应该会看到如下类似的内容:
Backup_type = full-backuped from_lsn = 0 to_lsn = 7666625 last_lsn = 7666634 compact = 0 recover_binlog_info = 1
现在有了完整备份,可以在此基础上进行增量备份。使用如下命令:
美元xtrabackup——备份——target-dir=/ /备份/ inc1数据\——incremental-basedir=/数据/备份/基地\——keyring-file-data=/var/lib/mysql-keyring /密匙环
警告
Xtrabackup不会将keyring文件复制到备份目录中。为了准备备份,您必须自己制作密匙环文件的副本。如果密匙环没有被旋转,您可以使用与您用基础备份备份的密匙环相同的密匙环。如果密匙环已被旋转,您将需要备份它,否则您将无法准备备份。
的/ /备份/ inc1 /数据目录现在应该包含delta文件,例如ibdata1.delta和测试/ table1.ibd.delta。这些代表了自LSN 7666625。如果你检查xtrabackup_checkpoints文件在这个目录下,你应该看到类似下面的内容:
Backup_type = incremental from_lsn = 7666625 to_lsn = 8873920 last_lsn = 8873929 compact = 0 recover_binlog_info = 1
意思应该是不言而喻的。现在可以使用这个目录作为另一个增量备份的基础:
美元xtrabackup——备份——target-dir=/数据/备份/装置\——incremental-basedir=/ /备份/ inc1数据\——keyring-file-data=/var/lib/mysql-keyring /密匙环
准备增量备份¶
的xtrabackup——准备增量备份的步骤与正常备份的步骤不同。在普通备份中,执行两种类型的操作以使数据库保持一致:根据数据文件从日志文件中重播已提交的事务,回滚未提交的事务。在准备备份时,必须跳过未提交事务的回滚,因为在备份时未提交的事务可能正在进行中,并且很可能在下一个增量备份中提交它们。你应该使用xtrabackup——apply-log-only选项以防止回滚阶段。
警告
如果你不使用xtrabackup——apply-log-only选项来阻止回滚阶段,那么增量备份将是无用的。回滚事务后,不能应用进一步的增量备份。
从创建的完整备份开始,您可以对其进行准备,然后对其应用增量差异。回想一下,您有以下备份:
/data/backups/base /data/backups/inc1 /data/backups/inc2
要准备基本备份,您需要运行xtrabackup——准备像往常一样,但是阻止回滚阶段:
美元xtrabackup——准备——apply-log-only——target-dir=/数据/备份/基地\——keyring-file-data=/var/lib/mysql-keyring /密匙环
输出应该以如下文本结束:
InnoDB: Shutdown completed;日志序号7666643 InnoDB: number of pools: 1 160401 12:31:11 completed OK!
将第一次增量备份应用到全量备份中,需要执行如下命令:
美元xtrabackup——准备——apply-log-only——target-dir=/数据/备份/基地\——incremental-dir=/ /备份/ inc1数据\——keyring-file-data=/var/lib/mysql-keyring /密匙环
警告
应该使用备份时使用的密匙环准备备份。这意味着,如果密匙环在基本备份和增量备份之间轮换,则需要使用第一次进行增量备份时正在使用的密匙环。
准备第二次增量备份是一个类似的过程:将增量应用于(修改过的)基本备份,然后将其数据及时前滚到第二次增量备份的点:
美元xtrabackup——准备——target-dir=/数据/备份/基地\——incremental-dir=/数据/备份/装置\——keyring-file-data=/var/lib/mysql-keyring /密匙环
请注意
xtrabackup——apply-log-only应该在合并除最后一个以外的每个增量备份时使用。这就是为什么前一行没有包含xtrabackup——apply-log-only。即使xtrabackup——apply-log-only在最后一步中使用,备份仍然是一致的,但是在这种情况下,服务器将执行回滚阶段。
备份现在已经准备好了,可以使用xtrabackup——复制回去。如果密匙环已被旋转,您将需要恢复密匙环是用来采取和准备备份。
当密匙环不可用时恢复备份¶
虽然所描述的恢复方法有效,但它需要访问服务器正在使用的相同密匙环。如果备份是在不同的服务器上准备的,或者在很晚的时候准备的,当密匙环中的密钥被清除时,或者在密匙环保险库服务器根本不可用时发生故障时,这可能是不可能的。
一个xtrabackup——transition-key应该用于使xtrabackup能够在不访问密匙环保险库服务器的情况下处理备份。在这种情况下,xtrabackup将从指定的passphrase中获得AES加密密钥,并使用它来加密被备份的表空间的表空间密钥。
创建带有密码短语的备份¶
示例如下:
美元xtrabackup——备份——用户=根- p——target-dir=/数据/备份\——transition-key=MySecretKey
如果xtrabackup——transition-key如果没有指定值,xtrabackup将请求该值。
请注意
xtrabackup——transition-key对象中不显示提供的值ps命令的输出。
使用密码短语准备备份¶
属性指定相同的密码短语准备命令:
美元xtrabackup——准备——target-dir=/数据/备份\——transition-key=MySecretKey
没有keyring-vault或keyring文件在这里,因为xtrabackup在这种情况下不与密匙环通信。
使用生成的密钥恢复备份¶
在恢复备份时,您需要生成新的主密钥。这里有一个例子keyring_file:
美元xtrabackup——复制回去——target-dir=/数据/备份——datadir=/数据/ mysql\——transition-key=MySecetKey——generate-new-master-key\——keyring-file-data=/var/lib/mysql-keyring /密匙环
万一…keyring_vault它看起来像这样:
美元xtrabackup——复制回去——target-dir=/数据/备份——datadir=/数据/ mysql\——transition-key=MySecetKey——generate-new-master-key\——keyring-vault-config=/etc/vault.cnf
Xtrabackup将生成新的主密钥,将其存储到目标密匙环保险库服务器中,并使用此密钥重新加密表空间密钥。
使用存储的转换密钥进行备份¶
最后,有一个在密匙环中存储转换键的选项。在这种情况下,在准备和复制回期间,xtrabackup将需要访问相同的密匙环文件或保管库服务器,但不依赖于服务器密钥是否已被清除。
备份过程分为以下三个阶段:
备份¶
美元xtrabackup——备份——用户=根- p——target-dir=/数据/备份\——generate-transition-key
准备¶
keyring_file变体¶
美元xtrabackup——准备——target-dir=/数据/备份\——keyring-file-data=/var/lib/mysql-keyring /密匙环
keyring_vault变体¶
美元xtrabackup——准备——target-dir=/数据/备份\——keyring-vault-config=/etc/vault.cnf
复制回去¶
keyring_file变体¶
美元xtrabackup——复制回去——target-dir=/数据/备份——datadir=/数据/ mysql\——generate-new-master-key——keyring-file-data=/var/lib/mysql-keyring /密匙环
keyring_vault变体¶
美元xtrabackup——复制回去——target-dir=/数据/备份——datadir=/数据/ mysql\——generate-new-master-key——keyring-vault-config=/etc/vault.cnf