一主多从,可以缓解读的压力,但是一旦主宕机了,就不能写了,所以我们可以采用双主双从架构来改进它的不足。
主master3307—>从slave3309
主master3308—>从slave3310
3307<—>3308互为主从
2个写节点,每个写节点下又是2个读节点
A、在MySQL主服务器3307配置文件my.cnf里面加入
log-bin=mysql-binserver-id=3307
B、在MySQL主服务器3308配置文件my.cnf里面加入
log-bin=mysql-binserver-id=3308
C、在MySQL从服务器3309配置文件my.cnf里面加入
server-id=3309
D、在MySQL从服务器3310配置文件my.cnf里面加入
server-id=3310
auto_increment_increment=2auto_increment_offset=1#不一样的点相当于起始值log-slave-updatessync_binlog=1
F、在第二台主服务器3308的my.cnf文件增加如下配置
auto_increment_increment=2auto_increment_offset=2#不一样的点相当于起始值log-slave-updatessync_binlog=1
G、配置项说明
auto_increment_increment
控制主键自增的自增步长,用于防止Master与Master之间复制出现重复自增字段值,通常auto_increment_increment=n,有多少台主服务器,n就设置为多少
auto_increment_offset=1
设置自增起始值,这里设置为1,这样Master的auto_increment字段产生的数值是:1,3,5,7,…等奇数ID
注意auto_increment_offset的设置,不同的master设置不应该一样,否则就容易引起主键冲突,比如master1的offset=1,则master2的offset=2,master3的offset=3log-slave-updates
在双主模式中,log-slave-updates配置项一定要配置,否则在master1(3307)上进行了更新数据,在master(3308)和slave1(3309)上会更新,但是在slave2(3310)上不会更新
sync_binlog
表示每几次事务提交,MySQL把binlog缓存刷进日志文件中,默认是0,最安全的是设置为1。sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
从库只开启log-bin功能,不添加log-slave-updates参数,从库从主库复制的数据不会写入log-bin日志文件里。??开启log-slave-updates参数后,从库从主库复制的数据会写入log-bin日志文件里。这也是该参数的功能。??直接向从库写入数据时,是会写入log-bin日志的。??在自动生成主键的时候,会在已生成主键的基础上按照规则生成,即比存在的值大
进入/usr/local/mysql-5.7.24/bin目录,重启四个MySQL服务,启动时指定配置文件
https://www.mfisp.com/mysqld_safe--defaults-file=/usr/local/mysql-5.7.24/data/3307/my.cnf&https://www.mfisp.com/mysqld_safe--defaults-file=/usr/local/mysql-5.7.24/data/3308/my.cnf&https://www.mfisp.com/mysqld_safe--defaults-file=/usr/local/mysql-5.7.24/data/3309/my.cnf&https://www.mfisp.com/mysqld_safe--defaults-file=/usr/local/mysql-5.7.24/data/3310/my.cnf&
标签: