MySQL 8 主从复制
什么是主从复制?
主从复制是指将一个 MySQL 数据库服务器(主服务器)的数据同步到一个或多个其他 MySQL 数据库服务器(从服务器)的过程。主从复制是常见的数据库架构设计模式,用于提供数据冗余、增加读取性能和实现高可用性。
在主从复制中,主服务器持续地将数据变更记录到二进制日志(binary log)中,并将这些日志传输到从服务器。从服务器将这些日志应用到自己的数据库中,以保持与主服务器的数据一致性。
主从复制的优势
主从复制提供了以下优势:
-
数据冗余和可靠性:主从复制可以将数据复制到多个从服务器上,即使主服务器发生故障,从服务器仍然可以提供服务和数据。
-
读写分离:主服务器负责处理写操作,而从服务器负责处理读操作,从而分担了主服务器的负载,提高了整个数据库系统的性能。
-
数据备份:从服务器可以用作主服务器的实时备份,当主服务器出现故障时,可以快速切换到从服务器。
如何设置主从复制?
设置主从复制需要完成以下步骤:
-
配置主服务器
在主服务器上进行如下配置:
-
启用二进制日志(binary log):在 MySQL 配置文件中(通常是
my.cnf
),将log_bin
设置为ON
。这将启用主服务器的二进制日志功能。 -
创建用于复制的用户:使用 MySQL 客户端连接到主服务器,并创建用于复制的用户,并赋予
REPLICATION SLAVE
权限。 -
记下主服务器的二进制日志文件名和位置:使用
SHOW MASTER STATUS
命令,记录下File
和Position
字段的值,以便在从服务器上配置复制。
-
-
配置从服务器
在从服务器上进行如下配置:
-
配置从服务器连接到主服务器:使用 MySQL 客户端连接到从服务器,并使用
CHANGE MASTER TO
命令配置从服务器连接到主服务器。指定主服务器的地址、用户名和密码,并提供主服务器的二进制日志文件名和位置。 -
启动从服务器的复制进程:使用
START SLAVE
命令启动从服务器的复制进程。
-
-
验证复制是否正常工作
-
使用
SHOW SLAVE STATUS
命令检查从服务器的状态。确保Slave_IO_Running
和Slave_SQL_Running
字段的值为YES
,表示复制进程正在正常运行。 -
在主服务器上进行一些数据变更操作,然后在从服务器上查询相同的数据,确保数据已经成功复制到从服务器上。
-
示例代码
下面是一个示例配置主从复制的代码:
### 配置主服务器
1. 打开`my.cnf`配置文件,并添加以下行:
```ini
[mysqld]
log-bin=mysql-bin
server-id=1
-
重启主服务器以使配置生效。
-
使用 MySQL 客户端连接到主服务器,并执行以下命令:
CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; FLUSH PRIVILEGES;
-
使用以下命令记录下主服务器的二进制日志文件名和位置:
SHOW MASTER STATUS;
配置从服务器
-
打开
my.cnf
配置文件,并添加以下行:[mysqld] server-id=2
-
重启从服务器以使配置生效。
-
使用 MySQL 客户端连接到从服务器,并执行以下命令:
CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='主服务器的二进制日志文件名', MASTER_LOG_POS=主服务器的二进制日志位置; START SLAVE;
-
使用以下命令检查从服务器的状态:
SHOW SLAVE STATUS;