您当前位置:主页 > 资讯攻略 >
来源:未知
2020-09-05 07:08:14 浏览: 分类:资讯攻略

如何建立SSH加密的MySQL复制

对于数据库管理员来说,mysql有很多吸引人的地方,比如它的免费开源、详细的文档和内置的数据复制支持。但是安全管理员会很快指出一个缺陷:加密。政府对数据隐私保护有严格要求,通过局域网或广域网复制数据需要加密。

虽然可以编译MySQL来支持SSL,但是很多二进制发行版并没有激活这个特性。打开SQL提示符并键入命令“show variables like ' % ssl % & quot。如果“have _ ssl & quot或者“have _ openssl & quot设置为”。不& quot那么不幸的是这个功能没有被激活。幸运的是,我们有另一个选项可以从源代码重新编译。安全外壳(SSH)支持数据隧道,它可以建立一个类似VPN的小型环境来提供透明的加密。首先,我们将使用用户名/密码建立一个SSH隧道。我们将使用RSA密钥对远端进行认证。一旦隧道建立并运行,我们将设置数据复制。

修建隧道

SSH使用端口转发技术连接到从服务器上的一个TCP端口,在本例中是7777,并通过SSH转发到主MySQL服务器上的TCP端口3306。确保MySQL主服务器端的SSH隧道是激活的,默认情况下一般是激活的。在MySQL辅助服务器上,执行以下命令“ssh-f user @ master _ IP-L 7777:master _ IP:3306-N & quot;。使用主服务器的系统用户帐户和IP地址分别替换user和master_ip。您可能希望使用一个仅用于数据复制的用户,并将其shell设置为/bin/false。或者,您可以用服务器上任何可用的端口替换7777。在主数据库端,将提示您输入用户帐户和密码。

现在从服务器“MySQL-h 127 . 0 . 0 . 1-P 7777 & quot;,以连接到MySQL主服务器。切记不要使用localhost,因为它在MySQL中还有其他含义。如果需要,可以在这个命令后面加上“”。-u-p & quot;指定MySQL帐户和密码。如果你得到一个“拒绝许可& quot消息,那么您需要检查MySQL主服务器上的授权声明。授权声明应该绑定到主机的真实IP地址,因为它是转发的MySQL1连接的真实源地址。转发的连接不是来自本地主机或127.0.0.1。

设置复制

既然已经建立了隧道,那么是时候设置数据复制了。这个过程与典型的MySQL复制设置完全相同。在主服务器上编辑my.cnf文件,并添加以下两行代码:

log-bin=mysql-bin

服务器id=1

接下来,创建一个复制帐户。在MySQL中,运行以下查询语句:
创建用户'复制用户' @' master _ IP '由'复制密码'标识;
在*上授予复制从属服务器。* TO ' replication user ' @ ' master _ IP ';

在从属服务器端,将以下代码添加到my.cnf文件中:

服务器id = 2

主主机= 127.0.0.1

主用户=复制用户

master-password =复制密码

主端口= 7777

在主服务器和从服务器上重启MySQL服务。对于新创建的复制环境,您可能需要手动将数据库复制到从属服务器。有关创建数据快照和更多复制选项的详细信息,请参考MySQL指南(第16.1章)。这一切完成后,检查复制是否生效。在主服务器和从服务器上分别执行一个“。选择& quot查询;结果应该是一样的。在主服务器上执行插入、更新或删除数据以更改“选择返回结果的记录集。等待几秒钟,然后重新执行”。选择& quot查询。如果复制功能已经生效,那么在主服务器和从服务器上获得的结果应该是相同的。

您可能希望使用预共享的RSA密钥,而不是必须键入密码。通过使用键,您可以设置看门狗shell脚本来确保SSH通道被激活,如果通道失败,它将自动重启。此外,考虑在主服务器上创建一个Cron守护进程,用当前的unix时间戳更新数据表。可以从服务器添加检查该值的Cron守护程序。如果它落后于当前时间戳太多,复制功能可能已经被破坏,管理员应该会收到一封报警邮件。

澄清与MySQL复制相关的两个重要事项。

关于MySQL复制,有两件重要的事情需要记住。首先,它的主要目的是灾难恢复和高可用性,而不是备份。在主服务器上执行的每个数据更改语句都将在从服务器上重复执行。所以,如果你不小心输入了“从我的表中删除”语句,并且忘记使用WHERE子句来限制范围,那么您的数据将在主服务器和从属服务器上都丢失。

第二件要记住的事情是,您可以从服务器创建、更新和删除数据。为了实现高可用性,我遇到过一些开发人员,他们创建了同时在主服务器和从服务器上运行的应用程序,并且更新了一个复制表,每次都破坏了复制功能的正常运行。

因此,您需要向应用程序添加检查逻辑,以检查它是否运行在非活动的从属系统上,并且不要向复制的表中写入数据。然后对其进行开发者单元测试。

& mdash& mdash51CTO王雯雯:首先需要说明的是,虽然本文使用了SSH技术,但我还是推荐SSL来加密MySQL复制。另外,原作者提醒的第二个问题是,如果开发者坚持连接从服务器进行测试,建议使用主从双向复制。单向复制效率高,双向复制各有优势。

原文链接:
http://www . network computing . com/servers-storage/how-to-set-up-ssh-encrypted-MySQL-replication . PHP

作者:迈克尔·j·德玛利亚

关键词:SSH加密,MySQL复制

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227405.html

上一篇:Oracle DBA面试题
攻略资讯
安卓软件