mysql主从怎么同步
时间 : 2023-08-12 03:26:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL主从复制是一种常见的数据库复制技术,用于将一个MySQL主服务器的数据复制到一个或多个MySQL从服务器。主从复制提供了数据的冗余备份、读写分离和扩展性等优势。下面是MySQL主从同步的步骤:

1. 配置主服务器:

- 在主服务器的配置文件my.cnf中启用二进制日志(binlog)。可以通过在my.cnf文件中添加如下配置来启用: `log_bin = /var/log/mysql/mysql-bin.log`。

- 重启主服务器以使配置生效。

2. 创建用于主从同步的用户:

- 在主服务器上创建新的用户,用于主从同步。可以使用如下命令创建用户并分配权限:

```

CREATE USER 'repl_user'@'slave_ip' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'slave_ip';

FLUSH PRIVILEGES;

```

- 其中,repl_user是用于同步的用户名,slave_ip是从服务器的IP地址,password是密码。

3. 获取主服务器的状态信息:

- 在主服务器上执行如下命令获取主服务器的状态信息:

```

SHOW MASTER STATUS;

```

- 记录下这个命令返回的文件名和位置信息,后续需要在从服务器上使用。

4. 配置从服务器:

- 在从服务器的配置文件my.cnf中添加以下配置:

```

server-id = 2

relay-log = /var/log/mysql/mysql-relay-bin.log

log_slave_updates = 1

```

`server-id`配置从服务器的唯一标识,`relay-log`配置从服务器的中继日志位置,`log_slave_updates`配置从服务器是否将从主服务器收到的更新写入自己的二进制日志中。

5. 启动从服务器:

- 启动从服务器并登录MySQL。

- 执行如下命令配置从服务器与主服务器的连接及同步信息:

```

CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_position;

```

其中,master_ip是主服务器的IP地址,repl_user和password是在主服务器上创建的用于同步的用户和密码,master_log_file和master_log_position是第三步中获取的主服务器状态信息。

6. 开启从服务器的主从同步:

- 在从服务器上执行以下命令开启主从同步:

```

START SLAVE;

```

- 可以使用如下命令检查从服务器的状态是否正常:

```

SHOW SLAVE STATUS\G;

```

如果`Slave_IO_Running`和`Slave_SQL_Running`字段的值都为`Yes`,则表示主从同步已成功启动。

7. 测试主从同步:

- 在主服务器上进行一些数据操作,例如插入、更新或删除数据。

- 在从服务器上查询这些数据,如果查询结果与主服务器一致,则表示主从同步正常。

通过以上步骤,可以实现MySQL主从同步。请注意,主从复制可以是一对一的,也可以是一对多的。需要注意的是,主从同步只能实现单向的数据复制,而且在主服务器上的写操作才会被复制到从服务器上。如果需要双向同步,可以考虑使用MySQL的双主复制或者其他技术。