Redhat7.4部署MySQL-5.7.17搭建双主互为主从

一、准备工作

需要先准备已经搭建好的两台数据库,并且保证服务器之间网络是通的,3306端口可以相互访问。

二、修改两台数据库my.cnf 配置文件,将下列内容添加进去,放在 [mysqld] 下

我们暂定两台服务器为A服务和B服务,A服务IP:192.168.116.133  B服务IP:192.168.116.134

2.1、修改A服务my.cnf  注意 server-id参数两台服务不可一致,A服务设置为 1 B服务设置为2
vi /etc/my.cnf

#服务器唯一ID,每个server-id在复制环境中的所有MySQL服务器中必须是唯一的
server-id=1
#忽略 mysql 数据库中的所有表,这些表不会被复制到从服务器。
replicate-wild-ignore-table = mysql.%
#忽略 information_schema 数据库中的所有表,这些表也不会被复制到从服务器。
replicate-wild-ignore-table = information_schema.%
#这个选项开启GTID模式,这是一个在复制中用来唯一标识事务的方式。
gtid-mode=ON
#当开启GTID模式时,这个选项确保只允许可以安全地记录在GTID模式下的事务执行。
enforce_gtid_consistency=on
#这使从服务器将复制的事务写入自己的二进制日志中,这对级联复制或备份非常有用。
log-slave-updates=true
#设置复制主服务器信息存储在表中,而不是文件。
master-info-repository=TABLE
#设置中继日志信息存储在表中,而不是文件。
relay-log-info-repository=TABLE
#指定中继日志的路径。
relay_log = /usr/local/mysql/relay.log
#指定中继日志索引文件的路径。
relay_log_index = /usr/local/mysql/relay_log.index
#设置MySQL复制从服务器应当向主服务器报告的端口号。
report-port = 3306
#使从服务器同步写入其当前的主服务器信息到其磁盘上。
sync-master-info=1
#设置在从服务器上并行复制的线程数。
slave_parallel_workers=5
#开启二进制日志的校验和,使用CRC32校验算法。
binlog-checksum=CRC32
#使主服务器在发送事件之前验证二进制日志事件的校验和。
master-verify-checksum=1
#使从服务器在执行二进制日志事件前验证事件校验和。
slave-sql-verify-checksum=1
#在二进制日志中记录与行变更相关的事件。
binlog-rows-query-log_events=1
#在自增字段上,增加值的步长设置为2。
auto-increment-increment = 2
#主1从2, 在自增字段上,起始偏移量设置为2,当与increment一起使用时,可以帮助避免在复制设置中的自增ID冲突。
auto-increment-offset = 2
#从服务器在复制过程中遇到错误时将跳过所有错误,这是一个危险的做法,通常不推荐在生产环境中使用,因为它可能导致数据不一致。
#slave-skip-errors = all
#防止复制随着mysql启动而自动启动, 防止在MySQL服务器启动时自动启动复制进程。
skip-slave-start = 1
#设置从服务器的并行复制类型为基于逻辑时钟的并行复制。
slave-parallel-type = LOGICAL_CLOCK
2.2、修改B服务my.cnf  
vi /etc/my.cnf

#服务器唯一ID,每个server-id在复制环境中的所有MySQL服务器中必须是唯一的
server-id=2
#忽略 mysql 数据库中的所有表,这些表不会被复制到从服务器。
replicate-wild-ignore-table = mysql.%
#忽略 information_schema 数据库中的所有表,这些表也不会被复制到从服务器。
replicate-wild-ignore-table = information_schema.%
#这个选项开启GTID模式,这是一个在复制中用来唯一标识事务的方式。
gtid-mode=ON
#当开启GTID模式时,这个选项确保只允许可以安全地记录在GTID模式下的事务执行。
enforce_gtid_consistency=on
#这使从服务器将复制的事务写入自己的二进制日志中,这对级联复制或备份非常有用。
log-slave-updates=true
#设置复制主服务器信息存储在表中,而不是文件。
master-info-repository=TABLE
#设置中继日志信息存储在表中,而不是文件。
relay-log-info-repository=TABLE
#指定中继日志的路径。
relay_log = /usr/local/mysql/relay.log
#指定中继日志索引文件的路径。
relay_log_index = /usr/local/mysql/relay_log.index
#设置MySQL复制从服务器应当向主服务器报告的端口号。
report-port = 3306
#使从服务器同步写入其当前的主服务器信息到其磁盘上。
sync-master-info=1
#设置在从服务器上并行复制的线程数。
slave_parallel_workers=5
#开启二进制日志的校验和,使用CRC32校验算法。
binlog-checksum=CRC32
#使主服务器在发送事件之前验证二进制日志事件的校验和。
master-verify-checksum=1
#使从服务器在执行二进制日志事件前验证事件校验和。
slave-sql-verify-checksum=1
#在二进制日志中记录与行变更相关的事件。
binlog-rows-query-log_events=1
#在自增字段上,增加值的步长设置为2。
auto-increment-increment = 2
#主1从2, 在自增字段上,起始偏移量设置为2,当与increment一起使用时,可以帮助避免在复制设置中的自增ID冲突。
auto-increment-offset = 2
#从服务器在复制过程中遇到错误时将跳过所有错误,这是一个危险的做法,通常不推荐在生产环境中使用,因为它可能导致数据不一致。
#slave-skip-errors = all
#防止复制随着mysql启动而自动启动, 防止在MySQL服务器启动时自动启动复制进程。
skip-slave-start = 1
#设置从服务器的并行复制类型为基于逻辑时钟的并行复制。
slave-parallel-type = LOGICAL_CLOCK
三、重启A/B服务MySQL
3.1 重启A服务MySQL
sh /etc/init.d/mysql restart

3.2 重启B服务MySQL
sh /etc/init.d/mysql restart

四、进入A服务MySQL客户端进行配置主节点
#进入MySQL部署目录
cd /usr/local/mysql/bin/#进入MySQL客户端
./mysql -uroot -p123456 

#授权从服务访问权限
# GRANT:授权命令。
# Replication Slave:授予的权限类型,允许用户作为复制从属服务器。
# *.*:表示所有数据库和所有表。
# 'root'@'192.168.116.134':用户名和允许连接的IP地址。这里的用户名是root,允许从192.168.116.134这个IP地址连接。
# Identified By '123456':设置用户的密码为123456。Grant replication slave on *.* to 'root'@'192.168.116.134' identified by '123456';#刷新MySQL的权限表,使得新的权限设置立即生效。
flush privileges;

五、进入B服务MySQL客户端配置从节点
#进入MySQL部署目录
cd /usr/local/mysql/bin/#进入MySQL客户端
./mysql -uroot -p123456 

#CHANGE MASTER TO:这是MySQL的一个命令,用于更改从服务器连接到主服务器的配置。
#MASTER_HOST='master_ip':指定主服务器的IP地址。你需要将 'master_ip' 替换为实际的主服务器IP地址。
#MASTER_USER='replication_user':指定用于复制的用户名。这个用户必须已经在主服务器上创建,并且具有复制权限。
#MASTER_PASSWORD='password':指定复制用户的密码。你需要将 'password' 替换为实际的密码。
#MASTER_AUTO_POSITION = 1:这个参数是使用GTID进行复制的关键。它告诉从服务器使用GTID自动定位复制开始的位置,而不是依赖于传统的二进制日志文件名和位置。这简化了复制过程,因为不需要手动确定和设置复制开始的确切位置。CHANGE MASTER TOMASTER_HOST = '192.168.116.133',MASTER_PORT = 3306,MASTER_USER = 'root',MASTER_PASSWORD = '123456',MASTER_AUTO_POSITION = 1;

启动从节点

start slave ;

查看主从同步状态

show slave status\G;

查看Slave_IO_Running状态是否为yes

查看Slave_SQL_Running状态是否为yes

查看Last_SQL_Error是否为空

以上检查无误的话B服务MySQL已经可以同步A服务MySQL的数据了


六、验证数据同步
6.1、下面验证下,在A服务创建一个testMysql的数据库,然后查询B服务是否存在,
#创建数据库testMysql
CREATE DATABASE `testMysql` ;#查看数据库
show databases ;

6.2、查看B服务是否存在testMysql数据库
#查看数据库
show databases ;

此时可以看到,B服务MySQL已经将testMysql同步成功,此时一主一从搭建成功。

七、因为我们现在是需要搭建双主互为主从,这样的话还需要将B服务MySQL作为主,A服务MySQL作为从
7.1、进入B服务MySQL,配置主节点,授权A服务访问
#授权从服务访问权限
# GRANT:授权命令。
# Replication Slave:授予的权限类型,允许用户作为复制从属服务器。
# *.*:表示所有数据库和所有表。
# 'root'@'192.168.116.133':用户名和允许连接的IP地址。这里的用户名是root,允许从192.168.116.133这个IP地址连接。
# Identified By '123456':设置用户的密码为123456。Grant replication slave on *.* to 'root'@'192.168.116.133' identified by '123456';#刷新MySQL的权限表,使得新的权限设置立即生效。
flush privileges;

7.2、进入A服务MySQL,配置从节点,并启动从节点
#CHANGE MASTER TO:这是MySQL的一个命令,用于更改从服务器连接到主服务器的配置。
#MASTER_HOST='master_ip':指定主服务器的IP地址。你需要将 'master_ip' 替换为实际的主服务器IP地址。
#MASTER_USER='replication_user':指定用于复制的用户名。这个用户必须已经在主服务器上创建,并且具有复制权限。
#MASTER_PASSWORD='password':指定复制用户的密码。你需要将 'password' 替换为实际的密码。
#MASTER_AUTO_POSITION = 1:这个参数是使用GTID进行复制的关键。它告诉从服务器使用GTID自动定位复制开始的位置,而不是依赖于传统的二进制日志文件名和位置。这简化了复制过程,因为不需要手动确定和设置复制开始的确切位置。CHANGE MASTER TOMASTER_HOST = '192.168.116.134',MASTER_PORT = 3306,MASTER_USER = 'root',MASTER_PASSWORD = '123456',MASTER_AUTO_POSITION = 1;#启动从节点
start slave ;

7.3、查看从节点A服务MySQL同步状态

show slave status\G ;

查看Slave_IO_Running状态是否为yes

查看Slave_SQL_Running状态是否为yes

查看Last_SQL_Error是否为空

以上检查无误的话A服务MySQL已经可以同步B服务MySQL的数据了

7.3、验证数据同步

在B服务的testMysql数据库下创建一个test表,查看A服务MySQL是否同步过来

#先查看下所有数据库
show databases;#进入testmysq数据库
use testmysql;#查看testmysq数据库的表
show tables;#创建test表
CREATE TABLE `test` (`id` INT NULL,`name` VARCHAR(50) NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB; #查看表
show tables ;

此时可以看到B服务的test表已经创建成功了,此时我们看下A服务MySQL是否同步

通过验证可以看到A同步B,B同步A,已经全部同步成功,双主互为主从已经搭建完成。

八、如果想清除主从状态,可以使用下面命令:

#停止从节点,这个命令用于停止从服务器上的复制进程。在更改复制设置之前,通常需要先停止复制
stop slave;#这个命令用于重置从服务器上的复制设置,包括清除所有复制信息和配置。执行此命令后,从服务器将不再知道主服务器的信息,需要重新配置。
reset slave all;#这个命令用于重置主服务器上的二进制日志文件,删除所有现有的二进制日志,并创建一个新的日志文件。这个命令通常在主服务器上执行,以清除所有旧的日志记录。
reset master;

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

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

相关文章

【音视频基础概念】颜色与图像

文章目录 前言一、三原色不同三原色的概念三原色的作用 二、颜色空间颜色空间是什么颜色空间的作用常见颜色空间示例灰度图像是什么灰度图像的作用灰度图像的技术细节示例 总结 前言 在当今数字媒体时代,音视频技术在我们的日常生活中占据了重要位置。无论是观看电…

线代与图形学的暧昧二三事

A Swift and Brutal Introduction to Linear Algebra 计算机图形学依赖于线性代数、微积分、统计...物理方面涉及到光学(波动光学:不再假设光是直线传播,作为一种光波与物体表面材质进行作用接触,如何生成不同的外观)…

STM32硬件接口I2C应用(基于BH1750)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 光照传感器BH1750 3.1 认识BH1750 3.2 BH1750寄存器 3.3 采集数据流程 4 BH1750驱动实现 4.1 接口函数实现 4.2…

vite+js配置

vite js 配置路径 npm install types/node --save-dev vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue //需要引入 import path from path// https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],resolve: {a…

港口与航运3D三维虚拟仿真展区让更多人了解到海洋知识

在短短20天内,搭建起200多家线上3D展厅,听起来似乎是一项艰巨的任务。然而,对于我们的3d云展平台而言,这早已成为常态。连续三年,我们已成功为众多会展公司在短时间内构建出几百家甚至上千家的线上3D展会,见…

简单的利用有限脉冲响应(FIR)滤波器对心电信号进行降噪(Python)

代码很简单。 import numpy as np import matplotlib.pyplot as plt#------------------------Bandstop Filter Function------------------------ def bandstop(M,low,high,Fs):#50Hz removalk1 int( (low/Fs)*M) # index 22k2 int( (high/Fs)*M) # index 27#DC removalk0 …

关于C++的IO流简单总结

基础IO流 C的IO以面向对象的形式实现, 同时兼容了C语言面向过程的IO方式 C 标准库提供了四个基本流对象: cin:用于从标准输入(通常是键盘)读取数据。 cout:用于向标准输出(通常是控制台)写入…

怎么使用Stable diffusion中的models

Stable diffusion中的models Stable diffusion model也可以叫做checkpoint model,是预先训练好的Stable diffusion权重,用于生成特定风格的图像。模型生成的图像类型取决于训练图像。 如果训练数据中从未出现过猫的图像,模型就无法生成猫的…

面试八-存泄漏是什么,有哪几种,怎么解决?

一、内存泄漏几种情况 当使用基类指针指向派生类对象时,如果基类的析构函数不是虚函数,那么在使用基类指针来删除这个对象时,只会调用基类的析构函数,而不会调用派生类的析构函数。这就导致了派生类中的资源无法正确释放&#xff…

22公司斩获亚洲品牌经济峰会“亚洲数字化服务领军企业奖”

5月25日,以“亚洲新势力:创新、融合与可持续发展”为主题的亚洲品牌经济峰会2024深圳会议在深圳益田威斯汀酒店举办,本次活动由中国亚洲经济发展协会指导,由亚洲国际品牌研究院主办,旨在搭建品牌创新与经济发展交流平台…

B站pink老师CSS学习(一)

文章目录 一、CSS基础选择器1.标签选择器2.类选择器3. id选择器4.通配符选择器 二、字体属性1.字体2.字体大小3.字体粗细4.文字样式5.复合属性 三、文本属性1.文本颜色2.对齐文本3.装饰文本4.文本缩进5.行间距 四、CSS引入方式1. 内部样式表2.行内样式表3.外部样式表 一、CSS基…

CTF流量分析之wireshark使用

01.基本介绍 在CTF比赛中,对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供一个包含流量数据的pcap文件,参赛选手通过该文件筛选和过滤其中无关的流量信息,根据关键流量信息找出flag或者相关线索。 pcap流量包的分析通常…

响应式页面布局处理-一篇打尽

纯pc端响应式 pc端平常用到的响应式布局 大致就如下三种,当然也会有其他方法,欢迎评论区补充 将div height、width设置成100% flex布局 flex布局主要是将flex-wrap: wrap, 最后,你可以通过给子元素设置 flex 属性来控制它们的…

布隆过滤器-详解及使用

一、什么是布隆过滤器 1、简介 布隆过滤器是一个很长的二进制向量和一系列随机映射函数。可以用于检索一个元素是否在一个集合中。。理解为SET集合。 布隆过滤器其内部维护了一个全为 0 的 bit 数组,需要说明的是,布隆过滤器有一个误判的概念&#xf…

如何搭建雾锁王国多人联机服务器,搭建教程分享

雾锁王国(Enshrouded)是一款融合了生存、制作以及动作RPG战斗的游戏,2024年1月24日在Steam平台以抢先体验形式发售,支持中文。游戏背景设定在一个基于体素构筑的辽阔大陆上。玩家将在这个开放世界中自由选择前进的方向&#xff0c…

机器视觉HALCON:3.图像获取,运算,率噪,滤波(边缘),锐化

目录 图像获取生成单通道图像图像运算加法运算减法运算乘法运算除法 仿射变换图像平滑(噪点处理)高斯滤波均值滤波中值滤波多图像均值 边缘滤波索贝尔滤波凯尼滤波 图像锐化索贝尔锐化拉普拉斯锐化高通滤波锐化几种锐化方式对比 图像获取 用到的函数&…

8个最佳实践,助你打造成功的短剧平台开发团队

当涉及到跨境电商平台开发,成功的团队至关重要。在这篇文章中,我将分享8个最佳实践,助你打造成功的短剧平台开发团队。无论是经验丰富的团队还是初创企业,这些实践都能为你的团队带来价值,提高开发效率,确保…

lua 计算第几周

需求 计算当前赛季的开始和结束日期,2024年1月1日周一是第1周的开始,每两周是一个赛季。 lua代码 没有处理时区问题 local const 24 * 60 * 60 --一整天的时间戳 local server_time 1716595200--todo:修改服务器时间 local date os.date("*t…

快速复制成功模式:解读SaaS裂变工具的核心价值

在数字化快速发展的今天,企业如何在竞争激烈的市场中迅速站稳脚跟,成为许多企业家和管理者关注的焦点。SaaS裂变工具作为一种创新的解决方案,以其独特的优势,帮助企业快速复制成功模式,实现业务的快速增长。 SaaS裂变工…

Mysql 单行转多行,把逗号分隔的字段拆分成多行

一、拆分前后的数据 二、执行SQL select substring_index(substring_index(a.gzlx,,,b.help_topic_id1),,,-1) gzlxname, a.gzlx,a.* from dt_task_zxgz_info a join mysql.help_topic b on b.help_topic_id < (length(a.gzlx) - length(replace(a.gzlx,,,))1) 三、解释说…