# MySQL 集群(一）

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/21061.html | 发布：2023-06-06 | 更新：2023-06-06 | 分类：建站教程

## 一、概述

 

一主多从，可以缓解读的压力，但是一旦主宕机了，就不能写了,所以我们可以采用双主双从架构来改进它的不足。

 

## 二、双主双重架构图

 

架构规划

 
 
- 主master 3307 —> 从slave 3309 
- 主master 3308 —> 从slave 3310 
- 3307 <—> 3308 互为主从 
- 2个写节点，每个写节点下又是2个读节点 
- ## 三、环境配置

 

**A、在MySQL主服务器3307配置文件my.cnf里面加入** 
- log-bin=mysql-bin  
server-id=3307 
- **B、在MySQL主服务器3308配置文件my.cnf里面加入** 
- **log-bin=mysql-bin  
server-id=3308** 
- **C、在MySQL从服务器3309配置文件my.cnf里面加入** 
- **server-id=3309** 
- **D、在MySQL从服务器3310配置文件my.cnf里面加入** 
- **server-id=3310** 
- **E、在第一台主服务器3307的my.cnf文件增加如下配置** 
- **auto_increment_increment=2  
auto_increment_offset=1 #不一样的点 相当于起始值  
log-slave-updates  
sync_binlog=1** 
- **F、在第二台主服务器3308的my.cnf文件增加如下配置** 
- **auto_increment_increment=2  
auto_increment_offset=2 #不一样的点 相当于起始值  
log-slave-updates  
sync_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=3  
**log-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 服务，启动时指定配置文件 
- ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3307/my.cnf &  
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3308/my.cnf &  
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3309/my.cnf &  
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3310/my.cnf &

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
