MySQL8.0 docker容器化部署配置主从复制

一.创建docker-compose文件

没有安装docker-compose的同学,请行查找安装方法非常简单。
创建docker-compose.yml文件将以下内容复制到文件中。

version: "3.4"
services:
  mysql-mastar:
    image: mysql:8.0.30
    container_name: mysql-master
    environment:
      - 'MYSQL_ROOT_PASSWORD=123456'
      - 'LANG=C.UTF-8'
      - 'MYSQL_INITDB_SKIP_TZINFO=Asia/Shanghai'
    volumes:
      - '/soft/config/mysql-master/my.cnf:/etc/my.cnf'
      - '/soft/config/mysql-master/data:/var/lib/mysql'
    ports:
      - '3301:3306'
    restart: unless-stopped
    command: '--default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --lower_case_table_names=1'

  mysql-slave:
    image: mysql:8.0.30
    container_name: mysql-slave
    environment:
      - 'MYSQL_ROOT_PASSWORD=123456'
      - 'LANG=C.UTF-8'
      - 'MYSQL_INITDB_SKIP_TZINFO=Asia/Shanghai'
    volumes:
      - '/soft/config/mysql-slave/my.cnf:/etc/my.cnf'
      - '/soft/config/mysql-slave/data:/var/lib/mysql'
    ports:
      - '3302:3306'
    restart: unless-stopped
    command: '--default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --lower_case_table_names=1'

注意映射外部端口号,反之端口冲突,设置与主机不一样即可。
!!!先不要着急安装。

二. 创建配置文件

1.主机配置文件创建
在映射到主机的文件夹下创建my.cnf文件
这里我映射的文件路径是/soft/config/mysql-master/
所以我在mysql-master文件夹下创建配置文件
ps:为了拿到初始的配置文件,这里我提前创建了容器从里面拿到了该文件

[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

以下是修改后的文件

[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid

# 设置时区
default-time-zone = '+8:00'
# 同一局域网内唯一
server-id=100  
# 开启二进制日志功能
log-bin=mysql-master-bin
# 二级制日志格式,有三种 row,statement,mixed
binlog-format=ROW
# 同步的数据库名称,如果不配置,表示同步所有的库
# binlog-do-db=数据库名
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

2.从机配置文件创建

[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid

# 修改时区
default-time-zone = '+8:00'
# 设置server_id,注意要唯一
server-id=101  
# 开启二进制日志
log-bin=mysql-slave-bin   
# relay_log配置中继日志
relay_log=mysql-relay-bin  
# 设置为只读,若不设置,表示slave可读写
read_only=1

[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

三.运行docker-compose.yml文件,创建容器

这里我的docker-compose.yml文件目录在/soft下

# 切换到文件所在目录
cd /soft
# 执行那个创建命令
docker-compose up -d

等待容器启动

四.查看运行状况

  1. 设置主库的连接信息,进入主库容器
 docker exec -it mysql-master bash
  1. 登录到mysql
[root@iZ2zeijiz5yh3g7q29eq0bZ data]# docker exec -it mysql-slave bash
bash-4.4# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.30 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

  1. 查看主库的信息
mysql>show master status\G;
*************************** 1. row ***************************
             File: mysql-master-bin.000003
         Position: 1409
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

记住这里的Position: 1409

  1. 按照主库的方式从库,输入一下信息,其中Position: 1409对应到master_log_pos=1409
mysql>change master to master_host='<自己的ip>', master_user='root', master_password='123456', master_port=3301, master_log_file='mysql-master-bin.000001', master_log_pos=1409, master_connect_retry=30;
  1. 查看从机的状态
    SHOW SLAVE STATUS\G;
    在这里插入图片描述
    这里显示yes表示配置成功。
    使用navicat连接主从库,试着修改下主库的一条数据,在从库就可以显示了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhych0828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值