目录
一、环境描述
二、安装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_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,整个二主二从服务部署成功。
好了,本次分享就到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!