git 别名配置
记录我自己配置的 git 别名。
1 | root ~ $ cat .gitconfig |
记录我自己配置的 git 别名。
1 | root ~ $ cat .gitconfig |
Percona XtraBackup 已经实现了对加密备份的支持。它可用于使用 xbstream
选项加密、解密本地备份或流式备份(不支持流式 tar 备份),以便为备份添加另一层保护。加密是通过 libgcrypt
库完成的。
#创建加密备份
要创建一个加密备份,需要指定以下选项(选项 xtrabackup --encrypt-key
和 xtrabackup --encrypt-key-file
是互斥的,即只需要提供其中的一个就行):
--encrypt=ALGORITHM
- 目前支持的算法有:AES128
,AES192
和 AES256
--encrypt-key=ENCRYPTION_KEY
- 使用适当长度的加密密钥。不建议在通过命令行访问机器的情况下使用此选项,因为该密钥在执行过程中会被打印输出。--encrypt-key-file=KEYFILE
- 可从中读取适当长度的原始密钥的文件的名称。该文件必须是一个简单的二进制(或文本)文件,其中准确存储了需要使用的密钥。xtrabackup --encrypt-key
选项和 xtrabackup --encrypt-key-file
选项均可用于指定加密密钥。加密密钥可以使用如下命令生成:
1 | $ openssl rand -base64 24 |
Percona XtraBackup 实现了对压缩备份的支持。它可以使用 xbstream 压缩、解压缩本地备份或流式备份。
为了进行压缩备份,您需要使用 xtrabackup --compress
选项:
1 | $ xtrabackup --backup --compress --target-dir=/data/compressed/ |
如果您想加快压缩速度,可以使用并行压缩,可以使用 xtrabackup --compress-threads
选项启用并行压缩。以下示例将使用四个线程进行压缩:
1 | $ xtrabackup --backup --compress --compress-threads=4 \ |
输出看起来像这样
xtrabackup 和 innobackupex 工具都支持增量备份,这意味着它们可以仅复制自上次备份以来发生更改的数据。
您可以在每次完整备份之间执行多次增量备份,因此您可以这样设置备份过程,例如每周一次完整备份和每天增量备份,或者每天完整备份和每小时增量备份。
增量备份的工作原理是每个 InnoDB 页都包含日志序列号既 LSN。 LSN 是整个数据库的系统版本号。每个页的 LSN 显示了它最近的变化。
增量备份复制那些 LSN 比之前增量备份或完全备份的 LSN 更新的所有页面。有两种算法用于查找要复制的这类页面的集合。第一种算法可用于所有服务器类型和版本,它通过读取所有数据页直接检查页面 LSN。 第二种方法适用于 Percona Server 它启用服务器上更改页面跟踪功能,该功能会在页面被更改时记录下来。这些信息将被写入一个紧凑的单独的所谓的位图文件中。 xtrabackup 二进制文件将使用该文件只读取增量备份所需的数据页面,这潜在地节省了很多读取请求。如果xtrabackup 程序找到了位图文件,则默认启用后一种算法。即使位图数据可用,也可以指定xtrabackup --incremental-force-scan
来读取所有页面。
要创建备份,请使用 xtrabackup --backup
选项运行 xtrabackup 。您还需要使用 xtrabackup --target-dir
选项指定备份文件存储的目录,如果 InnoDB 数据或日志文件未存储在同一目录中,则还需要指定他们的位置。如果备份的目标目录不存在, xtrabackup 会创建它。如果目录确实存在并且为空,则 xtrabackup 将成功运行。 如果目录不为空, xtrabackup 不会覆盖现有的文件,它会执行失败,并报操作系统错误码17,file exists
。
要开始备份请运行:
1 | $ xtrabackup --backup --target-dir=/data/backups/ |
这会将备份存储在 /data/backups/
目录中。如果您指定的是相对路径,则目标目录将与您当前目录有关。
在备份过程中,您应会看到大量输出显示正在复制的数据文件,以及日志文件线程反复扫描日志文件并从中复制日志文件。下面是一个例子,它显示了在后台扫描日志的日志线程以及在 ibdata1
文件上工作的文件复制线程: