MySQL主从复制配置(双主双从)

一、架构规划

一主多从可以缓解读的压力,但是如果主宕机了,所有从都不能写了,因此我们配置双主双从。

1、规划图

master1和master2互为主从关系,slave1是master1的从,slave2是master2的从。

2、环境准备

准备四台机器,其中两台为主(master1和master2),两台为从(slave1和slave2)

主master1192.168.198.140
主master2192.168.198.141
从slave1192.168.198.100
从slave2192.168.198.101

二、修改配置

1、主库配置

1.1配置master1

修改配置文件/etc/my.cnf

1.2配置master2

同样和master1一样的修改操作,但是注意server-id可以随便设置,但是必须唯一(不能相同)

2、从库配置

2.1配置slave1

2.2配置slave2

3、重启服务

四台机器都要重启MySQL服务,并检查状态

systemctl restart mysqldsystemctl status mysqld

三、建立同步账号

1、master1上建立

进入mysql,设置同步账号名为rep,密码为Rep@123456,并授权

grant replication slave on *.* to 'rep'@'192.168.198.%' identified by 'Rep@123456';

然后查看状态,并记录下File和Position的值

至此,就不要再操作master1的mysql了,不然的话,这两个值就会发生变化

2、master2上建立

也是同样的方法,并且也要看到File和Position这两个关键值

四、配置主从关系

方法就是在从机上配置需要复制的主机,复制主机的命令如下:

change master to
MASTER_HOST='被从机复制的主机master的ip',
MASTER_USER='同步账号名',
MASTER_PASSWORD='同步账号的密码',
MASTER_LOG_FILE='记录的File的值',
MASTER_LOG_POS= 记录的Position的值 ;

1、配置从服务器slave1

1.1slave1复制master1

在从机slave1上操作,复制对象是master1

由主库master1的状态表可知,从库上的MASTER_LOG_FILE参数的值就是mysql-bin.000043,MASTER_LOG_POS参数的值是448

1.2启动slave1的复制功能

在slave1上使用命令start slave


发现报错:ERROR 1872 (HY000): Replica failed to initialize applier metadata structure from the repository

这是因为数据库以前配置过,生成过中继日志,所以slave中还记录着旧日志,所以需要用命令reset slave去重置,注意reset之后,再重新配置主从关系,然后再启动就可以了

既然成功启动,那我们可以查看从库状态

Slave_IO_Running和Slave_SQL_Running这两个参数必须同时为Yes,即IO线程和SQL线程启动成功

2、配置从服务器slave2

2.1slave2复制master2

在从机slave2上操作,复制对象是master2

由主库master2的状态表可知,从库上的MASTER_LOG_FILE参数的值就是mysql-bin.000008,MASTER_LOG_POS参数的值是448

2.2启动slave2的复制功能 

在slave2上使用命令start slave;

然后检查状态是否为双Yes,这样就成功了

 

3、配置两主服务器互为主从

要实现互为主从的方式很简单,即master2复制master1,master1复制master2。因此同样地去建立主从关系即可

3.1 master2复制master1

在master2上操作

注:IO线程第一次没起来,查看报错日志/var/log/mysqld.log之后,我重启了master1,因此master1的File和Position的值变化了,一定要重新查看状态

回头再看了,发现就是自己设置日志文件的时候多加了个小数点,,,,

既然已经重启了,就只能重新查看状态再设置了 

然后在master2上重新建立主从

这下才成功

 

3.2 master1复制master2

在master1上同样的操作思路,双Yes就没问题

最后就完成配置了,可以自己测试一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/237732.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-1822/1502/896/13

1.数组元素积的符号(1822) 题目描述: 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。 如果 x 是负数,返回 -1 。 如果 x 是等于 0 ,返回 0 。 给你一个整数数组…

c++多久会被Python或者新语言取代?

c多久会被Python或者新语言取代? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&am…

多传感器融合SLAM数学学习历程

多传感器融合SLAM数学学习历程 >>> 流形和流形空间(姿态) https://blog.csdn.net/professor_Xie/article/details/131911894 fast-lio 带着问题 看知识 欧式空间和流形空间的区别和联系? 基本结构:欧式空间是我们熟悉的传统三维…

机器学习笔记:时间序列异常检测

1 异常类型 1.1 异常值outlier 给定输入时间序列,异常值是时间戳值其中观测值与该时间序列的期望值不同。 1.2 波动点(Change Point) 给定输入时间序列,波动点是指在某个时间t,其状态在这个时间序列上表现出与t前后…

jmeter如何做接口测试?

Jmeter介绍&测试准备: Jmeter介绍:Jmeter是软件行业里面比较常用的接口、性能测试工具,下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库。 前期准备:测试前,需要安装好Jmeter以及jdk并配置好jdk环…

STM32 1位共阳极数码管

数码管分为共阳极和共阴极,即多个二极管的同一端接到GND/Vss(若一起接到GND,则称为共阴极。若一起接到Vss,则称为共阳极) 把数码管上的每个二极管一次标号对应a,b,c,d,e,f,g,dp。我们知道发光二极管一端正一端负&#…

学习redis有效期和数据类型

1、安装redis和连接redis 参考:ubuntu安装单个redis服务_ubuntu redis单机版安装-CSDN博客 连接redis:redis-cli.exe -h localhost -p 6379 -a 123456 2、Redis数据类型 以下操作我们在图形化界面演示。 2.1、五种常用数据类型介绍 Redis存储的是key…

小米数据恢复软件:如何从小米手机恢复已删除的数据

“买一部小米手机,送一个移动硬盘”。人们惊叹于小米手机以非常合理的价格提供的大容量。我们甚至可以把小米手机当做一个移动硬盘来使用,存储大量的照片、视频、文档等文件。但是,在我们使用手机的过程中,误删的情况时有发生&…

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此,飞行射击游戏已经基本实现该有的功能,已经比较接近早期的商业游戏了。 如果采用脚本,可以完成关卡游戏,如果不用,也可以做成无限挑战游戏。 我们汇总一下制作的过程: 1、建模UML 2、主循环处理过程…

大数据仓库开发规范示例

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

关于浏览器缓存的一些坑记录

1.js强制刷新浏览器缓存 网络上一搜基本都说用location.reload(true)可以强制刷新缓存,但是没人讲这个方法只准对火狐浏览器生效,火狐浏览器的确可以实现强制刷新并每次请求都是新的没有走缓存;chrome依然是走200 状态 缓存。 MDN解析: 2.m…

带你拿捏SpringBoot自动装配的核心技术?模块装配(@EnableXXX注解+@Import)+ 条件装配(@ConditionalXXX)

文章目录 Profile激活指定配置文件主配置文件中指定激活的profile命令行激活设置虚拟机参数激活 profile控制不到的地方 Spring原生的条件装配注解ConditionalConditional接口讲解案例讲解 Spring Boot封装的条件装配注解ConditionalXXX自己实现ConditionalOnBeanSpringBoot 源…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了

OpenAI推出的两款新产品和服务:GPT Store和ChatGPT Team,提供了许多全新的解决方案和功能,旨在帮助用户更轻松地使用和构建GPT工具,同时也增加了公司的收入来源。GPT Store是一个全新的在线平台,允许用户创建和分享自定…

MyBatis实战指南(二):工作原理与基础使用详解

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。 一、MyBatis的工作原理 1.1 MyBatis的工作原理 工作原理…

论文阅读1---OpenCalib论文阅读之factory calibration模块

前言 该论文的标定间比较高端,一旦四轮定位后,可确定标定板与车辆姿态。以下为本人理解,仅供参考。 工厂标定,可理解为车辆相关的标定,不涉及传感器间标定 该标定工具不依赖opencv;产线长度一般2.5米 Fa…

Python基础知识:整理9 文件的相关操作

1 文件的打开 # open() 函数打开文件 # open(name, mode, encoding) """name: 文件名(可以包含文件所在的具体路径)mode: 文件打开模式encoding: 可选参数,表示读取文件的编码格式 """ 2 文件的读取 文…

Find My资讯|AirTag 2或推迟上市,Find My功能十分强大

苹果于 2021 年4月推出了初代 AirTag。苹果已将第二代 AirTag 的推出推迟到 2025 年,目前苹果官方并不急于推出AirTag 2的原因还有AirTag所搭载的搜寻定位功能非常的强大,在市场上几乎没有任何竞争对手可言。 AirTag使用蓝牙和苹果设备的“查找我的”网…

Redis命令 - Lists命令组常用命令

先创建一个 key 叫做 mylist,mylist存一个list。 list数据类型底层是一个链表。先进后出,后进先出。 命令中的L(Left)、R(Right)代表链表的头部L(下标0的位置)和尾部R(…

uni-app分包预下载

模块的二级页面,按模块处理成分包页面,有以下好处: 按模块管理页面,方便项目维护。减少主包体积,用到的时候再加载分包,属于性能优化解决方案。 ::: tip 温馨提示 通过 VS Code 插件 uni-create-view 可…

AI与编程学习

在C语言中,指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换,而不是用于表现多位数的第一位。48这个值对应的是ASCII码表中数字字符0的编码。 如果你有一个表示多位数的字符数组,例如: c char number[] "1234&qu…