前提条件

  1. 准备3,4,5台虚拟机
  2. 祼装mysql8.0

主从架构

常见两种模式“一主多从”和“级联复制”两种,基本都很简单,都是依赖binlog日志文件进行同步,binlog日志会记录DDL和部分DDL语句,进行同步时从库会重新执行这些语句从而实现主从同步。

步骤1:

配置主/从服务器的server_id,如果不清楚mysql服务器server_id,使用命令 SHOW VARIABLES LIKE 'server_id';可以查询,server_id的值没有严格规定,保证全局唯一性即可,server_id值默认是1。

debian服务器编辑命令如下:nano /etc/mysql/my.conf ,加入下面节点,假设主库设置1,从库设置2,保存之后重启数据库systemctl restart mysql

[mysqld]
server-id=1 #主库配置加入
[mysqld]
server-id=2 #从库配置加入

步骤2(非必要):

主机上执行 show master status;显示最新的日志文件和当前位置。

File当前正在写入的二进制日志文件名。

Position当前二进制日志文件的偏移量,表示下一个要写入的位置。

Binlog_Do_DB主服务器上配置的需要记录到二进制日志中的数据库。

Binlog_Ignore_DB主服务器上配置的不需要记录到二进制日志中的数据库。

Executed_Gtid_Set在 GTID 模式下,该属性表示已经执行过的全局事务标识符的集合

步骤3:

从服务器连接主服务器进行主从同步,在从服务器上面执行如下代码:

CHANGE REPLICATION SOURCE to
SOURCE_HOST='192.168.3.107',
SOURCE_USER='root',
SOURCE_PASSWORD='1234',
SOURCE_LOG_FILE='binlog.000009',
SOURCE_LOG_POS=0;

SOURCE_HOST:主库连接地址
SOURCE_USER:账号
SOURCE_PASSWORD:密码
SOURCE_LOG_FILE:主库当前二进制文件名
SOURCE_LOG_POS:当前二进制日志文件的偏移量

执行完成之后可以通过show REPLICA status;可以查看复制集群状态,通过如下命令可以启动,暂停,删除集群。

show REPLICA status; #查看
start REPLICA; #开始
stop REPLICA; #暂停
RESET REPLICA ALL; #删除

通过设置SOURCE_HOST地址连接主库或从库,就可以轻松实现一主多从,或一主一从一从的链式架构。

GTID 模式(推荐)

主从复制中mysql提供一种GTID 模式,SHOW GLOBAL VARIABLES LIKE 'gtid_mode';查看Gtid模式的状态。gtid是一种新的日志格式,gtid每个事务都有一个唯一的GTID,保证了事务在整个复制拓扑中的唯一性,主要与传统日志格式区别就是以事务为单位而传统日志是基于日志位置。

RESET MASTER;重置主库的binlog日志,注意一旦重置日志将丢失所有日志数据,将从00001开始,编辑nano /etc/mysql/my.cnf,各个数据库的server_id按1-5排序下去,主库和从库都需要配置。

[mysqld]
server-id=1
gtid_mode=on
enforce_gtid_consistency=true

gtid_mode:开启gtid模式。

enforce_gtid_consistency:强制GTID一致性,这有助于提高数据的可靠性和一致性,防止数据丢失或损坏。

从库执行如下代码:

CHANGE REPLICATION SOURCE to
SOURCE_HOST='192.168.3.107',
SOURCE_USER='root',
SOURCE_PASSWORD='123',
SOURCE_AUTO_POSITION=1;

你会发现SOURCE_LOG_FILE和SOURCE_LOG_POS将不再需要填写,因为gtid的好处之一就是会自动定位日志文件和位置,减少配置复杂性。其它的集群管理与传统的命令一致。

#主库常用命令
show master status #查看主库状态
reset master; #重置主库binlog日志 #从库常用命令
show replica status; #查看从库状态
start replica; #开始同步
stop replica; #暂停同步
reset replica all; #重置(删除)全部同步
select * from performance_schema.replication_applier_status_by_worker; #查看同步线程的信息(主要用于查看具体报错信息) #其它
show variables like 'server_id'; #查看server_id
show global variables like 'gtid_mode'; #查看gtid状态

mysql8.0 主从架构模式【0到1架构系列】的更多相关文章

  1. 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    大型网站技术架构(四)--核心架构要素   作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...

  2. iOS开发之--MVC 架构模式

    随着项目开发时间的增加,从刚开始那种很随意的代码风格,逐渐会改变,现在就介绍下MVC的架构模式,MVC的架构模式,从字面意思上讲,即:MVC 即 Modal View Controller(模型 视图 ...

  3. 前端架构模式 All In One

    前端架构模式 All In One 架构模式 同构 异构 微前端 Web Components 组件化 无框架 去框架 前后端分离 前端架构图 Clean Architecture https://b ...

  4. SpringMVC MVC 架构模式

    MVC 架构模式 MVC(Model.View 和 Controller)是一种架构模式,它是按照职责划分的思想将系统操作分为三个模块进行处理,每个模块负责一个职责,而且模块之间可以相互交互通信,共同 ...

  5. JavaEE 三层架构模式

    什么是架构模式 要理解三层架构模式,我们得先搞清楚什么是架构模式.(这里说的架构模式是针对后端开发) 所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不 ...

  6. 通过 Docker 部署 Mysql 8.0 主从模式

    文章转载自:http://www.mydlq.club/article/106/ 系统环境: Mysql 版本:8.0.23 Docker 版本:19.03.13 一.为什么需要 Mysql 主从复制 ...

  7. Mysql8.0主从配置

    环境Centos7.6 ,mysql8.0 Mysql主从配置 1.1 配置环境: 本人在vm下做的实验,linux版本是centos的7.0版本,然后Mysql版本为此时较新的8.0.13版本.做最 ...

  8. 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式

    一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...

  9. 开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器

    JeeWx捷微4.0   微服务版本发布^_^ 换代产品(全新架构,全新UI,提供强大的图文编辑器) JEEWX 从4.0版本开始,技术架构全新换代,采用微服务架构,插件式开发,每个业务模块都是独立的 ...

  10. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

随机推荐

  1. P6623 [省选联考 2020 A 卷] 树

    day2t2但难度不大,和AGC044C解法类似 题目大意: 给定一棵 \(n\) 个结点的有根树 \(T\),结点从 \(1\) 开始编号,根结点为 \(1\) 号结点,每个结点有一个正整数权值 \ ...

  2. 图片接口JWT鉴权实现

    图片接口JWT鉴权实现 前言 之前做了个返回图片链接的接口,然后没做授权,然后今天键盘到了,也是用JWT来做接口的权限控制. 然后JTW网上已经有很多文章来说怎么用了,这里就不做多的解释了,如果不懂的 ...

  3. hynitron ts 驱动分析

    # hynitron ts 驱动分析 背景 在公司项目中搞LCD移植的时候,在TP功能上,有时候频繁操作屏幕时会导致i2c总线返回-2错误. 问题描述: 1.安卓桌面起来以后,点击屏幕有响应. 2.此 ...

  4. CodeFormer一款既能图像修复、还能视频增强去码的AI软件(下载介绍)

    CodeFormer是一款强大的人工智能工具,主要用于图像和视频的修复和增强.它基于深度学习技术,特别是人脸复原模型,可以轻松修复和增强面部图像,提升照片和视频的质量和视觉效果 工作原理 1.通过自动 ...

  5. Oracle 字符串分割,并将内码转中文(简单实现),项目实战

    导读 实际项目开发过程中,可能会遇到这种情况,A表中A1字段存储B表中的内码如(1,2,3),此时需要将A表中的A1字段转中文,为了方便理解,我们这里创建学生表和老师表,一个学生对应N个老师. 创建表 ...

  6. 「悬浮捷径SoftCircle」安卓平台的hao123,一键打开万物

    罗老师的onestep一步发布之前, 终端的打开形式还拘泥于桌面和负一屏 这种方式够简洁,但缺点明显: 1.入口单一性:只能在app首页和各种扫一扫之间选择和切换 2.操作复杂:入口切换需要频繁的进入 ...

  7. 网易数帆开源贡献获业界肯定,轻舟API网关获OSCAR尖峰开源技术创新奖

    2020年10月16日,由中国信息通信研究院主办的"2020开源产业大会"在北京线下与线上同步召开,主办方在会上公布了"OSCAR尖峰开源奖项"各个奖项的评选结 ...

  8. ping和tcping的区别

    ping是简单的测试网络连接情况的小命令,但是ping无法直接ping端口.某些网站还防ping,tcping工具也是通过ping来测试但是他能看端口是否打开

  9. [oeasy]python0143_主控程序_main

    主控程序 回忆上次内容 上次把 apple.py 拆分成了 输入 主函数   引用模块中变量的时候 要带上包(module)名 get_fruits.a get_fruits.b     最终 拆分代 ...

  10. P10507 Georgia and Bob 题解

    思路 对棋子坐标排序,\(x_{i}-x_{i-1}-1\) 就是棋子可以移动的距离. 移动第 \(i\) 个棋子,相当于将 \(i+1\) 的移动范围扩大. 这于是变形成了一个台阶 nim 博弈论. ...