美文网首页
主从搭建

主从搭建

作者: 指尖架构141319 | 来源:发表于2020-07-02 13:49 被阅读0次

1.主从同步原理示意图

image.png

默认是异步同步,半同步需要插件!
半同步执行流程:
1.事务请求提交操作执行后,写入maste的binlog,在引擎提交操作之前wait
2.master中的一个event监听事件,监听到binlog有变化,会起dump thread线程
3.dump thread通知slave的io thread线程有事务需要同步
4.slave的relay-log.info中获取slave的binlog文件和position位置告诉给master
5.把master的日志文件和position位置后面的日志同步给slave
6.slave写入relaybin日志,不管后面的写入操作,直接返回给master一个应答信息
7.master执行引擎提交操作
注:如果slave同步异常或者阻塞,应答时间超过10秒,master会执行异步同步操作,后续的请求都会执行异步同步操作,master写入binlog后,dump thread通知slave的io thread,master的引擎提交操作同时进行

2.开启搭建步骤

在安装完mysql服务的基础上(比如:docker)

2.1 添加配置文件到宿主机目录 my.cnf
[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 配置大小写不敏感
lower_case_table_names=1
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能(关键)
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1
  • 重启mysql
docker restart mysql3307
  • 进入mysql
docker exec -it mysql3307 /bin/bash
mysql -uroot -p #在提示下输入密码
  • 给docker slave用户授权
GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'user'@'%' IDENTIFIED BY '123456';

FLUSH PRIVILEGES;

2.1 master 查看二进制日志
show  master status;
image.png
2.2 slave中设置master信息
#将master中的file和position设置到下边语句
change master to master_host='172.16.223.136',master_port=3307,master_user='user',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=625;

2.3 开启slave,启动SQL和IO线程
start slave;
2.4 查看slave的状态
show slave status\G
2.5 查看二进制日志是否开启
show global variables like "%log%";
2.6 查看进程信息
SHOW PROCESSLIST;

下面配置可忽略,至此,上边配置已经完成了主从

2.7 允许root远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;

3.配置半同步模式(after sync)

3.1 加载主节点配置
  • 主库
install plugin rpl_semi_sync_master soname 'semisync_master.so';
  • 从库
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';  

可以一起装。建议一起装,因为会有主从(主主)切换的情景。

  • 查看,确保所有节点都成功加载
show plugins;
3.2 启动半同步

先启用从库上的参数,最后启用主库的参数

  • 从库
set global rpl_semi_sync_slave_enabled = {0|1};   # 1:启用,0:禁止
  • 主库
set global rpl_semi_sync_master_enabled = {0|1};   # 1:启用,0:禁止
#设置最大超时时间,默认为10s,可不设置
set global rpl_semi_sync_master_timeout = 10000;       # 单位为ms

相关文章

  • Mysql主从和故障

    1) 搭建传统的mysql主从 2) 搭建GTID的mysql主从(建议使用基于GTID来搭建主从) 3) IO线...

  • DBA(MySQL)学习-主从复制基础

    1. 主从复制 1.1 介绍 1.2 主从复制的前提(如何搭建主从复制) 2. 搭建主从复制 2.1 搭建多实例 ...

  • 主从复制(基础)

    01,主从复制简介 02,主从搭建简述 03,主从复制搭建(Classic replication) 1 清理主库...

  • Day011-MySQL主从复制

    1. 主从复制介绍 2. 主从复制的前提(搭建主从复制) 3. 搭建主从复制步骤 3.1 准备多实例 3.2 检查...

  • 32主从复制

    职责搭建主从复制,主从原理熟悉,主从的故障处理,主从延迟,主从的特殊架构的配置使用,主从架构的演变 主从复制介绍主...

  • redis集群

    一,主从复制搭建 哨兵

  • mysql 主从复制

    mysql 主从复制 网易数据库 石勇 提纲 什么是主从复制 主从复制的原理 主从复制的用途 主从复制的搭建 主从...

  • 数据库的主从复制

    1.介绍 2.主从复制的前提 3、搭建主从复制

  • 基于Docker搭建MySQL主从复制

    基于Docker搭建MySQL主从复制

  • Redis集群部署-主从集群部署记录

    Redis主从搭建 本文只是用来记录如何快速搭建Redis主从集群,具体的原理等不做过多的阐述 Redis配置文件...

网友评论

      本文标题:主从搭建

      本文链接:https://www.haomeiwen.com/subject/vcdcqktx.html