docker-compose 安装mysql 主从 (多台服务器)

docker和docker-compose安装请点击

 

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的话  记得开放一下所需要的端口

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值