千家信息网

怎么建立SSH加密的MySQL复制

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要介绍"怎么建立SSH加密的MySQL复制",在日常操作中,相信很多人在怎么建立SSH加密的MySQL复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么建
千家信息网最后更新 2024年11月25日怎么建立SSH加密的MySQL复制

这篇文章主要介绍"怎么建立SSH加密的MySQL复制",在日常操作中,相信很多人在怎么建立SSH加密的MySQL复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么建立SSH加密的MySQL复制"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

对管理员来说,MySQL颇多吸引人之处,例如它的免费和开源,以及拥有详尽的文档和内置支持数据复制等。但是安全管理员会迅速指出它的一个缺陷:加密。政府对数据隐私保护的要求极为严格,通过局域网或广域网复制数据都需要加密。

尽管可以通过编译MySQL使其支持SSL,但许多二进制发行版并未激活该功能。打开一个SQL提示符,然后键入命令"show variables like %ssl%"。如果"have_ssl"或"have_openssl"被设置为"No",则很不幸该功能未被激活。幸运的是,我们还有另一种选择来从源代码重新编译。安全外壳(ssh)支持数据隧道(data-tunneling),它可以建立一个类似VPN的迷你环境,来提供透明加密。首先,我们将使用一个用户名/密码建立一条ssh隧道。我们将通过使用RSA密钥对远端进行认证。一旦隧道正常运行后,我们将设置数据复制。

建立隧道

ssh隧道使用端口转发技术来连接到从属服务器上的一个TCP端口,在本文示例中该端口是7777,它通过ssh被转发到主MySQL服务器上的TCP端口3306。确保MySQL主服务器端的ssh隧道被激活,默认情况下它一般都处于激活状态。在MySQL从属服务器上,执行以下命令"ssh -f -L 7777:master_ip:3306 -N"。使用主服务器的一个系统用户账号和IP地址分别替换user和master_ip。你可能希望使用一个仅用于数据复制的用户,将其shell设定到/bin/false上。另外你可以使用从服务器上的任何可用端口替换7777。在主数据库端,你将被提示输入用户账号和密码。

现在从MySQL1从服务器上运行"MySQL -h 127.0.0.1 -P 7777",来连接MySQL主服务器。切记不能使用localhost,因为在MySQL中它有别的含义。如果需要,可以在该命令后追加"-u -p"来指定一个MySQL账号和密码。如果你获得一个"permission denied"消息,那么需要检查MySQL主服务器上的授权声明。授权声明应该被捆绑到主计算机的真实IP地址,因为它才是被转发的MySQL1连接的真正源地址。被转发的连接不是来自于localhost或127.0.0.1。


设置复制

现在隧道已经建好,接下来该设置数据复制了。这个过程与典型的MySQL复制设置完全相同。编辑主服务器上的my.cnf文件,增加以下两行代码:

log-bin=MySQL-bin

server-id=1

接下来,创建复制账号。在MySQL中,运行以下查询语句:

CREATE USER IDENTIFIED BY replicationpassword;

GRANT REPLICATION SLAVE ON *.* TO ;

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

server-id = 2

master-host = 127.0.0.1

master-user = replicationuser

master-password = replicationpassword

master-port = 7777

重启主服务器和从服务器上的MySQL服务。对于新创建的复制环境,你可能需要手动拷贝数据库到从服务器上。参考MySQL指南(16.1章节),可以获得创建数据快照和更多复制选项的详细信息。这一切都做完后,检查复制是否生效。分别在主服务器和从服务器上执行一个"select"查询;返回结果应该是相同的。在主服务器上执行insert、update或delete数据,改变"select"返回结果的记录集。等待几秒钟后,重新执行"select"查询。如果复制功能已经生效,主从服务器上得到结果应该仍然是相同的。

你可能希望使用预共享的RSA密钥来取代必须键入密码。通过使用密钥,你可以设置看门狗shell脚本,来确保ssh通道处于激活状态,而且如果该通道失效,它将自动重启。另外,考虑在主服务器上创建一个Cron守护进程,来使用当前的unix时间戳来更新数据表。从服务器可以增加一个检查该值的Cron守护进程。如果它滞后当前时间戳太大,复制功能可能已被破坏,管理员应该收到告警邮件。

明确MySQL复制相关的两点重要事项

关于MySQL复制,有两点重要事项需要记住。首先,其主要目的是灾难恢复和高可用性,而非备份。在主服务器上执行的每一条数据更改语句,都将在从服务器端重复执行。因此如果你无意键入了"DELETE FROM mytables"语句,并忘记了使用WHERE子句来限定范围,那么你的数据将会同时在主服务器和从服务器上丢失。

第二件需要记住的事情是,你能够在从服务器上创建、更新和删除数据。我遇到过有的开发者为了实现高可用性,创建了同时运行在主服务器和从服务器上的应用程序,并更新了一个被复制的表,每次都破坏了复制功能。因此你需要在应用程序中加入检查逻辑,检查它是否是运行在一个未激活的从属系统上,不要向被复制的表写数据。然后在它上面进行开发者单元测试。

到此,关于"怎么建立SSH加密的MySQL复制"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

服务 服务器 数据 加密 隧道 激活 端口 检查 运行 功能 密码 用户 账号 从属 学习 相同 接下来 命令 地址 密钥 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何调出服务器的资源管理 多重关系 数据库 火山软件开发平台中文 泰拉瑞亚最好的服务器端口 软件开发和事业单位选哪个好 附加数据库对于服务器 河南软件开发哪家好 vb监视串口是否收到数据库 香港云服务器比香港服务器更快吗 如何在两个路由之间设置服务器 网络安全攻击队工资 徐州l软件开发 服务器应用程序怎么用 公司网络安全建设报告 茶山金蝶管理软件开发 捕鱼服务器源码 内蒙古学生网络技术服务计划表 现在还用得着监控服务器吗 人工智能要不要学习数据库系统 如何查看服务器远程连接的记录 德意互联网科技有限公司 监控服务器调试安装全过程 网络安全知识规则 申请购买新服务器 贵阳市安全周网络安全培训 服务器网络不稳定 论电子支付与网络安全 2021网络安全周班会教案 寻找网络安全感的手抄报 海南软件开发培训机构
0