MySQL5.7主从同步配置(一台master,两台slave)

1. 下载MySQL(5.7.42)

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

MySQL5.7主从同步配置(一台master,两台slave)_第1张图片

2.安装

yum install mysql-server
2.1 安装过程中如果报错如下,按下边方法处理。否则略过即可

MySQL5.7主从同步配置(一台master,两台slave)_第2张图片

2.2 解决方案:执行以下命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.3 再次执行安装命令
yum install mysql-server

3. 设置/etc/my.cnf 文件内容

3.1 设置master数据库 my.cnf文件

vim /etc/my.cnf

复制下边内容

datadir=/data/mysql/data     # 数据存放路径
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=1                 # server_id 主从三台机器必须不一致
log-bin=/data/mysql/data/mysql-bin   # binlog日志存放路径
expire_logs_days = 7  
binlog-ignore-db=mysql # 忽略mysql这个数据库,不进行同步,也可以采用binlog-do-db=mysql指定同步mysql库
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0

log-error=/data/mysql/log/mysqlerror.log     # 日志存储位置
pid-file=/var/run/mysqld/mysqld.pid      
3.2 创建3.1中设置的文件路径
mkdir mysql/data/mysql
mkdir /mysql/data/log
touch /data/mysql/log/mysqlerror.log
3.3 赋予mysql访问权限
chown mysql:mysql  /data/mysql/log/mysqlerror.log
chown mysql:mysql  /data/mysql/data/
3.4 设置slave节点的 /etc/my.cnf

vim /etc/my.cnf

datadir=/data/mysql/data    # 日志文件位置
port=3306       
socket=/var/lib/mysql/mysql.sock
server_id=2               # slave节点id,另一个节点可设置为3,必须唯一
expire_logs_days = 7
replicate-ignore-db=mysql    # 忽略复制mysql数据库,也可以通过replicate-do-db=test指定复制某test数据库
log-error=/data/mysql/log/mysqlerror.log  # 日志文件位置
pid-file=/var/run/mysqld/mysqld.pid
3.5 创建3.4中文件路径并服务mysql访问权限
mkdir mysql/data/mysql
mkdir /mysql/data/log
touch /data/mysql/log/mysqlerror.log
chown mysql:mysql  /data/mysql/log/mysqlerror.log
chown mysql:mysql  /data/mysql/data/

4.启动MySQL主从节点

4.1 启动mysql命令
systemctl start mysqld
systemctl stop mysqld # 停止MySQL服务命令,此处不需要执行
4.2 查看mysql启动状态
 systemctl status mysqld
4.3 查看mysql默认密码
vim /var/log/mysqld.log
/password  # 在vim编辑器中搜索

5. 进入MySQL客户端

mysql -uroot -p
# 回车后输入前边查询的密码
5.1 进入MySQL客户端连接后,修改密码(在主从节点都要完成此操作)
# 设置密码策略为最低级别,策略共有三个级别,复杂度依次增加,只有LOW级别,支持简单密码,如12345678这样。
set global validate_password_policy=LOW; 

# 修改密码
alter user 'root'@'localhost' identified by '12345678';

# 刷新
FLUSH PRIVILEGES;

# 赋予远程任何机器连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
5.2 在主节点MySQL连接客户端添加数据同步从节点账户
# 支持任意从节点连接
grant replication slave on *.* to 'root'@'%' identified by '12345678';
5.3 退出MySQL客户端连接,重启mysql
systemctl restart mysql
5.4 重启后,重新进入MySQL客户端连接
show master status;

记录 File 名称和 Position 数字,等会从连接主节点时需要用到。
MySQL5.7主从同步配置(一台master,两台slave)_第3张图片

5.5 进入从节点MySQL连接客户端

注意:如果主库数据与从库数据相差较大,尽量先将主库数据导出后,手动导入到从库,然后在进行主从同步构建,否则可能因数据差距较大出现同步异常问题。

  • 修改从库同步设置
# master_log_file='mysql-bin.000002' 和master_log_pos=2740 对应上图(5.4)
change master to master_host='主库ip(192.168.1.1)',master_user='root',master_password='12345678',master_log_file='mysql-bin.000002',master_log_pos=2740;
  • 开启从库slave
start slave;
  • 查看从库状态
show slave status\G;

如下图所示均显示 Yes,则表示主从同步已成功建立。另一个从节点的操作与上述一致。
MySQL5.7主从同步配置(一台master,两台slave)_第4张图片
MySQL5.7主从同步配置(一台master,两台slave)_第5张图片

你可能感兴趣的:(MySql,mysql,数据库)