简介
本文主要介绍如何使用docker快速搭建实验环境,熟悉mysql主从复制配置。
环境
- docker 17.12.1-ce
- docker-compose 1.19.0
docker-compose.yml
- 一个主数据库
- 一个从数据库
- 主从直连
version: '2'
services:
database-master:
build:
context: ./
dockerfile: deploy/master.docker
environment:
- "MYSQL_ROOT_PASSWORD=pass"
- "MYSQL_DATABASE=test_db"
links:
- database-slave
ports:
- "33065:3306"
database-slave:
build:
context: ./
dockerfile: deploy/slave.docker
environment:
- "MYSQL_ROOT_PASSWORD=pass"
- "MYSQL_DATABASE=test_db"
ports:
- "33066:3306"
主数据库配置
- master.docker
FROM mysql:5.6
ADD ./deploy/master_my.cnf /etc/mysql/my.cnf
- master_my.cnf追加下面内容
[mysqld]
# 开启mysql-bin
log-bin=mysql-bin
# 设置server id
server-id=1
从数据库设置
- slave.docker
FROM mysql:5.6
ADD ./deploy/slave_my.cnf /etc/mysql/my.cnf
- slave_my.cnf
[mysqld]
# 设置server id
server-id=2
启动实验环境
进入docker-compose.yml所在目录执行下面命令
sudo docker-compose up -d
查看master数据库状态
show master status;
查看slave数据库状态
show slave status;
从数据库配置主数据库信息
CHANGE MASTER TO
MASTER_HOST='database-master',
MASTER_USER='root',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=120;
# mysql-bin.000004, 120 由show master status;显示信息中获取
同步开始与结束
start slave;
stop slave;
测试sql
- 创建一张表
CREATE TABLE sample(
id INT(11) NOT NULL AUTO_INCREMENT,
value INT(5) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
- 主数据库插入数据
INSERT INTO sample(value)
VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
- 从数据库查看
SELECT * FROM test_db.sample;