mysql 主从复制
mysql 主从复制原理:
MySQL 主从复制是一种将数据从一个 MySQL 数据库(主库)复制到一个或多个其他 MySQL 数据库(从库)的机制,常用于数据备份、读写分离等场景。其原理主要涉及三个线程(主库的二进制日志转储线程和从库的 I/O 线程、SQL 线程)以及二进制日志(Binary Log)和中继日志(Relay Log)
工作过程:
1. 主库配置与准备:
- 开启二进制日志:在主库的配置文件(如
my.cnf
)中,需要启用二进制日志功能,配置项通常为log - bin = /var/log/mysql/mysql - bin.log
,重启 MySQL 服务使配置生效。这一步确保主库会记录所有修改数据库的操作到二进制日志。 - 创建用于复制的用户:在主库上执行 SQL 语句创建一个专门用于从库连接复制的用户,例如
CREATE USER'replication_user'@'%' IDENTIFIED BY 'password';
,然后赋予该用户REPLICATION SLAVE
权限,即GRANT REPLICATION SLAVE ON *.* TO'replication_user'@'%';
。这里'%'
表示允许任何 IP 地址的从库连接,实际应用中可替换为具体的 IP 地址以增强安全性。 - 获取主库状态信息:执行
SHOW MASTER STATUS;
,得到主库当前二进制日志文件名(如mysql - bin.000001
)和日志位置(Position,如154
),这些信息将用于从库配置连接主库。
2. 从库配置与连接主库
- 配置主库连接信息:在从库上使用
CHANGE MASTER TO
语句配置主库连接信息
3. 主库写入操作与日志记录
- 当主库执行数据修改操作(如
INSERT
、UPDATE
、DELETE
)时,这些操作会被记录到二进制日志中。每个修改操作以事件(event)的形式记录,如Query_event
记录SQL
语句执行的事件。例如,执行INSERT INTO users (name, age) VALUES ('John', 25);
,主库会将这个插入操作记录到二进制日志。
4. 主从库线程协作进行数据同步
- 主库二进制日志转储线程:从库连接主库后,主库创建二进制日志转储线程。该线程负责监听二进制日志的变化,一旦有新的事件写入二进制日志,它会将这些新事件发送给从库的 I/O 线程。
- 从库 I/O 线程:从库的 I/O 线程接收主库二进制日志转储线程发送的二进制日志事件,并将其写入从库的中继日志(relay log)。中继日志类似于主库的二进制日志,只是它是从库用于临时存储主库发来的日志事件的地方。
- 从库 SQL 线程:从库的 SQL 线程读取中继日志中的事件,并按照事件顺序在从库上重新执行这些操作,从而使从库的数据与主库保持一致。例如,对于主库上执行的
INSERT INTO users (name, age) VALUES ('John', 25);
操作,从库的 SQL 线程会在从库的users
表中执行相同的插入操作。
5. 复制状态监控与维护
- 查看从库状态:在从库上执行
SHOW SLAVE STATUS \G;
命令,可以查看从库复制的详细状态信息。关键参数如Slave_IO_Running
和Slave_SQL_Running
都应为Yes
,表示 I/O 线程和 SQL 线程运行正常;Seconds_Behind_Master
表示从库落后主库的时间(单位为秒),理想情况下该值应为 0 或接近 0。 - 故障处理与维护:如果复制过程中出现问题,如网络中断、主从库版本不兼容等,可能导致复制中断。此时需要根据错误信息进行排查和修复,例如网络恢复后,可能需要在从库上重新启动复制进程
START SLAVE;
。
具体实现基于binlog:
安装MySQL: yum install -y mysql-server
主库操作:
vim /etc/my.cnf.d/mysql-server.cnf
写入最后一行
从库:
查看是否成功(看图中最后两个是为yes)
另一台也是如此
验证: 在主库上创建db1在从库上查看
基于gtid的主从同步:
主库:
开启gtid:vim /etc/my.cnf.d/mysql-server.cnf
(从库也是一样)
重启服务:systemctl restart mysqld.service
查看gtid状态
从库:查看是否成功(看图中最后两个是为yes)
另一台也是一样(另一种写法)
验证: 在主库上创建db2在从库上查看
原文地址:https://blog.csdn.net/2201_75988692/article/details/145243460
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!