头图

介绍
实现一主多从架构

graph TD

    A[Master] --> D[slave]
    A[Master] --> E[slave]
    A[Master] --> F[.....]

目标

  • 在CentOS7中配置mysql集群;
  • 一主多从架构设计;
  • 熟悉mysql的集群配置;

环境

  • CentOS7
  • mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
  • VMware

分析

节点说明
192.168.157.130Master(server-id=1)
192.168.157.131slave-1(server-id=2)
192.168.157.131slave-2(server-id=3)

Master 配置
进入 vi /etc/my.cnf

  • 【必须】主服务器唯一ID
    server-id =1
  • 【必须】启用二进制日志
    log-bin = mysql-bin

slave-1 配置
进入 vi /etc/my.cnf

  • 【必须】主服务器唯一ID
    server-id =2
  • 【必须】启用二进制日志
    llog-bin = mysql-bin

slave-2 配置
进入 vi /etc/my.cnf

  • 【必须】主服务器唯一ID
    server-id =3
  • 【必须】启用二进制日志
    log-bin = mysql-bin

Master 创建复制用户并授权

##---------主节点配主--------------
#创建复制用户repl_user 密码 repl_passwd
CREATE USER repl_user IDENTIFIED BY 'repl_passwd';
#授权 用户/从集群IP/用户密码(一主一从)
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.157.131'  IDENTIFIED BY 'repl_passwd';
#授权 不限制IP(一主多从)
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'  IDENTIFIED BY 'repl_passwd';
#刷新
FLUSH PRIVILEGES;
# 查询master的状态
SHOW MASTER STATUS;

# 记录下File和Position的值
# 执行完此步骤后不再执行主服务器MySQL,防止主服务器状态值变化
# file= mysql-bin.000050   position= 2620

image.png

slave 复制配置

##---------从节点配置--------------
# 配主复制主机
# 主节点IP、用户、密码、file= mysql-bin.000050   position= 2620 (来自主节点)
CHANGE MASTER TO MASTER_HOST='192.168.157.130',MASTER_USER='repl_user',MASTER_PASSWORD='repl_passwd',MASTER_LOG_FILE='mysql-bin.000050',MASTER_LOG_POS=2620;
 
# 启动从服务器复制功能
START SLAVE;
 
# 查看从机状态
SHOW SLAVE STATUS;
# 下面两个参数都是YES,则说明主从配置成功!
# Slave_IO_Running:Yes
# Slave_SQL_Running:Yes

image.png

测试一主多从
image.png

常见错误解决
1.问题: Slave_IO_Running=No ,原因:虚拟机克隆造成mysql的uuid相同。

 解决:从库 找到auto.cnf 文件修改uuid(随意只要不一样即可) 这里修改最后一位0为1,
  具体操作:
  find / -iname "auto.cnf"
  vim /data/mysql/auto.cnf
  
  原内容
  [auto]
  server-uuid=6a36b5eb-b423-11eb-9576-0050563d5ed0

  调整后内容,自定义即可,把最后一位0替换为1 
  [auto]
  server-uuid=6a36b5eb-b423-11eb-9576-0050563d5ed1
  
  重启mysql
  systemctl restart mysql

Jack
1 声望0 粉丝