MySQL 8的主从复制是一种数据库复制技术,它允许将一个MySQL数据库服务器(称为主服务器)上的数据自动复制到一个或多个其他MySQL服务器(称为从服务器)上。
mysql主从复制的原理可以简单概括为以下几个步骤:
- 配置主服务器:在主服务器上打开二进制日志功能,这将记录所有的数据库更新操作(如插入、更新、删除)到二进制日志文件中。
- 配置从服务器:在从服务器上设置与主服务器相同的配置文件,并指定主服务器的地址和认证信息。
- 启动复制过程:从服务器连接到主服务器,并发送一个请求将自己标识为一个从服务器。主服务器接受该请求,并开始将二进制日志文件中的更新操作发送给从服务器。
- 复制数据:主服务器将二进制日志的内容发送给从服务器,从服务器接收并执行这些更新操作,以使自己的数据与主服务器保持同步。
- 处理复制延迟:由于网络延迟或从服务器的负载等原因,从服务器上的数据可能会有一定的延迟。MySQL提供了一些机制来处理延迟,例如增量备份和并行复制。
mysql通过主从复制,可以实现以下几个优势:
- 数据备份和恢复:主服务器上的数据可以自动地复制到从服务器上,从服务器可以用于备份和恢复数据。
- 数据分发和负载均衡:可以将读操作分发到从服务器,减轻主服务器的负载,提高整体性能。
- 高可用性:如果主服务器发生故障,可以将从服务器提升为新的主服务器,确保系统的可用性。
总之,MySQL 8的主从复制提供了一种可靠的数据复制机制,可以实现数据备份、负载均衡和高可用性等功能。
MySQL 8的主从复制集群配置示例
说明:
IP | 用途 |
192.168.1.10 | 主服务器 |
192.168.1.20 | 从服务器 |
完整的MySQL 8主从复制集群配置示例,包括创建复制用户、设置MASTER_LOG_FILE和MASTER_LOG_POS,以及涉及的配置文件修改。
在主服务器上进行配置:
- 修改主服务器的配置文件my.cnf(/etc/mysql/my.cnf):
sudo vi /etc/mysql/my.cnf
- 确保以下配置项已启用:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
- 重启MySQL服务,使配置生效:
sudo systemctl restart mysql
2)在主服务器上创建复制用户:
- 使用以下命令登录到MySQL服务器:
mysql -u root -p
- 创建用于复制的用户,并授予复制权限:
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
请将 'your_password' 替换为您设置的复制用户密码。
3)在主服务器上查找并设置MASTER_LOG_FILE和MASTER_LOG_POS:
登录到主服务器上的MySQL:mysql -u root -p
运行以下命令以获取当前二进制日志文件和位置:
SHOW MASTER STATUS;
记下结果中的File和Position的值。这将是从服务器上设置复制的起点。
4)在从服务器上进行配置:
- 修改从服务器的配置文件my.cnf(/etc/mysql/my.cnf):
sudo vi /etc/mysql/my.cnf
- 确保以下配置项已启用,并将server-id设为不同的唯一值(例如2、3和4):
server-id=2
log_bin=mysql-bin
relay_log=slave-relay-bin
binlog-format = ROW
replicate-ignore-db=mysql,information_schema,performance_schema #不同步的数据库
read_only=ON
- 重启MySQL服务,使配置生效:
sudo systemctl restart mysql
5)在从服务器上启动复制过程:
- 使用以下命令登录到MySQL服务器:
mysql -u root -p
- 配置主服务器的二进制日志文件和位置,以及复制用户:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123456;
请将 'replication_user' 和 'your_password' 替换为主服务器的复制用户和密码,mysql-bin.000001 和 123456 分别是主服务器上二进制日志文件和位置。
- 启动复制进程:
START SLAVE;
- 检查复制进程状态:
SHOW SLAVE STATUS\G
确保 "Slave_IO_Running" 和 "Slave_SQL_Running" 的值为 "Yes"。
这样,您就完成了MySQL 8主从复制集群的配置。请根据您的实际需求进行适当的修改和调整。