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' );
查看从库同步结果
小结:
主从同步配置主要有三个步骤:
- 主从库配置开启bin log
- 主库同步账号配置
- 从库启动同步
本文来自博客园,作者:WarmerSunny,转载请注明原文链接:https://www.cnblogs.com/WarmerSunny/p/15416857.html