从另一个从设备创build一个MySQL从设备,但将其指向主设备

问题

我有两个服务器,主( A )和奴隶( B )之间的MySQL复制设置。 我需要添加一个新的奴隶混合( C )。 我想要这个奴隶从主人直接得到它的更新,我不想从奴隶链复制。 但是,master是“热门”,我通常使用Xtrabackup来创buildmaster的完整备份,但是这将locking好10分钟,因为数据库大小约为20GB。

可能的scheme

B上的FLUSH TABLES WITH READ LOCK,在B上使用SHOW SLAVE STATUS,写下二进制日志和位置。 然后使用Xtrabackup备份数据库,将备份发送到C并使用它创build从服务器,并将复制设置为指向A ,同时记下我刚刚记下的二进制日志logging位置。

有没有更好的方法,不需要我lockingB这么久? 或者更容易自动化的东西?

嘿,我知道一个疯狂的方法来创build一个奴隶,而不增加任何操作的主(ServerA)或奴隶(ServerB)

步骤1)build立一个新的服务器(ServerC)

步骤2)在ServerC上,安装MySQL(与ServerB相同的版本)

步骤3)在ServerC上,服务mysql停止

步骤4)从ServerB复制/etc/my.cnf到ServerC

步骤5)在ServerC上,将server_id更改为与ServerA和ServerB不同的值

步骤6)将ServerB上的rsync / var / lib / mysql复制到ServerC

步骤7)当rsync完成时,运行“STOP SLAVE;” 在ServerB上

步骤8)ServerB上的rsync / var / lib / mysql到ServerC

步骤9)在ServerB上,运行“START SLAVE;”

步骤10)在ServerC上,服务mysql启动

步骤11)在ServerC上,运行“START SLAVE;” (如果skip-slave-start位于/etc/my.cnf中,则执行此操作)

试一试 !!!

顺便说一句,我有最大的信心,这将工作,因为我刚刚在过去的2天为客户做了这个。 客户端在从站上有2.7TB的数据。 我从rsyncd到另一台服务器,而奴隶仍然是活跃的。 rsync花了11个小时。 然后我跑了STOP SLAVE; 在第一个奴隶,并再次运行rsync。 又过了一个小时。 然后我执行上述步骤,一切都完成了。

当我们添加一个奴隶到我们的混音,我们做以下几点:

  • 把一个奴隶离线
  • 复制数据库数据目录到新的从站(从站设置-binlog位置,主控主机等 – 将是正确的,因为我们从奴隶复制)
  • 启动原来的奴隶
  • 修改my.cnf中的server-id为新的slave
  • 开始新的奴隶

你有“负载数据从主”选项,但是非常不鼓励。

你在你的系统上每晚/每周备份吗? 如果是这样,还要注意备份的位置,然后您可以使用该备份来build立一个新的从站。 只要保留它,并允许它启用一段时间。

我做了@RolandoMySQLDBA的build议,但也增加了一个6'8'的步骤(这解决了什么@Hussain Tamboli评论):

步骤1)build立一个新的服务器(ServerC)

步骤2)在ServerC上,安装MySQL(与ServerB相同的版本)

步骤3)在ServerC上,服务mysql停止

步骤4)从ServerB复制/etc/my.cnf到ServerC

步骤5)在ServerC上,将server_id更改为与ServerA和ServerB不同的值

步骤6)将ServerB上的rsync / var / lib / mysql复制到ServerC

步骤6') ServerB上的rsync / var / log / mysql到ServerC

步骤7)当rsync完成时,运行“STOP SLAVE;” 在ServerB上

步骤8)ServerB上的rsync / var / lib / mysql到ServerC

步骤8') ServerB上的rsync / var / log / mysql到ServerC

步骤9)在ServerB上,运行“START SLAVE;”

步骤10)在ServerC上,服务mysql启动

步骤11)在ServerC上,运行“START SLAVE;” (如果skip-slave-start位于/etc/my.cnf中,则执行此操作)

您需要更改auto.cnf中的从站uuid,以便主站可以区分这两个从站。