CentOS7主从复制MySQL5安装配置

卸载MySQL

清理出来一个干净的环境才方便下一步计划执行

1
2
3
4
5
6
7
#查看已安装:
rpm -qa | grep mariadb
rpm -qa | grep mysql
#卸载查出来的数据库
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
#再次查看:
rpm -qa | grep mysql

一、安装MySQL 5.7

1、下载YUM库

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

MySQL Community Downloads可根据需要进行下载

2、安装YUM库

1
2
3
4
rpm -ivh mysql57-community-release-el7-10.noarch.rpm

# 或者使用以下命令
yum install mysql57-community-release-el7-10.noarch.rpm

3、安装MySQL RPM包

1
2
3
# -y 自动确认
# --nogpgcheck 不匹配公钥安装
yum -y install mysql-community-server --nogpgcheck

4、测试MySQL

1
2
3
4
5
6
7
8
9
10
# 启动mysql服务
systemctl start mysqld
# 停止
systemctl stop mysqld
# 重启
systemctl restart mysqld
# 查看运行状态
systemctl status mysqld
# 开机自启动
systemctl enable mysqld

5、找出MySQL登录密码

1
grep "password" /var/log/mysqld.log

查询出来密码复制,登录备用

6、登录MySQL数据库

1
mysql -u root -p

7、修改密码策略

1
2
3
4
# 密码安全等级
set global validate_password_policy=low;
# 密码长度
set global validate_password_length=4;

MySQL密码校验策略

8、修改密码

1
2
# 设置root用户密码1111
ALTER USER 'root'@'localhost' IDENTIFIED BY '1111';

9、MySQL开启远程连接

1
2
3
4
5
6
7
8
# 选择要使用的数据库
use mysql;
# 设置远程连接
update user set host ="%" where user = "root";
# 或者使用;password为远程登录密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 刷新刚才修改的权限,使其生效。
flush privileges;

二、MySQL主从复制

1、mysql主(master)从(slave)简介

主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。

主从备份要素:
1. 开启主数据库日志功能log_bin
2. 每个数据库需要有一个 server_id,主 server_id 值小于从server_id(标识从哪server写入的)
3. 每个 mysql 都有一个 uuid,由于虚拟机直接进行克隆,需要修改uuid 的值(唯一识别码)

2、配置步骤

主(master)数据库配置

1、开启日志log_bin并配置server_id

1
2
3
4
5
 vim /etc/my.cnf

# 文件中增加以下两行
log_bin=master_log
service_id=1

2、重启mysql并查看日志是否开启

1
2
3
4
5
6
# 重启mysql
systemctl restart mysqld
# 登录
mysql -u root -p
# 查看日志
show master status;

从(slave)数据库配置

1、配置server_id

1
2
3
4
 vim /etc/my.cnf

# 文件中增加以下;主 server_id 值小于从server_id
service_id=2

2、修改uuid

1
2
3
vim /var/lib/mysql/auto.cnf
# 修改为与主数据库不重复即可,本次使用的是虚拟机克隆,导致uuid一样
server-uuid=xxxxxxx5

3、修改slave状态,执行同步命令

1
2
3
4
5
6
7
8
9
# 登录mysql
mysql -u root -p
# 停止同步命令
stop slave;
# 执行同步命令,设置主服务器ip,同步账号密码,同步位置
change master to
master_host='192.168.204.138',master_user='root',master_password='1111',master_log_file='master_log.000001';
# 开启同步功能
start slave;

4、查看slave状态

1
2
# \G 格式化文本
show slave status \G;

输出内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.204.138
Master_User: account
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master_log.000001
Read_Master_Log_Pos: 337523
Relay_Log_File: db2-relay-bin.000002
Relay_Log_Pos: 337686
Relay_Master_Log_File: master_log.000001
Slave_IO_Running: Yes #已开启
Slave_SQL_Running: Yes #已开启
Replicate_Do_DB:
Replicate_Ignore_DB:
...

5、验证主从关系

在主数据库中新建数据库,新建表,添加数据,观察从数据库是否同步新增

参考:

MySQL 主从复制原理不再难

MySQL 主从复制部署配置.md



CentOS7主从复制MySQL5安装配置
https://github.com/i-xiaoxin/2022/11/09/CentOS7主从复制MySQL配置/
作者
xiaoxinlore
发布于
2022年11月9日
许可协议