MySQL主从复制配置(基于docker)

MySQL主从配置

版本

采用MySQL 5.7 进行配置,由于本地已经搭建了docker环境,故使用docker进行配置

MySQL服务配置

主服务和从服务my.cnf中添加binary log和server id 配置

主库配置

[mysqld]
skip-name-resolve
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1 #忽略表名大小写
# 主从配置
server-id=1001
log-bin=mysql-bin

从库配置

[mysqld]
skip-name-resolve
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1 #忽略表名大小写
# 主从配置
server-id=1002
log-bin=mysql-bin

注意server-id不能相同

启动docker服务

docker 启动脚本
这里新建了一个docker启动脚本,方便下次启动:

docker run -p 3307:3306  --restart=always  --privileged=true --name mysql57_01 -v /Users/wanghai/data/docker/mysql/mysql57_01/data:/var/lib/mysql -v /Users/wanghai/data/docker/mysql/mysql57_01/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7
docker run -p 3308:3306  --restart=always  --privileged=true --name mysql57_02 -v /Users/wanghai/data/docker/mysql/mysql57_02/data:/var/lib/mysql -v /Users/wanghai/data/docker/mysql/mysql57_02/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7

注意区分端口号和配置文件路径

配置同步账号

服务启动后连接使用客户端连接主库,执行如下语句进行账号创建并授权

# 创建从库连接账号
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 账号授权
GRANT replication SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
# 刷新权限,使配置生效
FLUSH PRIVILEGES;

启用主从同步

客户端连接从库服务,执行如下语句开启同步

# 从库开启同步
CHANGE MASTER TO
MASTER_HOST='192.168.0.200',
MASTER_PORT=3307,
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 2891;

# 启动复制
START SLAVE;

# 查看同步从库状态
SHOW SLAVE STATUS;

具体参数根据自己的主库配置来修改,其中master_log_file和master_log_pos是通过主库执行SHOW MASTER STATUS获取的

SHOW MASTER STATUS

测试配置结果

在主库执行如下脚本进行测试:

CREATE DATABASE dbtest;
USE dbtest;
CREATE TABLE t_table1 ( id LONG, NAME VARCHAR ( 100 ) );
INSERT INTO t_table1 VALUES ( 1, 'Test' );

查看从库同步结果

小结:

主从同步配置主要有三个步骤:

  1. 主从库配置开启bin log
  2. 主库同步账号配置
  3. 从库启动同步
posted @ 2021-10-17 14:34  WarmerSunny  阅读(46)  评论(0编辑  收藏  举报