乐趣区

关于数据库:通过dockercompose创建容器-在Linux中创建MySQL-的一主三从模式

一、装置 docker-compose 完结后

以下下是 docker-compose.yml 文件内容

version: '3.0'
services:
      master:
    image: mysql:8.0.23
    container_name: master
  restart: always
    network_mode: bridge
    ports:
      - 3306:3306
    environment:
      LANG: C-UTF.8
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: "root"
    volumes: 
      - /root/mysql001/:/mysql001

  slave01:
image: mysql:8.0.23
container_name: slave01
restart: always
network_mode: bridge
ports:
  - 3307:3306
environment:
  LANG: C-UTF.8
  TZ: Asia/Shanghai
  MYSQL_ROOT_PASSWORD: "root"
volumes: 
  - /root/mysql001/:/mysql001

  slave02:
image: mysql:8.0.23
container_name: slave02
restart: always
network_mode: bridge
ports:
  - 3308:3306
environment:
  LANG: C-UTF.8
  TZ: Asia/Shanghai
  MYSQL_ROOT_PASSWORD: "root"
volumes: 
  - /root/mysql001/:/mysql001

  slave03:
    image: mysql:8.0.23
    container_name: slave03
    restart: always
    network_mode: bridge
    ports:
      - 3309:3306
    environment:
      LANG: C-UTF.8
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: "root"
    volumes: 
      - /root/mysql001/:/mysql001



二、操作
确定关上 docker 检测 docker ps -a

systemctl start docker

确定存在 docker-compose 查问其版本号

docker-compose --version

利用其创立 4 个 mysql 容器

  • docker-compose -f docker-compose.yml up -d

胜利创立后,需查看其 server_id 并配置为:主为 1 其为 234 配置文件在容器中 /etc/mysql/my.cnf

因为容器中并不存在 vi 等编辑器,将其放在属主机中进行批改

 (1)复制 docker cp slave01:/etc/mysql/my.cnf ./
 (2)查看 ls -l    cat my.cnf
 (3)批改 vi my.cnf

也可用 sed 工具,
再将批改后配置文件复制的到容器中

docker cp ./my.cof slave01:/etc/mysql/my.cnf

为节约可在这步中将文件批改后别离传入对应容器

在将 docker-compose 中创立的容器重启

docker-compose restart slave01 slave02 slave03

查看容器
进入 MySQL 容器

docker exec -it master bash(可通过 show variables like 'server_id'; 查看配置文件是否批改胜利)

二、在 mysql 中操作
批改明码插件

alter user 'root'@'%' identified with mysql_native_password by 'root';

刷新失效

flush privileges;

查看主机状态 可得 master_log_file, master_log_pos

show master status;

其余从机同上操作

登录到从机上应用通信命令:

change master to 
master_host='192.168.58.131',
master_port=3306,
master_user='root',
master_password='root',
master_log_file='binlog.000002',
master_log_pos=605;

启动服务

start slave;

查看时候建设胜利

show slave status \G;

在验证复制架构是否 ok

呈现两个 yes 即证实胜利
从机查看是否存在 MySQL

将所给给的文件导入
在主机上的 MySQL 中运行脚本

source /sql/text.sql

三、如果报错
查看是否操作都全副进行刷新操作

从机连贯上但主机地位或者内容写错,这时就须要暂停 slave 服务,并从新来一遍对从机的操作,需查看

内容,注:对主机操作完结后,不能再进行其余操作,以防日志等文件进行扭转。
可能 Linux 防火墙未敞开

退出移动版