双主架构
双主的搭建建立在主从的基础上,参考: mysql主从的docker搭建.
配置:
- 在3308上,为3307申请从客户端账号权限:
GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'repluser'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
- 在3307上,设置把3308作为主节点的配置、起始点:
再次查看就会看到slave的两个进程出现了。show PROCESSLIST; #先在3307上看是没有slave的两个进程的 change master to master_host='172.17.0.2',master_port=3306,master_user='repluser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154; start slave;
Q & A:
Q1:双主可以同时写吗?
可以。由于设置了:
auto_increment_increment=2
auto_increment_offset=1
所以,主从的主键是不冲突的,insert后mysql分配不同的主键,支持同时写入,互相同步也可以。
Q2:如何设置auto_increment_increment自增长?
一般设置为主机数量,但也要考虑未来的扩容问题。建议设置大一些,例如:20、100。
Q3:双主配置如上,多主如何设置?
多主和双主一样。例如:三主只是再配置两次双主。现在的双主A、B,分别和第三台C配置双主,A-C双主,B-C双主。
总结:三主拓扑结构是环状,多主是网状结构。