WHCSRL 技术网

MySQL学习三:MySQL一主多从架构_huiguo

一、MySQL一主多从架构

1.1 MySQL一主多从开启二进制日志

配置主从MySQL配置文件my.cnf

主(3307)里面加入

log-bin=mysql-bin #表示启用二进制日志

server-id=3307 #表示server编号,编号要唯一
  • 1
  • 2
  • 3
  • 4
  • 5
从(3308)里面加入

server-id=3308 #表示server编号,编号要唯一

从(3309)里面加入

server-id=3309 #表示server编号,编号要唯一

从(3310)里面加入

server-id=3310 #表示server编号,编号要唯一
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

二、MySQL一主多从环境重启

进入/usr/local/mysql-5.7.18/bin目录,重启四个MySQL服务,启动时指定配置文件启动:

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3307/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3308/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3309/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3310/my.cnf &
  • 1
  • 2
  • 3
  • 4

1、在主服务器上创建复制数据的账号并授权:

grant replication slave on *.* to 'copy'@'%%' identified by 'luck888';
  • 1

2、建议重置一下主服务状态,执行命令:

reset master;
  • 1

3、在主服务器上执行命令,获取主服务器二进制binlog文件名及坐标(二进制文件名和坐标值在后面会用到):

show master status;
  • 1

在从服务器上执行命令,设置从服务器的master

4、重置一下从的状态:(在重置之前可以查看一下从的状态: show slave status)

stop slave;
reset slave;
  • 1
  • 2

5、进入从服务器mysql命令界面运行

change master to master_host='192.168.199.128',master_user='copy',
master_port=3307,master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=154;
  • 1
  • 2
  • 3

6、在从机器上执行开始复制命令:start slave; (作用:启动IO线程和SQL线程)

7 主综上可以一次执行;

grant replication slave on *.* to 'copy'@'%%' identified by 'luck888';
reset master;
show master status;

  • 1
  • 2
  • 3
  • 4

8 从综上可以一次执行;

show slave status
stop slave;
reset slave;
change master to master_host='192.168.0.26',master_user='copy',
master_port=3306,master_password='luck888',
master_log_file='mysql-bin.000001',master_log_pos=154;
show slave status G
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、MySQL一主多从数据复制验证

检查从服务器复制功能状态

 show slave status G
  • 1

mysql> show slave status G

Slave_IO_Running和Slave_SQL_Running为YES,就是正常状态。

在主服务器上创建数据库、表、数据,然后在从服务器上查看是否已经复制

以上操作过程显示正常,则主从服务器配置完成;

查看主从复制binlog日志文件内容:show binlog events in ‘mysql-bin.000001’;

推荐阅读