1.准备两台服务器192.168.0.11(主) 192.168.0.12(从)
配置mysql主机
目录结构
192.168.0.11(主)安装mysql 创建mysql 的docker-compose.yml文件
version: '3'
services:
mysql:
image: mysql
restart: always
container_name: mysql_master
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M;
ports:
- 13306:3306
volumes:
- /root/docker-compose-service/mysql/data:/var/lib/mysql
- /root/docker-compose-service/mysql/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
创建conf.d文件夹下面的mysql.cnf文件
[mysqld]
log-bin = mysql-bin
server-id = 999
启动mysql容器docker-compose up -d
查看容器 docker ps
说明容器启动完毕,进入容器查看master节点状态
# 进入容器
docker exec -it mysql_master /bin/bash
# 链接mysql
mysql -uroot -p
#输入密码
# 指定ip
mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.0.11' IDENTIFIED BY '123456';
# 所有ip
mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '123456';
然后查看主容器数据库状态
mysql> show master status;
记录一下这里的File和Position,在后面配置从机的时候需要用到
配置mysql从机 目录结构与主机一样
从mysql 的docker-compose.yml 与mysql.cnf不一样
docker-compose.yml
version: '3'
services:
mysql:
image: mysql
restart: always
container_name: mysql_slave
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M;
ports:
- 13306:3306
volumes:
- /root/docker-compose-service/mysql/data:/var/lib/mysql
- /root/docker-compose-service/mysql/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
mysql.cnf
[mysqld]
log-bin = mysql-bin
server-id = 1
启动mysql容器docker-compose up -d
查看容器 docker ps
进入到从机容器中
docker exec -it mysql_slave /bin/bash
# 链接mysql
mysql -uroot -p
#输入密码
# 配置链接的主机参数
mysql> change master to
-> master_host='192.168.0.11',
-> master_user='root',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=156,
-> master_port=13306,
-> master_password='123456';
# master_host:主机的ip
# master_user:主机用户名
# master_log_file:记录的File地址
# master_log_pos:记录的postion地址
# master_port:主机的端口
# master_password:主机的登录密码
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
mysql> reset slave;
Query OK, 0 rows affected (0.10 sec)
mysql> start slave;
Query OK, 0 rows affected (0.10 sec)
# 查看主从链接状态
mysql> show slave status;
启动从库mysql docker-compose up -d
navicat连接主库 和从库
在从库运行sql 出现两个yes 就是ok了
在主库里面添加一个数据库 插入一条记录 看从库里面有没有数据 有的话一切ok了
所有的内部ip连接我使用的是内网 你要保证所有的内网相互都能访问到 (可以使用命令ping ip)如果是外网ip的话 记得开放一下所需要的端口
- 文章链接: https://blog.zhangcun.store/2022/10/08/docker-compose-an-zhuang-mysql-zhu-cong-duo-tai-fu-wu-qi/
- 版权声明: 本网站所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!
你的赏识是我前进的动力
支付宝
微信
