目录
[2.1 卸载mysql(如果没安装过,可忽略)](#2.1 卸载mysql(如果没安装过,可忽略))
[2.1.1 列出安装的mysql](#2.1.1 列出安装的mysql)
[2.1.2 卸载mysql](#2.1.2 卸载mysql)
[2.1.3 删除mysql文件目录](#2.1.3 删除mysql文件目录)
[2.1.3.1 查看mysql 目录](#2.1.3.1 查看mysql 目录)
[2.1.3.2 依次删除](#2.1.3.2 依次删除)
[2.2 在线安装](#2.2 在线安装)
[2.2.1 下载安装源](#2.2.1 下载安装源)
[2.2.2 安装源rpm](#2.2.2 安装源rpm)
[2.2.3 加入rpm密钥](#2.2.3 加入rpm密钥)
[2.2.4 执行安装](#2.2.4 执行安装)
[2.2.5 设置开机自启动](#2.2.5 设置开机自启动)
[2.2.6 修改密码](#2.2.6 修改密码)
[2.2.6.1 获取临时密码](#2.2.6.1 获取临时密码)
[2.2.6.2 登录MySQL](#2.2.6.2 登录MySQL)
[2.2.6.3 设置密码策略](#2.2.6.3 设置密码策略)
[2.2.6.4 设置密码最小长度](#2.2.6.4 设置密码最小长度)
[2.2.6.5 设置root密码](#2.2.6.5 设置root密码)
[2.2.6.6 开启MySQL远程连接权限](#2.2.6.6 开启MySQL远程连接权限)
[3.1 主库设置(主库一)](#3.1 主库设置(主库一))
[3.1.2 重启mysql](#3.1.2 重启mysql)
[3.1.3 创建从数据库连接账号/密码](#3.1.3 创建从数据库连接账号/密码)
[3.2 主库设置(主库二)](#3.2 主库设置(主库二))
[3.2.1 修改/etc/my.cnf](#3.2.1 修改/etc/my.cnf)
[3.2.2 重启mysql](#3.2.2 重启mysql)
[3.2.3 创建从数据库连接账号/密码](#3.2.3 创建从数据库连接账号/密码)
[3.3 设置主库之间进行数据同步](#3.3 设置主库之间进行数据同步)
[3.3.1 主库一同步/复制数据](#3.3.1 主库一同步/复制数据)
[3.3.1.1 查看master信息](#3.3.1.1 查看master信息)
[3.3.1.2 设置同步信息](#3.3.1.2 设置同步信息)
[3.3.1.3 开启同步](#3.3.1.3 开启同步)
[3.3.1.4 查看同步状态](#3.3.1.4 查看同步状态)
[3.3.2 设置主库二同步/复制数据数据](#3.3.2 设置主库二同步/复制数据数据)
[3.3.2.1 查看master信息](#3.3.2.1 查看master信息)
[3.3.2.2 设置同步信息](#3.3.2.2 设置同步信息)
[3.3.2.3 开启同步](#3.3.2.3 开启同步)
[3.3.2.4 查看同步状态](#3.3.2.4 查看同步状态)
[3.3.3 验证主库之间同步数据](#3.3.3 验证主库之间同步数据)
[3.4 从库设置(从库一)](#3.4 从库设置(从库一))
[3.4.1 修改/etc/my.cnf](#3.4.1 修改/etc/my.cnf)
[3.4.2 重启mysql](#3.4.2 重启mysql)
[3.4.3 设置从库向主库同步/复制数据](#3.4.3 设置从库向主库同步/复制数据)
[3.4.3.1 登录数据库](#3.4.3.1 登录数据库)
[3.4.3.2 查看同步状态(主库一、主库二)](#3.4.3.2 查看同步状态(主库一、主库二))
[3.4.3.3 设置主库登录信息](#3.4.3.3 设置主库登录信息)
[3.4.3.4 开启同步](#3.4.3.4 开启同步)
[3.4.3.5 查看同步状态](#3.4.3.5 查看同步状态)
[3.5 从库设置(从库二)](#3.5 从库设置(从库二))
[3.5.1 修改/etc/my.cnf](#3.5.1 修改/etc/my.cnf)
[3.5.2 重启mysql](#3.5.2 重启mysql)
[3.5.3 设置从库向主库同步/复制数据](#3.5.3 设置从库向主库同步/复制数据)
[3.5.3.1 登录数据库](#3.5.3.1 登录数据库)
[3.5.3.2 查看同步状态(主库一、主库二)](#3.5.3.2 查看同步状态(主库一、主库二))
[3.5.3.3 设置主库登录信息](#3.5.3.3 设置主库登录信息)
[3.5.3.4 开启同步](#3.5.3.4 开启同步)
[3.5.3.5 查看同步状态](#3.5.3.5 查看同步状态)
[3.5.3.6 验证从库之间同步数据](#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
bash
rpm -qa | grep -i mysql
2.1.2 卸载mysql
bash
-- 依次卸载上一步骤罗列出来的依赖
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 目录
bash
find / -name mysql
2.1.3.2 依次删除
bash
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
2.2 在线安装
2.2.1 下载安装源
bash
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2.2.2 安装源rpm
bash
yum -y install mysql57-community-release-el7-10.noarch.rpm
2.2.3 加入rpm密钥
bash
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.2.4 执行安装
bash
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 ,于是就要执行命令查看一下
bash
yum list installed
果然如此,于是,就要删除掉mariadb-connector-c-config.noarch,
bash
yum remove mariadb-connector-c-config.noarch
接着再执行:
bash
yum -y install mysql-community-server
成功了
2.2.5 设置开机自启动
bash
systemctl start mysqld.service
systemctl status mysqld.service
2.2.6 修改密码
2.2.6.1 获取临时密码
bash
grep "password" /var/log/mysqld.log
2.2.6.2 登录MySQL
bash
mysql -uroot -p
2.2.6.3 设置密码策略
bash
#设置密码策略为LOW,此策略只检查密码的长度
set global validate_password_policy=LOW;
2.2.6.4 设置密码最小长度
bash
set global validate_password_length=6;
2.2.6.5 设置root密码
bash
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xiaoning';
2.2.6.6 开启MySQL远程连接权限
bash
grant all privileges on *.* to 'root'@'%' identified by 'xiaoning' with grant option;
提示:以上操作,二主二从服务器都需要执行!
三、主从关系配置
3.1 主库设置(主库一)
3.1.1修改/etc/my.cnf
bash
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
bash
systemctl restart mysqld.service
3.1.3 创建从数据库连接账号/密码
bash
# 创建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
bash
#开启⼆进制⽇志
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
bash
systemctl restart mysqld.service
3.2.3 创建从数据库连接账号/密码
bash
# 创建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信息
bash
show master status\G
3.3.1.2 设置同步信息
bash
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 开启同步
bash
start slave;
3.3.1.4 查看同步状态
bash
show slave status\G;
说明:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。
3.3.2 设置主库二同步/复制数据数据
3.3.2.1 查看master信息
bash
show master status\G
3.3.2.2 设置同步信息
bash
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 开启同步
bash
start slave;
3.3.2.4 查看同步状态
bash
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
bash
#开启⼆进制⽇志
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
bash
systemctl restart mysqld.service
3.4.3 设置从库向主库同步/复制数据
3.4.3.1 登录数据库
bash
mysql -uroot -p
3.4.3.2 查看同步状态(主库一、主库二)
bash
show master status\G;
3.4.3.3 设置主库登录信息
bash
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 开启同步
bash
start slave;
3.4.3.5 查看同步状态
bash
show slave status\G;
说明:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。
3.5 从库设置(从库二)
3.5.1 修改/etc/my.cnf
bash
#开启⼆进制⽇志
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
bash
systemctl restart mysqld.service
3.5.3 设置从库向主库同步/复制数据
3.5.3.1 登录数据库
bash
mysql -uroot -p
3.5.3.2 查看同步状态(主库一、主库二)
bash
show master status\G;
3.5.3.3 设置主库登录信息
bash
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 开启同步
bash
start slave;
3.5.3.5 查看同步状态
bash
show slave status\G;
说明:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两个值都为Yes才是正确的。
3.5.3.6 验证从库之间同步数据
从主库一新建一个数据库test3,看下两个从库是否会同步数据
测试结果发现,两个从库同步了主库一新建的数据库test3,整个二主二从服务部署成功。
好了,本次分享就到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!