本文基于MySQL 5.7
前言
在搭建MySQL主从架构之前,先基于Docker安装至少三台MySQL服务器,并确保
- 主从服务器的操作系统版本和位数一致
- 主从数据库的版本一致
- 主从数据库的数据一致
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_Error
和Last_SQL_Error
两个字段得到同步失败的原因,从库停止同步,调整后再开启同步
stop slave;
PREVIOUSRedisson使用