原文连接:Encrypted Replication for MySQL
原文作者:Steve Champion

在8.0版本中,MySQL复制默认设置是加密连接的。 下面的简单示例展示了使用Ubuntu 20.04和MySQL Community 8.0.27进行加密复制的基本设置。 这些步骤可能与其他Linux发行版类似。
此示例所需的文件随此版本的 MySQL 一起安装,可在数据目录中找到(图 1)。它们是五个不同的 .pem 文件,两个属于源服务器,两个将复制到副本服务器,一个将同时存在于源服务器和复制服务器上(表 1)。

图 1:源数据目录内容。请注意全新安装的 MySQL 中自动包含的 .pem 文件

表 1:具有权限的必要 .pem 文件列表
在默认数据目录中找到必要的文件之后,就可以记录该目录,并将客户端文件复制到复制服务器。
对于此示例,在源服务器和复制服务器上创建了一个单独的目录以更好地组织.pem文件,但这不是必需的。在源端上,这个目录被是“/var/lib/mysql/repl_security”(图 2)。对于复制端的.pem 文件,这目录是“/var/lib/mysql/repl_sec”(图 3)。
现在可以适当地分发文件。
对于源文件ca.pem、server-cert.pem和server-key.pem在本地被移动到repl_security目录(图2)。

图 2:复制所需的 ssl 服务器文件的目录(在源上)。检查文件权限以确保它们可以被 MySQL 使用。
复制服务器上需要的任何文件都必须从源发送到复制服务器。 必要的文件(如表1所示)是:ca.pem, client-cert.pem, client-key.pem。 在这种情况下,使用linux命令“scp”将客户端的.pem文件移动到复制服务器。 一旦在服务器上,文件就被移动到repl_sec目录。 在此之后,文件所有者和权限(通过chown、chgrp和chmod)更改为图 3 中所示的内容。

图 3:在配置文件中找到的目录中具有权限的副本文件。确保权限与此处显示的内容相匹配。
在所有文件都在所需的目录中之后,设置配置文件。
源端:
图 4 显示了包含要编辑的配置文件的默认目录,图 5 显示了要进行的更改。重要的是要注意 .pem 文件目录位于 [mysqld] 部分下(如图 5 所示)。

图 4:包含源配置文件的目录

图 5:源配置文件。以“ssl”开头的选项与安全连接有关
复制端:
图 6 显示了包含要编辑的配置文件的默认目录,图 7 显示了要进行的更改。需要注意的是,.pem 文件目录位于 [client] 部分下(如图 7 所示)。

图 6:复制端配置文件位置

图 7:复制端配置文件。必要的 ssl文件位于 [client] 下,并以“ssl”开头。
设置两个配置文件之后,请确保在两个服务器上重新启动MySQL实例。
现在,加密复制连接已经设置好,可以使用了。
概括
使用自动创建的.pem文件为 MySQL 设置加密复制过程中涉及的步骤参考:
- 找到必要的
.pem文件 - 将客户端文件分发到复制服务器
- 确保所有
.pem文件的权限和所有者正确 - 编辑源端和复制端的配置文件以将
ssl选项指向适当的目录 - 重新启动源端和复制端
MySQL实例




