docker安装mysql8实现读写分离

安装mysql服务

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3.8'
services:
mysql8-master:
image: mysql:8.0.29
container_name: mysql8-master
volumes:
- ./mysql8-master/data:/var/lib/mysql
environment:
- 'MYSQL_ROOT_PASSWORD=123456'
ports:
- 3301:3306
restart: unless-stopped
extra_hosts:
- host.docker.internal:host-gateway

mysql8-slave:
image: mysql:8.0.29
container_name: mysql8-slave
volumes:
- ./mysql8-slave/data:/var/lib/mysql
environment:
- 'MYSQL_ROOT_PASSWORD=123456'
ports:
- 3302:3306
restart: unless-stopped
extra_hosts:
- host.docker.internal:host-gateway

启动服务 docker-compose up -d

设置主从同步

mysql-bin

  1. master创建同步用户并授权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    -- 创建同步用户并授权
    create user 'masteru01' @'%' IDENTIFIED by 'masteru01' ;
    GRANT ALL ON *.* TO 'masteru01' @'%';
    GRANT REPLICATION SLAVE ON *.* to 'masteru01'@'%' ;
    FLUSH PRIVILEGES;

    -- 查看master状态
    show master status;
    -- binlog.000002 1369
  2. 设置主备服务的server_id不能相同

    1
    2
    3
    4
    5
    -- 查看id
    show variables like 'server_id';

    -- 设置id
    set global server_id=2;
  3. 启动slave备份同步

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    -- 登录slave
    -- 与主库进行连结
    change master to
    master_host='192.168.1.103',
    master_port=3301,
    master_user='masteru01',
    master_password='masteru01',
    master_log_file='binlog.000002',
    master_log_pos=1369;
    -- 启动从服务器复制功能
    start slave;

    stop slave;
    -- 检查是否启动成功
    show slave status;
  4. 检测主备配置

    1
    2
    3
    4
    5
    6
    -- master创建数据库
    create database mytest;
    drop database mytest;

    -- slave查看
    show databases;

canal组件同步

https://blog.csdn.net/xiyang_1990/article/details/132753073