我需要在DMZ中设置一个MySQL数据库实例,DMZ是安全networking中活动主服务器的只读副本。
MySQL的复制似乎是理想的,除了它的奴隶“拉”从主人的变化。 这意味着在DMZ中的奴隶必须能够打开与主人的连接,这是安全人员不允许的。
我已经开始设置从主站的SSH隧道,但奴隶似乎保持连接打开(即使在调用“SLAVE STOP”后),意味着隧道总是打开(有些挫败安全限制)。
有没有办法强制mysql删除连接,停止mysqld的短?
有没有另外一种方法来实现我没有想到的同样的目标?
从主机到从机的更新需要接近实时(即几分钟延迟是可接受的,但不是更多)。
另一个想法,你所描述的一个小小的变化:
这里的关键是隧道是由主设备创build和销毁的,定期运行更新。
从站与主站保持永久连接,但在发出“停止从站”时closures。
如果你的数据非常小,你可以容忍几分钟的延迟,你可以使用Maatkit的mk-table-sync工具编写脚本。 它将校验你的表格,并找出应用它们的变化。 你可以从主设备上运行,并定期连接到DMZ中的从设备,从安全angular度来看这将更加安全 – 即使攻击者损害了DMZ设备,并用自己的软件完全替代了它们,它们仍然会没有比db的快照更多的访问权限。
这是丑陋的,但仍然 – 如果主人没有太多的事情发生,你可以定期运行在主人(即使每分钟一次):
所以你不需要依赖mysql的复制机制。
您需要考虑到一分钟内可能会有多个由服务器创build的日志文件的事实。
过去我不得不处理类似的事情。 你有几个select。
MySQL复制使用SSL,证书和IP限制。 这很容易设置,你可以locking下来相当不错。 您仍然打开到服务器的连接,但您确实严格控制访问。 安全人员可能不够好。
正如别人提到的,将log-bin文件复制到slave,然后使用mysqlbinlog来获取它们。 我最终使用这个来将一些新的收购转移到公司networking。 然而,这是一个临时措施,我们只用了一个月,并且很less运行。 此外,您将有数据到达DMZ服务器的时间。
使用Mysql Proxy同时写入两个Mysql服务器。 http://dev.mysql.com/downloads/mysql-proxy/index.html这可能会有一些有趣的问题,如果你的架构有怪癖。 缺点,安装和学习的新工具,以及相当不错的testing版。 上行,解决你的大部分问题。
这里有很多很棒的食物。 然而,每个人都在复杂化拼图的不同部分。
mroe说:
…奴隶似乎保持连接打开(即使在调用“SLAVE STOP”后),意味着隧道总是打开…
1.终止一个传入的SSH会话不是从属mysqld的angular色。 (这更接近netcat的隧道工作方式,但这并不是那个地方,所以我们不要混淆这个问题)。主机应该终止连接,因为[a]它起源于[b]它是networking中的一个你希望保护。 如果要终止从端侧的连接,请调用“ kill -s HUP $pid_of_the_sshd_owned_by_mysqlmaster ”。 我会再说一遍,我没有看到使用。
2.为什么你会打电话“ SLAVE STOP ”? 奴隶是奴隶。 既然我们在谈论这个话题,奴隶就永远不应该停下来。 如果从站将被停止,主服务器(见第4.点)或pipe理员应该这样做。
mroe说:从主机到从机的更新需要接近实时(即几分钟的延迟是可以接受的,但不是更多)。
你不能双方都有。 您要么正在运行从IO线程,要么已经过期。
3.不要担心复制内置的“master的binlog位置”。
4.如果你确实每分钟都要断开连接并重新连接,请在主服务器上写一个cron脚本。 它应该做到以下几点:
ssh -N -R 3333:127.0.0.1:3306 [email protected] & mysql -hslave.server -e 'SLAVE START' mysql -hslave.server -e 'show slave status\G'|awk '/Seconds_Behind_Master/{print $2}' sleep 。 研究你的系统,确保它不消耗任何CPU。 mysql -hslave.server -e 'SLAVE STOP' (事实上,如果使用MASTER_CONNECT_RETRY,则从服务器是可选的) kill ssh客户端的pid。 这应该做到这一点。 现在请记住,在这个工作开始之前,你必须准备好复制副本。 既然你提到发出一个SLAVE STOP ,我SLAVE STOP意思是你能够从主机到从机获得一致的备份,并获得CHANGE MASTER命令的日志位置。 我只是补充一点,你需要指定MASTER_HOST='127.0.0.1, MASTER_PORT=3333
显然我没有时间花时间去研究,并且详细解释。 我也试图不要侮辱任何人解释太多。 如果你想要更多的细节,只要问我。