docker mysql主从配置

274 阅读2分钟

docker mysql主从配置

  • 准备工作
    • centos_1:192.168.168.101
    • centos_2:192.168.168.102
  • 通过docker-compose分别安装mysql

创建安装目录

mkdir /opt/mysql -p
mkdir /opt/mysql/data -p
mkdir /opt/mysql/configs -p
cd /opt/mysql

添加docker-compose.yml

vim docker-compose.yml
version: '3.7'

services:
  mysql:
    image: mysql:8
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=qwe123
    volumes:
      - ./data:/var/lib/mysql
      - ./configs/my.cnf:/etc/mysql/my.cnf
  • centos_1配置

添加mysql配置文件my.cnf

vim configs/my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
server-id=1
log-bin = mysql-bin  #开启二进制日志
binlog-do-db = PersonLocation #需要同步的数据库,多个可用逗号分割
binlog-ignore-db = mysql,information_schema,performance_schema
auto-increment-increment = 10
auto-increment-offset = 1# Custom config should go here
!includedir /etc/mysql/conf.d/

启动mysql

docker-compose up -d
  • centos_2配置

添加mysql配置文件my.cnf

vim configs/my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
server-id=2
log-bin = mysql-bin  #开启二进制日志
binlog-do-db = PersonLocation #需要同步的数据库,多个可用逗号分割
binlog-ignore-db = mysql,information_schema,performance_schema
auto-increment-increment = 10
auto-increment-offset = 2# Custom config should go here
!includedir /etc/mysql/conf.d/

启动mysql

docker-compose up -d
  • mysql 配置

分别进入两个mysql容器

docker exec -it mysql_mysql_1 bash

分别登录mysql

mysql -u root -p

分别创建数据库备份用户

CREATE USER 'bak'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

分别为备份用户授权

GRANT REPLICATION SLAVE ON *.* TO 'bak'@'%';
在 centos_1 mysql里查看master状态
show master status;

master.jpg

在 centos_2 mysql里查看master状态
show master status;

master.jpg

在 centos_1 mysql上配置slave

输入centos_2 mysql的IP地址和master状态信息

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.168.102',
    -> MASTER_PORT=3306,
    -> MASTER_USER='bak',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='mysql-bin.000003',
    -> MASTER_LOG_POS=1117;

开启主从同步,输入命令

 start slave;

查看主从同步状态,输入命令

show slave status\G;

slave1.jpg

在 centos_2 mysql上配置slave

输入centos_1 mysql的IP地址和master状态信息

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.168.101',
    -> MASTER_PORT=3306,
    -> MASTER_USER='bak',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='mysql-bin.000003',
    -> MASTER_LOG_POS=1117;

开启主从同步,输入命令

 start slave;

查看主从同步状态,输入命令

show slave status\G;

slave2.jpg