docker-compose 部署MySQL一主两从

一、安装docker  

  1、准备三台服务器

  2、服务器版本,linux 内核版本要大于 3.10

uname -r

3、启动docker 

二、安装docker-compose

1、 安装docker-compose

     (将包放到/usr/local/bin/    目录下  ,并赋予执行权限)

三、配置主master

1、配置cnf文件

vim /home/mysql/master/master.cnf


[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
secure-file-priv=/var/lib/mysql-files
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp

log-bin = mysql-bin
server-id = 1

2、配置docker-compose.yml  文件

version: '3.2'
services:
  mysql-master:
    image: "mysql:5.7"
    container_name: mysql-master
    restart: always
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 666666
    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:
      - 3306:3306
    volumes:
      - /home/mysql/master/master.cnf:/etc/mysql/my.cnf
      - /home/mysql/master/mysql-files:/var/lib/mysql-files
      - /home/mysql/master/data:/var/lib/mysql
      - /home/mysql/master/log:/var/log/

3、启动myssql-master实例

cd /home/mysq/master/
docker-compose up -d

4、 启动成功

四、配置slave (两台虚拟机要同样配置) 

1、配置cnf文件

vim /home/mysql/slave/slave.cnf


[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
secure-file-priv=/var/lib/mysql-files
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp

log-bin = mysql-bin
server-id = 2  
server-id = 3

2、配置docker-compose.yml 文件

version: '3.2'
services:
  mysql-slave:
    image: "mysql:5.7"
    container_name: mysql-slave
    restart: always
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 666666
    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:
      - 3306:3306
    volumes:
      - /home/mysql/master/master.cnf:/etc/mysql/my.cnf
      - /home/mysql/master/mysql-files:/var/lib/mysql-files
      - /home/mysql/master/data:/var/lib/mysql
      - /home/mysql/master/log:/var/log/

3、启动myssql-master实例

cd  /home/mysql/slave/
docker-compose up -d

4、启动成功

五、配置主从

1、在master节点的 MySQL数据库里创建用户,并授权


GRANT REPLICATION SLAVE ON *.*  TO  'master'@'%'  identified by 'abc@12345!';
flush privileges;
show master status\G

2、在slave 节点的数据库里指定 CHANGE MASTER TO

CHANGE MASTER TO
MASTER_HOST='192.168.81.10',
MASTER_USER='master',
MASTER_PASSWORD='abc@12345!',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=591;

 如果不能执行成功 ,则先stop  slave;   在start slave;

然后查看主从状态

show  slave status\G

六、测试

在主master 上创建一个数据库,在从库上看能不能实现同步,如果可以,则代表成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值