目录
此处是使用docker-compose搭建MySQL的一主三从
一、安装docker-compose
1.下载docker-compose二进制文件:
(1)下载:
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64
(2)考虑网络不好,可直接使用已经下载的二进制文件,上传到虚拟机中
链接:https://pan.baidu.com/s/1EG1Em-cqwym0NoannIxjXg?pwd=vm12
提取码:vm12
2.将二进制文件移到指定目录下并重命名
mv /root/docker-compose/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3.进入/usr/local/bin目录下给二进制文件授权:x
chmod +x docker-compose
4.确认版本是否安装成功
docker-compose --version
二、使用docker-compose搭建MySQL一主三从
1.拉去MySQL镜像文件:docker pull mysql
2.使用docker-compose创建4台MySQL容器
(1)构建docker-compose配置文件
注意:格式需要准确,否则会出错
version: '3.0'
services:
master:
image: mysql:latest
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/sql/:/sql
slave01:
image: mysql:latest
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/sql/:/sql
slave02:
image: mysql:latest
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/sql/:/sql
slave03:
image: mysql:latest
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/sql/:/sql
(2)快速构建四台MySQL容器master、slave01、slave02、slave03
docker-compose -f docker-compose-mysql.yml up -d
(3)查看MySQL容器
docker ps -a
三、搭建MySQL的主从结构
1.修改配置从机的 my.conf文件(slave01、slave02、slave03)
(1)进入从机容器中:docker exec -it slave01 bash
(2)找到配置文件my.cnf
(3)将文件复制到宿主机中进行修改
docker cp slave01:/etc/my.cnf ./
vim my.cnf
(4) 从机依次修改修改内容:添加 server_id=2(主机为1,从机1为2,从机2为3,从机3为4)
(5)将修改后的文件复制覆盖原来从机中的my.cnf文件
(6)重启从机
docker restart slave01 slave02 slave03
2.查看master、slave01、slave02、slave03的server_id
3.由于MySQL版本差异,需要修改插件身份验证密码(master、slave01、slave02、slave03都需要修改,执行4次)
(1)进入容器:docker exec -it master mysql -uroot -proot
(2)use mysq;
(3)查看user表:select Host,User,plugin,authentication_String from user;
(4)修改密码:alter user 'root'@'%' identified with mysql_native_password by 'root';
(5)刷新生效:flush privileges;
4.从机主机完成复制(从机同步主机容器内容)
(1)查看主机状态(master):show master status;
(2)从机(slave01、slave02、slave03)中执行配置,每台从机中执行一次:
执行以下代码
change master to
master_host='192.168.175.11',
master_port=3306,
master_user='root',
master_password='root',
master_log_file='binlog.000002',
master_log_pos=616;
启动salve:start slave;
查看是否成功:show slave status /G;