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 TO
 MASTER_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 TO
 MASTER_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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在XP/Vista系统下使用Node.js的babel-cli命令行工具转码ES6语法的js文件,让IE8浏览器也能运行

在XP系统下IE浏览器最高只能装到IE8,在Vista系统下最高只能装到IE9。 2015年以后,JavaScript新增了很多语法,比如class、extends,还有let和const等等,这些语法都是XP下的终端浏览器IE8所不支持的。要想让使用了这些新式…

Linux安装教程 (centOS-7)

目录 安装 修改主机名 配置静态IP 镜像下载地址 https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso VMware Workstation Pro下载 VMware Workstation Pro各版本下载(2024.5.5之后)(Windows与Linux安装包不限…

关于 CSS 的那些事儿,我竟然都不知道

CSS 是一种美丽且复杂的技术,我们每天在工作中都会用到。然而,包括我在内的许多开发者都忽略了它的一些重要方面。 这很明显,因为在互联网上很难找到关于 CSS 的新知识或高级内容。大多数内容创作者只写一些热门话题,比如新语言、…

vbs执行报错vbs没有文件拓展,双击无法打开

如果看不到文件扩展名需要设置: 无法双击打开vbs 一般为注册表问题 解决办法 将下方代码保存为xxx.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.VBS] "VBSFile" [HKEY_CLASSES_ROOT.VBS\PersistentHandler] "{5e941d80-bf96-…

【教学类-59-01】专注力视觉训练01(圆点百数图)

背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…

展锐UIS7885+android13代码目录

文章目录 bsp目录1. bootloader1.1 chipram1.2 lk1.1 平台启动初始化代码目录1.2 命令实现、下载和启动等相关代码 2. kernel目录(如kernel5.4)2.1 设备树目录2.2 内核配置文件 bsp目录 1. bootloader 1.1 chipram 说明目录展锐芯片arch\arm\include arch\arm\cpu\armv8驱动…

Vue 实例

一、页面效果图 二、代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"../vue.js" type"text/javascript"></script><title>vue 实例</title></head><body>&l…

与AI对话 --如何更好的使用AI工具

文章目录 与AI对话 --如何更好的使用AI工具1、认识AI工具&#xff1a;2、对话原则&#xff1a;3、提问步骤&#xff1a;4、AI可以学习什么&#xff1f;5、提问技巧&#xff1a;1、提出假设性问题:2、&#xff08;鼓励引导式提问&#xff09;跨学科思考:举个例子&#xff1a; 3、…

哪里能下载到合适的衣柜3D模型素材?

室内设计师在进行家居设计时&#xff0c;衣柜3D模型素材是非常重要的工具。那么&#xff0c;哪里能下载到合适的衣柜3D模型素材呢? 一、建e网&#xff1a; ①建e网是一个专注于3D模型素材分享的平台&#xff0c;上面可以找到大量的衣柜3D模型。 ②该网站提供的模型种类丰富&am…

证件照换底色推荐什么软件好?这五个可以随意换证件照底色

证件照&#xff0c;无论是考证还是工作&#xff0c;都是我们生活中不可或缺的一部分。 一张高质量的证件照&#xff0c;不仅能够展示我们专业的形象&#xff0c;还能在众多候选人中脱颖而出。像这种时候&#xff0c;我们就可以使用证件照制作软件啦&#xff01;无论是考证、护…

引导过程与服务控制06

引导过程与服务控制 一、引导过程 引导过程&#xff1a;当你按下开机的电源键直到屏幕显示登录的画面&#xff0c;这中间系统做的一些的开机过程。 1、开机自检&#xff08;BIOS&#xff09; 服务器开机之后&#xff0c;根据主板的bios设置&#xff0c;对cup 内存&#xff0…

sendmail发送邮件配置详解?如何正确设置?

sendmail发送邮件如何保障安全&#xff1f;AokSend有何安全措施&#xff1f; 为了确保sendmail发送邮件的高效性和安全性&#xff0c;正确配置是至关重要的。本文将详细介绍sendmail发送邮件的配置步骤&#xff0c;并探讨如何保障sendmail发送邮件的安全性。同时&#xff0c;我…

cesium本地文档-天空盒-arcgis切片404-服务查询

1.vite-plugin-cesium // vite-plugin-cesium 是一个 Vite 插件&#xff0c;用于在 Vite 项目中轻松集成和使用 Cesium 地图引擎。它简化了在 Vite 项目中使用 Cesium 的配置和引入过程。 // 具体来说&#xff0c;vite-plugin-cesium 主要提供了以下功能&#xff1a; // 自动…

人大金仓 KingBase查询死锁,释放死锁

人大金仓(kingbase)查询数据库死锁及释放 kingbase锁表排查以及释放锁 总结下 -- 查询&#xff0c;可自己添加where条件 SELECT * FROM sys_stat_activity WHERE state ! idle AND wait_event_typeLock-- 结束进程 SELECT sys_terminate_backend(pid);

JAVA:Random详解

Java中的java.util.Random类用于生成伪随机数。它提供了多种方法来生成不同类型的随机数&#xff0c;包括整数、浮点数和布尔值。以下是对Random类及其主要方法的详细介绍 一、生成随机数 创建一个Random对象&#xff0c;可以使用以下两种方式&#xff1a; 无参构造函数&…

qemu使用简介

安装qemu git clone https://github.com/qemu/qemu.git mkdir build cd build ../configure make -j16 make install 编译内核 wget https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/linux-5.10.tar.xz tar -xf linux-5.10.tar.xzsudo apt-get install gcc-arm-linux-g…

利用C++与Python调用千帆免费大模型,构建个性化AI对话系统

千帆大模型已于2024年4月25日正式免费&#xff0c;调用这个免费的模型以实现自己的AI对话功能&#xff0c;遵循以下步骤&#xff1a; 了解千帆大模型&#xff1a; 千帆大模型是百度智能云推出的一个平台&#xff0c;提供了一系列AI能力和工具&#xff0c;用于快速开发和应用A…

Three.js 中的场景与相机基础

Three.js 中的场景与相机基础 一、场景&#xff08;Scene&#xff09; 在 Three.js 中&#xff0c;场景是所有 3D 对象存在和交互的容器。艾斯视觉作为行业ui设计与前端开发服务商很高兴能在这里与你共同探讨&#xff1a;它就像是一个虚拟的 3D 空间&#xff0c;我们可以在其中…

docker安装nacos单机部署

话不多说,直接进入主题 1.查看nacos镜像 docker search nacos 一般选第一个也就是starts最高的。 2.拉取nacos镜像 docker pull nacos/nacos-serverdocker pull nacos/nacos-server:1.4.1 由于我使用的项目alibabacloud版本对应的是nacos1.4.1版本的,所以我安装的是1.4.1…

Data Lakehouse:你的下一个数据仓库

作者&#xff1a;张友东 StarRocks TSC member/镜舟科技 CTO 数据分析是现代企业和组织决策过程中不可或缺的一部分&#xff0c;数据分析技术经过数十年的发展&#xff0c;需求场景从 BI 报表到数据探寻、实时预测、用户画像等不断丰富&#xff0c;技术架构经历从数据仓库、数据…