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

2024-01-14 18:28

本文主要是介绍MySQL主从复制配置(双主双从),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、架构规划

1、规划图

2、环境准备

二、修改配置

1、主库配置

1.1配置master1

1.2配置master2

2、从库配置

2.1配置slave1

2.2配置slave2

3、重启服务

三、建立同步账号

1、master1上建立

2、master2上建立

四、配置主从关系

1、配置从服务器slave1

1.1slave1复制master1

1.2启动slave1的复制功能

2、配置从服务器slave2

2.1slave2复制master2

2.2启动slave2的复制功能 

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

3.1 master2复制master1

3.2 master1复制master2


一、架构规划

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

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就没问题

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

这篇关于MySQL主从复制配置(双主双从)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606097

相关文章

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析