1. 概述
MySQL的主从复制是指将一台MySQL服务器的数据自动同步到另外一台或多台MySQL服务器上,从而实现数据的备份和负载均衡。
2. 主从复制的实现流程
2.1 主库
主库需要开启二进制日志,以记录所有更新语句,并进一步把日志传给从库。在MySQL服务配置文件my.cnf中开启二进制日志功能。
[mysqld]
log-bin=mysql-bin
同时,启用一个复制账号并授权其访问主库。
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password';
FLUSH PRIVILEGES;
查看主库状态。
SHOW MASTER STATUS;
命令执行后会得到一个position和一个文件名,用于后续从库的配置。
2.2 从库
从库基于主库的二进制日志进行数据同步,实现全量复制和增量更新。从库需要连接到主库,以获取主库的二进制日志信息。
修改MySQL配置文件my.cnf,以配置从库。
[mysqld]
server-id=2 # 从库唯一ID
log-bin=mysql-bin # 开启二进制日志
relay-log=relay-bin
log-slave-updates=1 # 支持从库的主从复制
read-only=1 # 从库设置为只读
启动从库并连接至主库。
CHANGE MASTER TO
MASTER_HOST='192.168.1.1', # 主库IP地址
MASTER_PORT=3306, # 主库端口
MASTER_USER='slave_user', # 复制账号
MASTER_PASSWORD='slave_password', # 复制密码
MASTER_LOG_FILE='mysql-bin.000005', # 主库二进制日志文件
MASTER_LOG_POS=107 # 主库二进制日志位置
执行以下命令,使从库开始复制主库。
START SLAVE;
通过检查从库的状态可以查看从库复制主库的进度。
SHOW SLAVE STATUS;
3. 主从复制的使用场景
3.1 数据备份
主从复制可以让主库的数据备份到从库,从而在主库出现故障时,从库可以指定为新的主库,并继续服务。
3.2 负载均衡
主从复制还提供了一种简单的负载均衡方式。主库负责写操作,而从库接管读操作,分摊主库的负载,提高MySQL服务器的整体性能。
4. 总结
本文详细介绍了MySQL的主从复制功能及其实现流程。使用主从复制,可以实现数据的备份和负载均衡,提高MySQL服务器的整体性能。