[超入门]使用docker做mysql主从复制实验

简介

本文主要介绍如何使用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;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注