一、装置 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 防火墙未敞开