我正在编写一个脚本来自动配置两个服务器之间的MySQL复制(主/主复制),并且正在寻找一些与MySQL相关的建议.
目标是基本上允许在两个服务器上执行相同的脚本(可能只是提示其他主服务器的IP),并让它完全配置MySQL.其中大部分都很简单,但是一些配置值对于服务器来说是唯一的.服务器完全相同(包括MySQL凭据)
/etc/my.cnf文件有两个对服务器唯一的设置,有一个server-id和一个auto-increment-offset.
server-id是否需要以任何顺序启动或连续?因为如果没有,那么我只是从服务器主机名中获取数值(它就像appdb-stg-m01,所以我可以抓住01,或者任何数字,因为那将是唯一的),甚至是最后一个服务器IP地址中的八位字节……这样就够了吗?
那么对于自动增量偏移,这两个服务器上的设置是否相同?我把它设置在第一个主设备上的1,然后设置为2设置在另一个主设备上.我从一些在线教程中获得了这些值,但是他们没有解释为什么它们不同.
然后对于CHANGE MASTER TO命令中使用的值…它需要MASTER_LOG_FILE和MASTER_LOG_POS …
我们可以假设这些服务器相对较新,没有现有的数据库.所以我认为只需将MASTER_LOG_FILE重置为mysql-bin.000001即可,但是id需要删除其他mysql-bin.来自/ var / lib / mysql,以及/var/lib/mysql/mysql-bin.index.这样就够了吗?
我有点挂断的唯一其他设置是MASTER_LOG_POS ……有没有办法自己设置?我试图让这个尽可能最简单,所以连接到另一个mysql服务器并查看SHOW MASTER STATUS的输出是我喜欢远离的东西.有没有办法将它重置为313?
谢谢!
解决方法:
我试图评论,但答案开始变长.
我们必须牢记MySQL主 – 主关系的一般想法是,我们在复制工作时,我们现在有两台服务器可能同时或在不同时间写入相同的记录.
因此,记住这一点,自动增量偏移需要不同 – 它们必须是1和2,因为ideia是生成不同的记录号(即没有冲突).因此,其中一个主人创建的记录将是偶数,而另一个是奇数,因此他们不能同时创建冲突的记录号.因此,例如第一个主数据生成记录1,3,5,7,依此类推,第二个主数据生成2,4,6,8 ……
在涉及服务器ID的内容中,它们必须是不同的.传统上人们使用1和2,但这不是必需的.我认为他们不能0,不确定.
最后,对于MASTER_LOG_FILE和MASTER_LOG_POS,您可以尝试采用默认值;然而,它绝不是假设事物的最佳想法,更重要的是,您可能希望重用路由以在任何事件的情况下再次建立主 – 主关系,并且因此在代码重用的名称中,它将是更有用的是连接到远程MySQL并获得正确的值.
关于自动化事物的另一个角度,您可以在此处找到Ansible模块页面mysql_replication的链接
这里我以前的答案将为您提供有关Ansible Linux equivalent to PowerShell’s “one-to-many” remoting的线索