设为首页 加入收藏

TOP

基于Docker Compose搭建MySQL主从复制(1主2从)(一)
2018-10-28 16:08:26 】 浏览:431
Tags:基于 Docker Compose 搭建 MySQL 主从 复制

系统环境 * 3


mysql 8.0.12


docker 18.06.1-ce


docker-compose 1.23.0-rc3


*3 ==> PS  ###我用的是虚拟机, 所以起了3个虚拟机,分配 IP如下###


      主IP :192.168.100.100


      从IP :192.168.100.101、192.168.100.102


#开始


##安装Docker、docker-compose环境


参考这篇博文  https://blog.csdn.net/diligent_lee/article/details/79098302


#操作注意事项:


1、如果你是windows上面用虚拟机去模拟的话,通过操作编写文件的时候,要保存为liunx格式的文本。


2、一些目录可能需要执行的权限,建议chmod +x 你的目录及其文件。我操作的时候,3个虚拟机上面的文件目录都是一样的,为了方便。


操作的目录文件结构如下



----------------------------------------------------------------


(1)conf里面放mysql的配置文件



----------------------------------------------------------------


(2)data用于挂载mysql的数据目录


----------------------------------------------------------------


(3)docker里面我要接下来要创建的Dockerfile文件



##制作Dockerfile文件


主从的配置文件一样


保存文件名为Dockerfile。接着在同级目录下执行脚本如下:



注意后面有个空格和.符号。 


执行完之后,查看本地的镜像文件。


 


##编写mysql的配置文件my.cnf


主 192.168.100.100 配置文件如下


[mysqld]
 
# By default we only accept connections from localhost
bind-address="192.168.100.100"
report_host="192.168.100.100"
 
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1
 
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
 
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
 
#设置client连接mysql时的字符集,防止乱码
init_connect=‘SET NAMES utf8mb4‘
 
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
 
##################主从复制设置##################
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
binlog_format=ROW
log-bin=mysql-bin
log-bin-index=mysql-bin.index
 
#设置加密方式
default_authentication_plugin=mysql_native_password
 
#group replication
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address ="192.168.100.100:33061"
loose-group_replication_group_seeds= "192.168.100.100:33061,192.168.100.101:33061,192.168.100.102:33061"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
因为我们等下做的是1主3从,所以这里还从的2个配置文件,共3个。不同的地方就是红色的地方。


192.168.100.100为2个从的IP,替换下,还有就是
主的server-id=1,从的设置为2、3就好了。


##编写docker-compose文件


version: '2'
services:
  mysql:
    container_name: mysql
    network_mode: "host"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    image: test/mysql:1.0
    restart: unless-stopped
    volumes:
      - "/usr/test/mysql/data:/var/lib/mysql"
      - "/usr/test/mysql/conf:/etc/mysql/conf.d"


上面脚本其实很简单,就是设置mysql密码为123456,然后挂载了2个目录,data是mysql的数据文件目录,conf是mysql的配置文件目录,为了mysql启动的时候加载my.cnf


3台主机,依次启动容器


进入我的/usr/test/mysql根目录,执行docker-compose up -d



可以看到我们的mysql容器已经起来了。然后看下刚才挂载的data目录,是不是有东西。



不放心,再检查下容器服务



说明,mysql服务已经起来了。ps:这里我就不查看日志什么的,即便出错了。篇幅有限。偷懒:)


说了一大堆,下面才是重点 [由于我本地验证成功过了,所以下面就没有截图了,直接贴脚本]


1、设置mysql主从复制


(1) 配置master


进入msater的mysql容器,输入命令


dock

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL大事务导致的Insert慢的案例.. 下一篇PostgreSQL中的大容量空间探索时..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目