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.hqwc.cn/news/307997.html

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

相关文章

uniapp路由

1、路由登记 uni-app页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。 类似小程序在 app.json 中配置页面路由一样。 所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue Router 方式管理路由,…

7.6分割回文串(LC131-M)

算法: 有很多分割结果,按照for循环去做肯定做不来 这个时候就要想到回溯!那就要画树! 画树 分割的画树过程其实和组合很像。 例如对于字符串aab: 组合问题:选取一个a之后,在ab中再去选取第…

2020年认证杯SPSSPRO杯数学建模B题(第一阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现: 以广播的方式来进行无线网通信,必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题,在同一个时间段内,只有唯一一个拿到令牌…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-00x00

如上表所示,MOE0,OSSI0,CCxE0,CCxNE0时,OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…

Matlab:BP神经网络算法,二叉决策树

1、BP神经网络算法 (1)步骤 1.准备训练数据和目标值 2.创建并配置BP神经网络模型 3.训练BP神经网络模型 4.用BP神经网络模型预测数据 例:某企业第一年度营业额为132468,第二年度为158948,第三年度为183737,预测第四年度的营…

VScode的入门手册(IDEA迁移到VScode)

从IDEA迁移到VScode的过程中,会有很多不适应的地方,下面算是一篇VScode的入门手册,也可以说是从IDEA迁移到VScode的手册。 命令面板(Command Palette) 允许你快速访问和执行命令。 在 Visual Studio Code 中&#x…

GPT编程(1)八分类图像数据集转换为二分类

一个核心问题就是要将这八类数据图片全部重命名,尝试了一步到位 有一个图像数据集,有八个类别amusement,anger,awe,contentment,disgust, excitement, fear,sadness的图片,每张图片被命名为“类别数字”。采用遍历的方式,按顺序阅…

Animate 2024(Adobe an2024)

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

LT8612UX-HDMI2.0 to HDMI2.0 and VGA Converter with Audio,支持三通道视频DAC

HDMI2.0 to HDMI2.0 and VGA Converter with Audio 1. 描述 LT8612UX是一个HDMI到HDMI和vga转换器,它将HDMI2.0数据流转换为HDMI2.0信号和模拟RGB信号。 它还输出8通道I2S和SPDIF信号,使高质量的7.1通道音频。 LT8612UX支持符合HDMI2.0/ 1.4规范的…

Typora快捷键设置详细教程

文章目录 一、快捷键设置步骤二、设置快捷键简单案例参考资料 一、快捷键设置步骤 在typora软件中,快捷键的设置步骤主要为: 打开【文件】–>【偏好设置】,找到【通用】–>【打开高级设置】,找到 conf.user.json 文件。 然…

鸿蒙4.0实战教学—基础ArkTS(简易视频播放器)

构建主界面 主界面由视频轮播模块和多个视频列表模块组成,效果图如图: VideoData.ets中定义的视频轮播图数组SWIPER_VIDEOS和视频列表图片数组HORIZONTAL_VIDEOS。 // VideoData.ets import { HorizontalVideoItem } from ./HorizontalVideoItem; impo…

MongoDB 概念介绍

1、MongoDB 应用场景 传统的关系型数据库,在数据操作的"三高"需求以及应对Web2.0的网站需求面前,显得力不从心。 High performance -对数据库高并发读写的需求。Huge Storage -对海量数据的高效率存储和访问的需求。High Scalability &&…