MySQL之主从复制

主从复制的原理

  • 原理图
    在这里插入图片描述

  • 主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。

  1. binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中。
  2. I/O 线程 :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。
  3. SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。
  • 步骤
    在这里插入图片描述

主从复制的原则

  • 一个slave只能有一个master
  • 一个master可以有多个slave
  • 一个slave只能有一个唯一的服务器ID

主从复制的问题

  • 延时

一主一从配置

前提条件:MySQL数据库版本必须一致

主机配置(Windows)

  • 我的ip:192.168.128.110

配置均在my.ini[mysqld]结点下

[mysqld] 
# 设置主服务器唯一ID[必须]
server-id=1
# 启用二进制日志[必须] log-bin=数据库路径\mysqlbin
log-bin=G:\Programs\mysql-8.0.18\data\mysqlbin
# 启用错误日志[可选] 
log-err=G:\Programs\mysql-8.0.18\data\mysqlerr
# 设置mysql的安装目录 
basedir=G:\Programs\mysql-8.0.18
# 设置临时目录[可选]
tmpdir=G:\Programs\mysql-8.0.18
# 设置主机读写均可以
read-only=0
# 设置不需要备份的数据库[可选]
binlog-ignore-db=mysql
# 设置需要备份的数据库[可选]
# binlog-do-db=layman

从机配置(Linux)

[mysqld] 
# 设置主服务器唯一ID[必须]
server-id=2
# 启用二进制日志[可选](linux环境采用默认值即可)
log-bin=mysql-bin

Windows主机为从机配置账户并授权

GRANT replication SLAVE ON *.* TO 'layman'@'192.168..128.115' IDENTIFIED BY '123456'; -- 授权
FLUSH PRIVILEGES; -- 刷新
SHOW MASTER STATUS; -- 查看主机状态

在这里插入图片描述
记录File和Position的值

  • File : binlog.000011
  • Position : 18165

Linux从机配置

  • 我的ip:192.168.128.115

  • 无需选择数据库,直接在命令行登陆界面后执行

CHANGE MASTER TO MASTER_HOST='192.168.128.110',
MASTER_USER='layman',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='binlog.000011',
MASTER_LOG_POS=18165
  • 如果出现以下报错,请先停止同步
    在这里插入图片描述
START SLAVE; -- 启用slave
SHOW SLAVE STATUS\G -- 查看状态

在这里插入图片描述

  • 此时在主机上新建库,表,插入数据都会同步至从机

停止主从复制

STOP SLAVE; -- 停止主从复制(在从机上操作)

主从复制的优势(读写分离)

  1. 主服务器处理写操作以及实时性要求比较高的读操作

  2. 从服务器处理读操作

读写分离能够提高系统性能

  • 主从服务器负责各自的读和写,极大程度缓解锁竞争
  • 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销
  • 增加冗余,提高可用性
posted @ 2021-02-20 22:41  layman~  阅读(19)  评论(0编辑  收藏  举报