如何确保 MySQL 从服务器使用 SSH 隧道从主服务器复制?

如何确保 MySQL 从服务器使用 SSH 隧道从主服务器复制?

我需要保护两台 CentOS 5.7 服务器之间的 MySQL 数据库复制。服务器 1 拥有实时数据库,并且复制到位于互联网其他地方的服务器 2 已经运行良好。

显然这并不好,因为复制流量很容易被读取,所以需要加以保护。

我在服务器 2 中输入以下命令创建了 SSH 隧道:

ssh -f root@server1ip -L 3305:server1ip:3306 -N

我确认我能够使用以下命令从服务器 2 成功登录服务器 1 上的 MySQL:

mysql -h27.0.0.1 -uuser -ppassword -P 3305

现在,这是否意味着 mysql 复制现在全部自动通过 SSH 进行?有什么办法可以确认这一点吗?或者是服务器 2强制由于我建立了这个端口转发规则,我可以通过 SSH 连接到服务器 1 吗?

我注意到,如果我重新启动服务器 2,SSH 隧道就会消失,但复制会继续(我假设以纯文本形式恢复)。我能做些什么来确保隧道断开时复制停止?我想确保它不会在没有 SSH 的情况下自动继续以明文形式复制。

谢谢你!

答案1

您需要设置从属设备的复制主配置,以便它通过隧道的绑定端口而不是复制对等设备的外部地址进行传输:

CHANGE MASTER TO MASTER_HOST='127.0.0.1' MASTER_PORT=3305;

答案2

我建议使用隧道我发现非交互式连接更容易管理。但这不是必须的。

设置连接后(通过 SSH 或 stunnel 或其他方式),您必须启动复制 - 请参阅 Shane Madden 的回答。确保使用正确的 MASTER_*-options(请参阅CHANGE MASTER TO 语法)。

此外,我更愿意使用 mysqld 的内置 SSL 支持,就像 embobo 建议的那样。这样您的复制设置就不需要任何外部依赖项了。

所有设置 mysql 应该在重启/重新启动/... 后自动启动复制 - 但一定要监控你的 mysql-replication-setup,因为有很多情况和环境可能会破坏你的设置。我真的推荐一个这样的工具pt-心跳(maatkit-tools 中 mk-heartbeat 的后继者)因为Seconds_Behind_MasterfromSHOW SLAVE STATUS \G不可靠。

高血压

相关内容