前提条件

  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. Shell读取整行

    像C/C++,JAVA,Python等语言中,可以轻松地对文件进行按行读取. 那么,Shell中怎么实现对行读取呢? #!/bin/bash while read i do echo $i done ...

  2. 认识.NET 日志系统

    认识.NET 日志系统 基本概念 日志级别:Trace<Debug<Information<Waring<Error<Critical 日志提供者(LoggingProv ...

  3. 【论文阅读】Causal Imitative Model for Autonomous Driving

    Sensor/组织: EPFL Sharif University of Technology Status: Finished Summary: 看看框架图就行.高效缓解因果混淆问题,将因果作为学习 ...

  4. “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机

    "非对称AMP"双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构."非对称AMP"双系统是指多个核心相对独立运 ...

  5. 使用64位Office2016处理万级数据的过程

    先放下载和安装教程https://mp.weixin.qq.com/s/5ym9950_NZROlN0s2ZmLTg 由于同事电脑在使用Mysql for Excel插件处理十万级数据,如下图: 爆出 ...

  6. UG二次开发 PYTHON 环境配置

    NX 二次开发 PYTHON VSCODE 环境配置 我电脑上装的是WIN11 NX1988 在电脑的UG的安装文件夹内找到 python 一般在 xx\NXBIN 在所在的文件夹内,运行python ...

  7. Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file

    导读 晚上捣鼓数据库的时候,将mysql服务停止下,然后就死活启动不起来,这下可把我急坏了,自己数据库上有好多自己的个人项目,错误信息如下 ERROR! The server quit without ...

  8. Swift开发基础06-闭包

    Swift的闭包(Closures)是一种将功能块和上下文整合并演示在代码中的一种手段.闭包可以捕获并存储其上下文中的变量和常量.与普遍存在于其他语言的匿名函数(如Python的lambda.Java ...

  9. yearrecord——一个类似痕迹墙的React数据展示组件

    介绍一下自己做的一个类似于力扣个人主页提交记录和GitHub主页贡献记录的React组件. 下图分别是力扣个人主页提交记录和GitHub个人主页的贡献记录,像这样类似痕迹墙的形式可以比较直观且高效得展 ...

  10. [oeasy]python0135_命名惯用法_name_convention

    命名惯用法 回忆上次内容 上次 了解了isidentifier的细节 关于 关键字 关于 下划线   如何查询 变量所指向的地址? id   如何查询 已有的各种变量? locals   如果 用一个 ...