# mysql主从复制&&读写分离

#### 主服务器配置
修改配置文件，编辑MySQL的配置文件（通常是/etc/my.cnf或/etc/mysql/my.cnf），重启MySQL服务，使配置生效。

```cnf

# 启用二进制日志
log-bin=master-binlog

# 二进制日志格式
binlog-format=row

#设置服务器ID，确保每个服务器的ID唯一。
server-id=1

# 数据库名（可选）：
# binlog-do-db=指定需要复制的数据库。

# 设置中继日志
relay-log=relay-bin

```
#### 创建复制用户

创建复制用户：在主服务器上创建一个复制用户，并授权复制权限

```sql

CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';  
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';  
FLUSH PRIVILEGES;

```



#### 从服务器配置

修改配置文件，编辑从服务器的MySQL配置文件，设置完成后重启MySQL服务

```cnf


# 确保服务器ID与主服务器不同
# 其他相关配置可根据需要设置
server-id=2

# 启用二进制日志
log-bin=master-binlog

# 二进制日志格式
binlog-format=row

# 设置中继日志
relay-log=relay-bin

# 设置从库为指读模式
# read-only=1

```



#### 查看主服务二进制日志状态

在主服务器上执行以下命令，记录二进制日志文件名和位置，这些信息将用于从服务器的配置

```sql
SHOW MASTER STATUS;

```
#### 配置从服务器的主复制配置信息

在从服务器上将执行，将配置复制指向主服务器

```sql
CHANGE MASTER TO  
MASTER_HOST='10.64.100.91',  
MASTER_USER='replicator',  
MASTER_PASSWORD='password',  
MASTER_LOG_FILE='binlog.000009',  
MASTER_LOG_POS=154;
```




```sql
# 启动复制
START SLAVE;

# 验证复制状态：
SHOW SLAVE STATUS\G;

# 主要是2个

Slave_I0 Running，YES
Slave SqL Rurning，YES

```