MYSQL二主二从集群部署
目录
一、环境描述
系统环境描述:本教程基于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_64
yum 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.service
systemctl 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
#开启多通道table
master-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
#开启多通道table
master-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,整个二主二从服务部署成功。
好了,本次分享就到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!