MYSQL二主二从集群部署

目录

一、环境描述

二、安装mysql

2.1 卸载mysql(如果没安装过,可忽略)

2.1.1 列出安装的mysql

2.1.2 卸载mysql

2.1.3 删除mysql文件目录

2.1.3.1 查看mysql 目录

2.1.3.2 依次删除

2.2 在线安装

2.2.1 下载安装源

2.2.2 安装源rpm

2.2.3 加入rpm密钥

2.2.4 执行安装

2.2.5 设置开机自启动

2.2.6 修改密码

2.2.6.1 获取临时密码

2.2.6.2 登录MySQL

2.2.6.3 设置密码策略

 2.2.6.4 设置密码最小长度

2.2.6.5 设置root密码

2.2.6.6 开启MySQL远程连接权限

三、主从关系配置

3.1 主库设置(主库一)

3.1.1修改/etc/my.cnf

3.1.2 重启mysql

3.1.3 创建从数据库连接账号/密码

3.2  主库设置(主库二)

3.2.1 修改/etc/my.cnf

3.2.2 重启mysql

3.2.3 创建从数据库连接账号/密码

3.3 设置主库之间进行数据同步

3.3.1 主库一同步/复制数据

3.3.1.1 查看master信息

3.3.1.2 设置同步信息

3.3.1.3 开启同步

3.3.1.4 查看同步状态

3.3.2 设置主库二同步/复制数据数据

3.3.2.1 查看master信息

3.3.2.2 设置同步信息

3.3.2.3 开启同步

3.3.2.4 查看同步状态

3.3.3  验证主库之间同步数据

3.4 从库设置(从库一)

3.4.1 修改/etc/my.cnf

3.4.2 重启mysql

3.4.3 设置从库向主库同步/复制数据

3.4.3.1 登录数据库

3.4.3.2 查看同步状态(主库一、主库二)

3.4.3.3 设置主库登录信息

3.4.3.4 开启同步

3.4.3.5 查看同步状态

3.5 从库设置(从库二)

3.5.1 修改/etc/my.cnf

3.5.2 重启mysql

3.5.3 设置从库向主库同步/复制数据

3.5.3.1 登录数据库

3.5.3.2  查看同步状态(主库一、主库二)

3.5.3.3 设置主库登录信息

3.5.3.4 开启同步

3.5.3.5 查看同步状态

3.5.3.6 验证从库之间同步数据


一、环境描述

系统环境描述:本教程基于CentOS 8.0版本虚拟机

mysql 规划(二主二从)

节点MySQL(主)MySQL(从)IP
node1*192.168.31.8
node2*192.168.31.9
node3*192.168.31.167
node4*192.168.31.154

软件版本:
MySQL   5.7

二、安装mysql

2.1 卸载mysql(如果没安装过,可忽略)

2.1.1 列出安装的mysql

rpm -qa | grep -i mysql

2.1.2 卸载mysql

-- 依次卸载上一步骤罗列出来的依赖yum remove mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64yum remove mysql57-community-release-el7-10.noarch

2.1.3 删除mysql文件目录

2.1.3.1 查看mysql 目录
find / -name mysql
2.1.3.2 依次删除
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql

2.2 在线安装

2.2.1 下载安装源

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2.2.2 安装源rpm

yum -y install mysql57-community-release-el7-10.noarch.rpm

2.2.3 加入rpm密钥

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

2.2.4 执行安装

yum -y install mysql-community-server

在CentOS 8 下会报错:错误:没有任何匹配: mysql-community-server
原因是:【注】出现问题的核心原因为:基于RHEL 8和Oracle Linux 8的基于EL8的系统,在默认情况下附带了一个名为mysql的模块。 除非禁用此模块,否则它将屏蔽,
存储库提供的软件包。只要是 EL8系统安装任何版本的 MySQL 都会有这样的问题。

需要执行一下命令:yum module disable mysql

接着再执行:yum -y install mysql-community-server

然后安装是,执行事务检查报错:
错误:事物测试失败:
file /etc/my.cnf from install of mysql-community-server-5.7.43-1.el7.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch

原因分析:
网上搜了下,说是我的yum 里面安装了mariadb-connector-c-config.noarch ,于是就要执行命令查看一下

yum list installed

果然如此,于是,就要删除掉mariadb-connector-c-config.noarch,

yum remove mariadb-connector-c-config.noarch

接着再执行:

yum -y install mysql-community-server


成功了

2.2.5 设置开机自启动

systemctl start mysqld.servicesystemctl status mysqld.service

2.2.6 修改密码

2.2.6.1 获取临时密码
grep "password" /var/log/mysqld.log
2.2.6.2 登录MySQL
mysql -uroot -p
2.2.6.3 设置密码策略
#设置密码策略为LOW,此策略只检查密码的长度set global validate_password_policy=LOW;
 2.2.6.4 设置密码最小长度
set global validate_password_length=6;
2.2.6.5 设置root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xiaoning';
2.2.6.6 开启MySQL远程连接权限
grant all privileges  on  *.* to 'root'@'%' identified by 'xiaoning' with grant option;

提示:以上操作,二主二从服务器都需要执行!

三、主从关系配置

3.1 主库设置(主库一)

3.1.1修改/etc/my.cnf

vim  /etc/my.cnf#开启⼆进制⽇志
log-bin=mysql-bin
#设置服务id
server-id=1#设置不要复制的数据库binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#设置需要复制的数据库
binlog-do-db=mydb
#设置logbin格式;可选值:STATEMENT、ROW、MIXED
binlog_format=STATEMENT#作为从数据库的时候,有写⼊操作也要更新⼆进制⽇志⽂件log-slave-updates=1#⾃增⻓字段从哪个数开始auto-increment-offset=1#⾃增⻓字段每次递增的量auto-increment-increment=2#中继日志relay-log=relay-log-bin#中继日志relay-log-index=relay-log-bin.index

3.1.2 重启mysql

systemctl restart mysqld.service

3.1.3 创建从数据库连接账号/密码

# 创建slave⽤户
CREATE USER 'ning_slave1'@'%' IDENTIFIED BY 'xiaoning';
# 设置密码
ALTER USER 'ning_slave1'@'%' IDENTIFIED WITH
mysql_native_password BY 'xiaoning';
# 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'ning_slave1'@'%';
# 刷新权限
FLUSH PRIVILEGES;

3.2  主库设置(主库二)

3.2.1 修改/etc/my.cnf

#开启⼆进制⽇志
log-bin=mysql-bin
#设置服务id
server-id=2#设置不要复制的数据库binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#设置需要复制的数据库
binlog-do-db=mydb
#设置logbin格式;可选值:STATEMENT、ROW、MIXED
binlog_format=STATEMENT#作为从数据库的时候,有写⼊操作也要更新⼆进制⽇志⽂件log-slave-updates=1#⾃增⻓字段从哪个数开始auto-increment-offset=2#⾃增⻓字段每次递增的量auto-increment-increment=2#中继日志relay-log=relay-log-bin#中继日志relay-log-index=relay-log-bin.index

3.2.2 重启mysql

systemctl restart mysqld.service

3.2.3 创建从数据库连接账号/密码

# 创建slave⽤户
CREATE USER 'ning_slave2'@'%' IDENTIFIED BY 'xiaoning';
# 设置密码
ALTER USER 'ning_slave2'@'%' IDENTIFIED WITH
mysql_native_password BY 'xiaoning';
# 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'ning_slave2'@'%';
# 刷新权限
FLUSH PRIVILEGES;

3.3 设置主库之间进行数据同步

3.3.1 主库一同步/复制数据

3.3.1.1 查看master信息
show master status\G

3.3.1.2 设置同步信息
CHANGE MASTER TO MASTER_HOST='192.168.31.9',
MASTER_USER='ning_slave2',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;

注意,这里 MASTER_LOG_POS=123;参照的是执行show master status\G命令后返回的Position:  123 值;

3.3.1.3 开启同步
start slave;
3.3.1.4 查看同步状态
show slave status\G;

说明:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。

3.3.2 设置主库二同步/复制数据数据

3.3.2.1 查看master信息
show master status\G

3.3.2.2 设置同步信息
CHANGE MASTER TO MASTER_HOST='192.168.31.8',
MASTER_USER='ning_slave1',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;

注意,这里 MASTER_LOG_POS=123;参照的是执行show master status\G命令后返回的Position: 154 值;

3.3.2.3 开启同步
start slave;
3.3.2.4 查看同步状态
show slave status\G;

说明:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。

3.3.3  验证主库之间同步数据

在主库一新建test库,查看主库二是否同步数据

测试结果发现,主库二同步了主库一新建的数据库,主库部署成功。

3.4 从库设置(从库一)

3.4.1 修改/etc/my.cnf

#开启⼆进制⽇志
log-bin=mysql-bin
#设置服务id
server-id=3
#启⽤中继⽇志relay-log=relay-log-bin#中继日志relay-log-index=relay-log-bin.relay#开启多通道tablemaster-info-repository=TABLE
relay-log-info-repository=TABLE

3.4.2 重启mysql

systemctl restart mysqld.service

3.4.3 设置从库向主库同步/复制数据

3.4.3.1 登录数据库
mysql -uroot -p
3.4.3.2 查看同步状态(主库一、主库二)
show master status\G;
3.4.3.3 设置主库登录信息
CHANGE MASTER TO MASTER_HOST='192.168.31.8',
MASTER_USER='ning_slave1',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154 for channel 'master1';CHANGE MASTER TO MASTER_HOST='192.168.31.9',
MASTER_USER='ning_slave2',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154  for channel 'master2';
3.4.3.4 开启同步
start slave;
3.4.3.5 查看同步状态
show slave status\G;

说明:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。

3.5 从库设置(从库二)

3.5.1 修改/etc/my.cnf

#开启⼆进制⽇志
log-bin=mysql-bin
#设置服务id
server-id=4#中继日志relay-log-index=relay-log-bin.relay#开启多通道tablemaster-info-repository=TABLE
relay-log-info-repository=TABLE

3.5.2 重启mysql

systemctl restart mysqld.service

3.5.3 设置从库向主库同步/复制数据

3.5.3.1 登录数据库
mysql -uroot -p
3.5.3.2  查看同步状态(主库一、主库二)
show master status\G;
3.5.3.3 设置主库登录信息
CHANGE MASTER TO MASTER_HOST='192.168.31.8',
MASTER_USER='ning_slave1',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154 for channel 'master1';CHANGE MASTER TO MASTER_HOST='192.168.31.9',
MASTER_USER='ning_slave2',
MASTER_PASSWORD='xiaoning',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154  for channel 'master2';
3.5.3.4 开启同步
start slave;
3.5.3.5 查看同步状态
show slave status\G;

说明:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。

3.5.3.6 验证从库之间同步数据

从主库一新建一个数据库test3,看下两个从库是否会同步数据

测试结果发现,两个从库同步了主库一新建的数据库test3,整个二主二从服务部署成功。

好了,本次分享就到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

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

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

相关文章

封装uniapp签字板

新开发的业务涉及到签字功能,由于是动态的表单,无法确定它会出现在哪里,不得已封装模块。 其中涉及到一个难点就是this的指向性问题, 第二个是微信小程序写法, 我这个写法里用了u-view的写法,可以自己修改组…

证明:切线垂直于半径

证明: 切线垂直于过切点的半径。 下面是网上最简单的证明方法。 证明: 利用反证法。 如下图所示,直线AB和圆O切于点A,假设OA 不垂直于 AB,而 O B ⊥ A B OB \perp AB OB⊥AB,则 ∠ O B A 90 \angle OB…

------- 计算机网络基础

1.1概述 是什么? 答出独立计算机通信线路连接实现资源共享 计算机网络组成 从组成部分看: 硬件软件协议 从工作方式看: 边缘部分和核心部分 从功能组成看: 通信子网和资源子网 计算机网络性能指标 速率是指数据传输的物理速度,吞吐量是指实际的数据传输…

k8s的陈述式资源管理(命令行操作)

(一)k8s的陈述式资源管理 1、命令行:kubectl命令行工具——用于一般的资源管理 (1)优点:90%以上ce场景都可以满足 (2)特点:对资源的增、删、查比较方便,对…

如何使用idea部署springboot项目全过程

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

Adobe 设计精髓:创新的用户体验 | 开源日报 No.130

adobe/react-spectrum Stars: 10.1k License: Apache-2.0 React Spectrum Libraries 是一系列的库和工具,旨在帮助开发者构建适应性强、可访问性好且稳健的用户体验。 核心优势: 提供全面的可访问性和行为支持,符合 WAI-ARIA 编写实践&…

vcpkg 安装开源包 以及 配置 已解决

Vcpkg 可帮助您在 Windows、 Linux 和 MacOS 上管理 C 和 C 库。 这个工具和生态链正在不断发展,我们一直期待您的贡献! 若您从未使用过 vcpkg,或者您正在尝试了解如何使用 vcpkg,请查阅 入门 章节。 如需获取有关可用命令的简短…

大创项目推荐 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

Animate 2024(Adobe an2024)

Animate 2024是一款由Adobe公司开发的动画和互动内容创作工具,是Flash的演进版本。Animate 2024为设计师和开发者提供了更丰富的功能,让他们能够创建各种类型的动画、交互式内容和多媒体应用程序。 Animate 2024具有以下特点: 强大的设计工…

k8s的资源管理

命令行: kubectl命令行工具优点: 90%以上的场景都可以满足 对资源的增,删,查比较方便,对改不是很友好缺点:命令比较冗长,复杂难记 声明方式:k8s当中的yaml文件实现资源管理----声明式GUI:图形化工具的管理。 查看k8s的…

PiflowX组件-WriteToKafka

WriteToKafka组件 组件说明 将数据写入kafka。 计算引擎 flink 有界性 Streaming Append Mode 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号…

使用Commons JXPath简化XML/JSON处理

第1章:引言 咱们都知道,在现代软件开发中,处理XML和JSON数据几乎是家常便饭。这两种格式广泛应用于配置文件、数据交换、API响应等领域。不过,要手动解析和操作它们,有时候真是让人头大。 当你面对一堆复杂的XML或JS…

JavaSE语法之十一:接口(超全!!!)

文章目录 1. 概念2. 语法规则3. 接口使用4. 接口特性5. 实现多个接口6. 接口间的继承7. 接口使用实例8. Clonable 接口和深拷贝9. 抽象类和接口的区别(重要!) 1. 概念 在现实生活中的接口比比皆是,如:笔记本上的USB接…

Flink 输出至 Elasticsearch

【1】引入pom.xml依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-elasticsearch6_2.12</artifactId><version>1.10.0</version> </dependency>【2】ES6 Scala代码&#xff0c;自动导入的…

私有部署ELK,搭建自己的日志中心(五)-- 使用filebeat采集K8S pod的jvm日志

一、背景 前文采集的日志是来源于虚拟机&#xff0c;在云原生下的容器化部署时&#xff0c;需要采集Pod里的jvm日志。 二、术语 1、临时存储emptyDir emptyDir在Pod被分配到Node时创建的&#xff0c;它的初始内容为空&#xff0c;并且无须指定宿主机上对应的目录文件&#…

分布式系统架构设计之分布式系统架构演进和版本管理

在分布式系统的生命周期中&#xff0c;架构演进和版本管理是很重要的两个环节。本部分会介绍分布式系统架构演进的原则、策略以及版本管理的最佳实践&#xff0c;以帮助研发团队更好地应对需求变化、技术发展和系统升级。 架构演进 演进原则 渐进式演进 采用渐进式演进的原…

VsCode(Visual Studio Code) 安装插件教程

VsCode&#xff08;Visual Studio Code&#xff09; 安装插件教程 1、打开VsCode 桌面上、最近安装程序上找找吧 在桌面上双击&#xff0c;打开 2、打开的效果图 3、点击左侧最后的插件图标 4、打开后如下图所示 5、在输入框中输入Go 6、同样在安装插件页面也可以卸载、安装…

WPF 显示气泡提示框

气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方&#xff0c;为了让用户更直观&#xff0c;快速了解提示信息&#xff0c;使用简洁、好看又方便的气泡提示框显得更加方便&#xff0c;更具人性化。如下面例子&#xff1a;(当用户未输入账号时&#xff0…

抬头举手阅读YOLOV8NANO

首先用YOLOV8NANO得到PT模型&#xff0c;转换成ONNX,OPENCV调用&#xff0c;PYTHON,C,ANDROID都可以举手写字阅读YOLOV8NANO

android studio 将含有jni c++ 的library项目封装成jar并调用

请参考博客&#xff1a;android studio 4.1.1 将library项目封装成aar 并调用_android studio 4.1 aar release-CSDN博客 一 . 简单叙述 android studio 中可以创建Module 的两种属性&#xff0c;可以在build.gradle 中查看&#xff1a; 1. application属性&#xff1a;可以独…