mysql主从复制

一 主从复制原理

在这里插入图片描述
大致步骤如下:

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

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

  1. 主节点 binary log dump 线程

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

  1. 从节点I/O线程

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

  1. 从节点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; 查看是否配置成功

原文地址:https://www.cnblogs.com/paper-man/p/13284641.html