在两台服务器上自动设置和配置主/主复制

在两台服务器上自动设置和配置主/主复制

我正在编写一个脚本来自动配置两台服务器之间的 MySQL 复制(主/主复制),并且正在寻找一些与 MySQL 相关的建议。

目标是基本上允许在两台服务器上执行相同的脚本(可能只是提示输入另一台主服务器的 IP),并让它完全配置 MySQL。其中大部分都非常简单,但一些配置值对于服务器来说是唯一的。服务器几乎相同(包括 MySQL 凭据)

/etc/my.cnf文件有两个服务器特有的设置,其中一个服务器 ID自动增量偏移

是否服务器 ID需要以任意顺序开始还是连续的?因为如果没有,那么我只是要从服务器主机名中获取数值(类似于appdb-stg-m01,所以我可以获取 01 或任何数字,因为它是唯一的),甚至是服务器 IP 中的最后一个八位字节地址……这样就够了吗?

那么对于自动增量偏移,这两个服务器上不能设置一样吗?我把它设置为1在第一个主人上,然后2在另一。我从一些在线教程中获得了这些值,但他们没有解释为什么它们不同。

然后对于中使用的值将主控更改为命令...它需要主日志文件MASTER_LOG_POS...

我们可以假设这些服务器相对较新,上面没有现有的数据库。所以我想只要重置主日志文件mysql-bin.000001就足够了,但是 id 需要删除其他mysql-bin。?/var/lib/mysql,以及来自/var/lib/mysql/mysql-bin.index。这样就够了吗?

我有点挂断的唯一其他设置是MASTER_LOG_POS...有办法自己设置吗?我试图让这个过程尽可能简单,所以连接到另一个 mysql 服务器并查看输出是SHOW MASTER STATUS我想远离的事情。有没有办法将其重置为313

谢谢!

答案1

我试图发表评论,但答案开始变得很长。

对于 MySQL 主主关系,我们必须牢记的一般思想是,在复制工作的情况下,我们现在有两个服务器可能同时或在不同时间写入相同的记录。

所以记住这一点,自动增量偏移需要不同 - 它们必须是 1 和 2 因为想法是生成不同的记录号(即没有冲突)。因此,其中一位大师创建的记录将为偶数,而另一位大师创建的记录将是奇数,因此他们不能同时创建冲突的记录号。因此,例如第一个主节点生成记录 1,3,5,7 等,第二个主节点生成记录 2,4,6,8...

在涉及服务器 ID 的方面,它们只需不同即可。传统上人们使用 1 和 2,但这不是必需的。我思考他们不能是 0,不确定。

最后,对于MASTER_LOG_FILE和MASTER_LOG_POS,您可以尝试采用默认值;然而,假设事情永远不是最好的想法,更重要的是,您可能希望重用路由以在发生任何事件时再次建立主主关系,因此以代码重用的名义,这将是连接到远程 MySQL 并获取正确的值更有用。

对于自动化事物的另一个角度,您可以在这里找到 Ansible 模块页面的链接mysql_复制

这是我以前的回答,可以为您提供有关 Ansible 的线索Linux 相当于 PowerShell 的“一对多”远程处理

相关内容