【Mysql】mysql的主从复制,一主一从,以及分布式集群环境下多主多从环境配置

MySQL5.7 多主一从(多源复制)同步配置 多主一从 阅读详情

1.背景

分布式环境下为了保证Mysql的查询效率,我们会配置Mysql的主从复制用来做读写分离,master主机用来做写主机,slave主机用来做读主机,读主机从写主机来复制数据,通常为了保证高可用性,我们需要至少双主双从,当一个主节点挂了之后,另一个主节点会被当作写主机进行数据的写入。

2.一主一从的配置

我这里偷个懒,使用docker搭建的mysql,不过和正常安装的mysql之间区别不大,接下来,我们开始配置一主一从的配置

2.1 配置master机器mysql的配置文件

正常安装的mysql直接配置 /etc/my.cnf即可,我这里使用的是docker搭建的mysql,所以配置 /etc/mysql/mysql.conf.d/mysqld.cnf

vim /etc/mysql/mysql.conf.d/mysqld.cnf

如果这里和我一样使用的是docker搭建的mysql,容器里面肯定是没有vim命令的,使用下面两条命令来安装一下

apt-get update

apt-get install vim -y

编辑master主机的配置文件,在[mysqld]下加入如下配置

server_id        = 1

log-bin            = master-bin

binlog-do-db   = testdb

binlog_format = ROW

 保存退出

这里把参数解释一下

server_id 代表mysql服务器的唯一ID

log-bin代表启用二进制文件,后面的代表二进制文件的名称

binlog-do-db代表需要复制的数据库名称

binlog_format这个参数我们这里着重讲一下

格式含义优缺点
STATEMENT记录的是DQL,DML,DDL语句

节省空间,磁盘IO小,如果出现系统变量,sysdate()等函数从数据库会和主数据库出现不一致的情况

ROW记录的是每一行的数据精确的复制数据到从库文件占用空间大,网络IO大,磁盘IO大
MIXED前面2者的混合准确性高,文件大小适中,还是会有数据不一致的情况出现

2.2 配置slave机器的mysql配置文件

修改配置文件(非docker安装的用户直接配置 /etc/my.cnf)

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]标签下添加以下内容

server_id        = 2

replicate-do-db = testdb

 replicate-do-db 代表了从数据库需要复制的数据库名称

2.3 配置两台机器开始复制

① 将上述配置好的mysql服务重新启动

② 如果在2台机器上面部署的,记得打开防火墙的3306端口

③ 配置具有同步权限的账户

grant replication slave on *.* to 'account'@'%' identified by '123456';

生产环境中,一定不能指定用户访问IP为%,会有安全问题,这里为了演示,不做限制。

刷新一下数据

flush privileges;

④进入到master主机mysql中

show master status;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里有2个重要的值

File下面的字符串 binlog文件的名称,后面我们要指定slave主机从这个文件中获取数据

Position下面的数字,代表偏移量,表示后面slave的主机从哪里开始复制。

⑤进入到slave主机的mysql中

CHANGE MASTER TO 
MASTER_HOST='master主机的IP',
MASTER_USER='account',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000002', # master主机binlog文件的名称
MASTER_LOG_POS=154, # binlog文件的偏移量
master_port=3306;

开始备份

start slave;

查看从机备份情况

show slave status\G;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 只要看到这两项都为YES之后,表示已经开始备份了。

这时候我们创建一个testdb数据库,

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_12,color_FFFFFF,t_70,g_se,x_16

发现从数据库中也创建了一个同样的数据库;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_7,color_FFFFFF,t_70,g_se,x_16

 这时,无论是创建表还是插入数据,从数据库都会一直复制数据了。

3.多主多从的配置

我们这里以双主双从来分析,其实与一主一从类似,双主双从只是让两台主机也具有互相复制的功能即可。

3.1 master节点的配置

master1节点

server_id        = 1

log-bin            = master1-bin

binlog-do-db   = testdb

binlog_format = ROW

# 主节点宕机恢复之后变成从数据库之后,写入操作写入二进制文件中

log-slave-updates

# 自增字段每次增长的值

auto-increment-increment=2

# 自增字段的起始值

auto-increment-offset=1

# 设置自增字段的起始和增长值是为了保证多个主节点的情况下自增的字段不会重复

master2节点

server_id        = 2

log-bin            = master2-bin

binlog-do-db   = testdb

binlog_format = ROW

log-slave-updates

auto-increament-increment=2

# 自增的起始值为2

auto-increment-offset=2 

3.2 Slave节点的配置 

 slave1节点

server-id        = 3

replicate-do-db = testdb

slave2节点

server-id        = 4

replicate-do-db = testdb 

 3.3 配置双主双从的复制

① 4台mysql全部重启

②开启4台mysql的服务端口

③ 2台master节点全部新建一个同步权限的用户

grant replication slave on *.* to 'account'@'%' identified by '123456';

清理一下数据

flush privileges;

④查看两台主机的binlog状态

# 查看master1节点

show master status;

#查看master2节点

show master status;

⑤ 设置从节点复制的主机节点

slave1 复制 master1

CHANGE MASTER TO 
MASTER_HOST='master1主机的IP',
MASTER_USER='account',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master1-bin.000002', # master1主机binlog文件的名称
MASTER_LOG_POS=154, # binlog文件的偏移量
master_port=3306;

slave2 复制 master2

CHANGE MASTER TO 
MASTER_HOST='master2主机的IP',
MASTER_USER='account',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master2-bin.000002', # master2主机binlog文件的名称
MASTER_LOG_POS=154, # binlog文件的偏移量
master_port=3306;

⑥两台从主机开启复制

start slave

⑦ 查看两台从主机的复制状态

show slave status\G;

查看两个选项是否为Yes; 

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
⑧ 两台主机相互复制
master2 复制master 1
CHANGE MASTER TO 
MASTER_HOST='master1主机的IP',
MASTER_USER='account',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master1-bin.000002', # master1主机binlog文件的名称
MASTER_LOG_POS=154, # binlog文件的偏移量
master_port=3306;

master1 复制 master2

CHANGE MASTER TO 
MASTER_HOST='master2主机的IP',
MASTER_USER='account',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master2-bin.000002', # master2主机binlog文件的名称
MASTER_LOG_POS=154, # binlog文件的偏移量
master_port=3306;

⑨ 开启两台master节点的复制功能

start slave;

4. 关闭主从复制

从机停止同步

stop slave;

主机停止同步

stop slave;

reset master;

 

 

 

 

MySQL8主从复制之一主一从实战 MySQL8主从复制之一主一从配置实战 阅读详情

相关推荐

mysql主从复制、一主一从、 一主多从、环形多主

MySQL主从复制(原理+实操 )一主一从、 一主多从、环形多主

2301_79228611的博客 1806

mysql分布式如何实现原理_分布式通讯协议实现原理

分为两个阶段:投票表决阶段和提交阶段。事务参与者完成系统相关业务成功后,通知协调者状态,当所有的事务参与者业务状态都成功后,协调者才发出提交指令,参与者提交或者取消事务一协调者 二事务的参与者(一般有多个事务参与者),①协调者处于init阶段,收到系统的commit请求时,向参与者多播vote-request后转入wait状态(阻塞),当接收到所有参与者的返回消息后,如果其中包含abort(终止)...

weixin_39914975的博客 164

mysql读写分离--1.一主一从,主从复制

mysql -uroot -poldboy123</tmp/master_2021-12-19.sql ##如果有错,删除/tmp/master_2021-12-19.sql第一行.总结:主库数据通过binlog日志将变更同步到从库,从而保证主库和从库数据一致。mysql支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。#登录mysql,设置从配置,配置主库信息,主库的密码和binlog起始位置,pos文件点。

2401_84008551的博客 1655

mysql 多主一从_mysql 多主一从

一、主服务器准备1.1、环境准备两台主机器ip分别为100.100.100.105 (主1)100.100.100.106(主2)安装 mysql[root@centos ~]# yum install mysql-server mysql-client -y[root@centos ~]# service mysqld start[root@centos ~]# /usr/bin/mysqlad...

weixin_36280338的博客 957

Mysql主从复制部署指南(一主一从)

本文详细介绍了在Linux环境下部署MySQL主从复制的步骤。首先,确保两台服务器已安装MySQL并关闭防火墙。接着,在主节点(master)上修改配置文件/etc/my.cnf,设置唯一的server-id和读写权限,并重启MySQL服务。然后,为从节点(slave)创建一个具有主从复制权限的账号,并记录主节点的Binlog文件名和位置。在从节点上,同样修改配置文件,设置只读权限,并配置与主节点的连接信息。最后,启动同步并检查同步状态,确保主从复制成功。通过测试创建数据库和表,验证数据是否正常同步。

qq_23095607的博客 1161

数据库gtid主从复制(一主一从、一主多从、多主一从)

数据库gtid主从复制1. GTID概念2. GTID 主从复制原理3. 一主一从3.1 环境3.2 配置3.2.1 配置主库3.2.2 配置从库3.2.3 测试4. 一主多从4.1 环境4.2 配置4.2.1 配置主库4.2.2 配置slave24.2.3 测试5. 多主一从5.1 环境5.2 配置5.2.1 主库配置5.2.2 从库配置5.2.3 测试 1. GTID概念 GTID (Global Transaction ID)是全局事务ID,由主库上生成的与事务绑定的唯一标识,这个标识不仅在主库上是唯

eHV4aW5n的博客 615

mysql多主一从配置

服务器192.168.1.138、192.168.1.139、192.168.1.140 1、配置主192.168.1.138 1)配置my.cnf vi /etc/my.cnf 重启mysql service mysqld restart 查看主状态 2)授权给从数据库 grant replication slave on *.* to 'repl'@'192.168.1.%' ALTER USER 'repl'@'192.168.1.%' IDENTIFIED ...

xiaoyaozizai1的博客 3261

MySQL基于gtid主从复制(一主一从、一主多从、双主一从)

MySQL基于gtid主从复制(一主一从、一主多从、双主一从) MySQL基于gtid主从复制 什么是GTID? 全局唯一,一个事务对应一个GTID 替代传统的binlog+pos复制;使用master_auto_position=1自动匹配GTID断点进行复制 MySQL5.6开始支持 在传统的主从复制中,slave端不用开启binlog;但是在GTID主从复制中,必须开启binlog slave端在接受master的binlog时,会校验GTID值 为了保证主从数据的一致性,多线程同时执行一个GTID

1 605

MySQL主从复制(一主一从、双主双从)

主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。数据库为什么需要主从架构呢?高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。读写分离,提供查询服务,减少主库压力,提升性能备份数据,避免影响业务。

qq_759035366的博客 1920

VOF模型求解方法:从SIMPLEC到PISO的稳定性优化策略

本文深入探讨了VOF模型求解方法中SIMPLEC与PISO算法的稳定性优化策略,重点分析了两种算法在稳态和瞬态问题中的应用差异。通过对比PRESTO离散化方法与其他格式的优劣,提供了针对多相流模拟的实用设置建议和稳定性优化技巧,帮助工程师有效提升计算效率和精度。

yellow的专栏 1153

INCA_ProF脚本教程

一、首先INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;与此同时ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本语言对ECU闪存编程等各种自定义操作。 二、然而ProF脚本语言在ETAS的官网或其他网络上并没有专门的使用教程,通常只有ETAS技术支持人员提供的ProF Documentation文档或少量可参考的Demo案例,然而ProF Documentation文档仅涉及ProF语言的函数的操作说明,没有从全局的框架上介绍Pro

weixin_29389627的博客 1万+

mysql主从复制(一主一从,多主一从)

概述: MySQL 的主从复制是通过他的归档日志(binlog) 来实现的。基本的过程就是从库在一个线程中和主库建立一个长连接,告诉主库从主库同步的 binlog 的位置,然后主库将这个位置之后的 binlog 日志内容发送给从库,从库获取到主库发送过来的 binlog 内容后先写入到本地的中转日志(relaylog)中,然后从库另一个进程在从中转日志中读取内容并解析成为 sql 语句在从库中执...

gaoyunshan163的博客 1267

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 407

MySQL主从复制一主一从

主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。

努力变优秀的博客 1063

镜头调焦的 调整的是焦距还是像距?

在镜头 “调焦”(即日常拍照时的)中,调整的核心是,而非焦距。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1350

PhotovoltaicPanelCleanlinessDetector:基于YOLOv8的光伏板清洁状态监测系统

data.yamlyaml复制编辑names:0: clean1: dust3: leaves4: shadow✅ 高精度污染识别✅ 具备实时检测与UI展示✅ 可本地化部署应用未来方向增加污染程度分级(轻度、中度、严重)加入时间序列分析(污染变化趋势预测)无人机集成巡检模块。

YOLO 275

Linux - MySQL搭建一主一从、多主一从

Linux - MySQL搭建一主一从、多主一从

weekeight 1418

Android系统修改驱动固定USB摄像头节点绑定前后置摄像头

Android系统中usb摄像头节点会因为摄像头所接的usb口不同或者usb设备识别顺序不一样而出现每次开机生成的video节点不一样的问题。由于客户app调用摄像头时,需要固定摄像头的节点。因此需要针对前面的情况做处理。

Android系统开发笔记 2250

GTID主从复制(一主一从,一主多从,多主一从)

文章目录1GTID介绍1.1GTID是什么1.2 GTID Replication介绍1.3 GTID的组成1.3 GTID的作用1.4 为什么要用GTID1.5 GTID比传统复制的优势1.6 GTID复制实现的工作原理2 主从复制2.1 一主一从2.1.1部署数据库可查看2.1.2 授权一个用户,用于主从复制2.1.3 修改master主配文件2.1.4 slave主配文件2.1.5 配置slave主机,授权从数据库2.1.6 验证主从复制2.2 一主多从2.2.1 第二台从数据库slave主配文件2.

weixin_46727129的博客 2359

巡检类机器人电池容量计算方法论(原理+算法+真实案例)

摘要:本文系统阐述了巡检机器人电池容量的计算方法,重点解析了;能量平衡;核心原理和三种主流算法。通过光伏电站履带式巡检机器人的真实案例,详细演示了从工况拆解、功耗采集到容量计算的完整流程。文章指出:室内轻载场景可采用静态平均功耗法,户外常规工况推荐动态负载积分法,而复杂环境需采用融合估算算法。特别强调需考虑温度修正(冬季容量衰减20%)、冗余系数(1.2-1.5)和放电深度(磷酸铁锂DoD取80%)等关键参数。

start_up_go的博客 241

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Mysql主从复制(一主一丛,多主一从)

概述: MySQL 的主从复制是通过他的归档日志(binlog) 来实现的。基本的过程就是从库在一个线程中和主库建立一个长连接,告诉主库从主库同步的 binlog 的位置,然后主库将这个位置之后的 binlog 日志内容发送给从库,从库获取到主库发送过来的 binlog 内容后先写入到本地的中转日志(relaylog)中,然后从库另一个进程在从中转日志中读取内容并解析成为 sql 语句在从库中执行...

xb565517830的博客 927

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【MySQL集群一】CentOS 7上搭建MySQL集群:一主一从、多主多从

MySQL集群允许您创建高可用性的数据库环境,提供故障容忍性和负载均衡。在本博客中,我们将演示如何在两台CentOS 7服务器上搭建MySQL集群,包括一主一从和多主多从的配置。

Java老兵的后端进阶与AI前沿探索之路。 1862

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL主从复制与读写分离实战:一主一从、一主多从及MyCAT配置详解

"ip":null,"password":"654321", 密码"username":"mycat" 用户名:wq"password":"123456", 密码useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", 连接本机的数据库服务"user":"plj", 用户名"weight":0:wq。

qq_53299057的博客 1077

Mycat中间件实现一主一从和双主双从的读写分离

目录 目录 前言 一主一从读写分离 MySQL数据库配置 Mycat的配置 测试 参考资料 前言 笔者在《MySQL数据库实现主从复制》这一篇文章中有提到读写分离这个技术,这个技术时基于主从复制之后的一种技术。在数据库主从复制中,一个主数据库有一个或者多个从数据库,我们可以对主数据库进行写入操作(insert,delete,update),对一个或者多个从数据库进行读取操作(...

夜雨飘零 8159

MySQL主从复制(一主一从)部署

MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一;但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。在此之前我们必须要保证每台MySQL服务器里的数据同步。...

weixin_53388991的博客 1510
上一篇: 【Java面向对象】java学习之旅19-异常
下一篇: 【Java高级特性】java学习之旅20-集合框架
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值