这是我的第一个问题,英语不是我的母语,但我会尽力解释。
我有一个在提供商基础设施中运行的具有公共 IP 地址的主 MySQL 服务器,并且我想在我的办公室中运行一个本地 MySQL 从属服务器,它将复制所有数据以用于测试目的。
设置复制工作完美,我创建了一个 SSH 隧道,让我的从属服务器读取来自主服务器的 binlog,这里一切都很好。
我的问题是设置主服务器的数据。通常,当我想将数据从主服务器加载到同一网络上的任何从服务器时,我会在主服务器上运行以下命令:
mysqldump 'master' --master-data=1 | mysql 'slave'
但这里我无法为从属设备获取任何 IP,因为它位于我办公室的一系列 NAT 路由器后面...
有人有解决方案吗,因为我无法停止主服务器,而且上面有大约 50GB 的数据。如果您有其他解决方案可以将“热”数据传输到主服务器到从服务器,我也很感兴趣。
提前感谢您。
答案1
假设你可以通过 ssh 连接到主服务器,那么从从服务器连接怎么样?
ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'
这将在主机上运行 dump 命令,但在本地重新加载它。
答案2
为什么不直接将其转发为一个文件,然后稍后通过scp
或进行传输rsync
?
mysqldump master --master-data=1 >master.dump
在奴隶
mysql <master.dump
或者,mysqldump
在从服务器而不是主服务器上运行该命令。如果没有上述错误,也许它会更好地工作。
提示:也许您应该转储所有数据库而不只是一个?