MySQL主从架构搭建

本文基于MySQL 5.7

前言

在搭建MySQL主从架构之前,先基于Docker安装至少三台MySQL服务器,并确保

  • 主从服务器的操作系统版本和位数一致
  • 主从数据库的版本一致
  • 主从数据库的数据一致

MySQL在Docker下的安装

MySQL主服务器配置

/opt/volume/mysql/conf/conf.d/my.cnf

[mysqld]
# 服务器id需要全局唯一
server_id=1

# 开启bin log同步
log-bin=mysql-bin

# binlog格式,可选mixed,statement,row,如需同时同步到Elasticsearch,则使用row
binlog_format=mixed

# 主库可写可读
read-only=0

# 需要同步的数据库
binlog-do-db=doubucket-items
binlog-do-db=doubucket-users

增加从库用于访问主库的用户

CREATE USER slave IDENTIFIED BY 'slave'; 
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

MySQL从服务器配置

/opt/volume/mysql/conf/conf.d/my.cnf

[mysqld]
# 服务器id需要全局唯一
server_id=2

# 开启relay log
relay-log=relay-log

# 从库只读
read-only=1

# 需要复制的数据库
replicate_do_db=doubucket-items
replicate_do_db=doubucket-users

开启主从同步

查看主库binlog数据,记下File字段和Position字段

show master status;

从库配置同步主库

change master to
master_host='192.168.88.171',
master_user='slave',
master_password='slave',
master_log_file='mysql-bin.000015',
master_log_pos=786;

从库开启同步

start slave;

从库检查同步是否成功

show slave status;

查看Slave_IO_Running字段和Slave_SQL_Running字段,两个字段均为Yes则同步成功

若同步失败则查看Last_IO_ErrorLast_SQL_Error两个字段得到同步失败的原因,从库停止同步,调整后再开启同步

stop slave;