mysql主从复制

it2025-04-16  8

一 主从复制原理

大致步骤如下:

主服务器(master)把数据更改记录到二进制日志(binlog)中从服务器(slave)把主服务器的二进制日志复制到自己的中继日志(relay log)中从服务器重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性

涉及的线程: MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:

主节点 binary log dump 线程

当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。

从节点I/O线程

当从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。

从节点SQL线程

SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

二 主服务器配置

在mysql的my.cnf文件最后添加

[mysqld] log-bin=master-binlog binlog_format=mixed server-id=1

重启 mysql -uroot -p输入密码进入mysql 使用 show master status \G查看状态 使用 show variables like ‘%log_bin%’ 查看配置情况

三 从服务器配置

在mysql的my.cnf文件最后添加

[mysqld] relay_log=salve-relay-log server-id=2

重启 mysql -uroot -p输入密码进入mysql stop slave; 关闭slave(如果你以前配置过主从的话,一定要先关闭) 配置主服务器:

change master to master_host='176.123.123.111', master_port=3306, master_user='root', master_password='123456', master_log_file='master-binlog.000001', //查看主服务器得到 看上图 master_log_pos=154 //查看主服务器得到 看上图

start slave; 启动从服务器 show slave status; 查看是否配置成功

最新回复(0)