安全的 MySQL 复制;SSL 还是 SSH 隧道?

安全的 MySQL 复制;SSL 还是 SSH 隧道?

我在两台服务器之间设置了主-主 MySQL 复制。我即将把其中一台服务器移到另一个位置,因此复制将通过互联网进行,当然需要保证安全。

据我所知,我基本上有两个选择:

  1. 在 MySQL 复制中使用内置 SSL 支持。
  2. 使用 SSH 隧道转发用于复制的端口。

选择其中一个是否具有显著的安全性、性能或维护优势?

下面的输出让我感觉我根本不能使用选项 1。不过,我还是想知道每个选项的优缺点。

编辑:我进一步查看了一下,发现确实有 SSL 支持。只是目前被禁用了。

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_key       |          |
+---------------+----------+
7 rows in set (0.00 sec)

谢谢您的帮助/建议。

答案1

我更喜欢 SSL 复制。

我发现使用内置功能通常比尝试移植独立的安全层(例如 SSH)更干净。自定义的越多,构建、调试、监控和修复工作就越多,如果性能不如预期,第三方(例如邮件列表)就越难为您提供帮助。

答案2

呃,这个问题没有明确的答案。

使用嵌入式 SSL 包装器是一种开销较低的方法 - 但您可能会将繁重的 msyql 进程与网络 I/O 绑定在一起 - 但这只有在您复制到许多其他盒子和/或内存非常紧张时才会成为问题。通过额外的进程路由流量会增加非常轻微的延迟 - 但如果盒子位于不同的网络中,则不太可能产生重大影响。

如果是我,我会比较进程内 SSL 与完整 VPN 链接(不一定基于 ssh)的优点。后者不仅支持 mysql 复制(私有网络 DNS/LDAP、远程访问、日志记录……),而且使用 NAT 实现(例如通过 ssh/ssl 运行 ppp)可以快速重新调整以跨备份路由运行。这种方法还可以更简单、更一致地诊断通信问题。

答案3

根据 MySQL 文档,您可能未启用 SSL。请查看http://dev.mysql.com/doc/refman/5.1/en/secure-using-ssl.html以及如何在服务器上启动...此外,MySQL 还提供了有关使用 SSL 进行 MySQL 复制的良好参考,网址为http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-ssl.html...

相关内容