博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 安装mysql 主从复制
阅读量:4164 次
发布时间:2019-05-26

本文共 3097 字,大约阅读时间需要 10 分钟。

docker 安装mysql 主从复制

一、安装mysql

# docker run -p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46docker run -p 主机端口:容器端口 --name 自定义容器名 -i  -t  -d  -v  主机目录:容器目录:ro  镜像ID或镜像名:TAG#--name 指定容器名,可自定义,不指定自动命名#-i以交互模式运行容器#-t分配一个伪终端,即命令行,通常-it组合来使用#-p指定映射端口,讲主机端口映射到容器内的端口#-d后台运行容器#-V指定挂载主机日录到容器日录,默认为rw读写模式,ro表示只读#-e MYSQL_ROOT_PASSWORD=root 设置MySQL默认密码# --restart=always  表示此容器开机启动,只要docker也设置了开机自启,docker不死
# 安装master  端口号为:3306docker run -p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46# 安装slave   端口号为:3307docker run -p 3307:3306 --name slave -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46# 安装slave2  端口号为:3308docker run -p 3308:3306 --name slave2 -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46

二、进入master容器,修改配置文件

两种进入容器的方式:任选一种即可

docker exec -it 2sdf34sdfsw  /bin/bash    // 2sdf34sdfsw 为容器iddocker exec -it master /bin/bash          // master为自定义容器名字

进入 master容器 目录准备修改配置文件:

若发现容器内没有 安装 vim 命令的时候,输入一下命令先安装vim

apt-get updateapt-get install vim
[mysqld]## 同一局域网内注意要唯一server-id=100  ## 开启二进制日志功能,可以随便取(关键)log-bin=master-binbinlog-format=ROW     // 二级制日志格式,有三种 row,statement,mixedbinlog-do-db=数据库名  //同步的数据库名称,如果不配置,表示同步所有的库

配置完成后重启mysql服务:

service mysql restart

方法一:在Navicat中赋予用户权限:

方法二:

重新进入容器:

两种进入【master容器】的方式:任选一种即可

docker exec -it 2sdf34sdfsw  /bin/bash    // 2sdf34sdfsw 为容器iddocker exec -it master /bin/bash          // master为自定义容器名字

登录到mysql客户端:

mysql -uroot -proot

授予用户 [slave] REPLICATION SLAVE权限和REPLICATION CLIENT权限

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.00 sec)mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';Query OK, 0 rows affected (0.00 sec)

三、配置slave

docker exec -it slave /bin/bash

修改配置文件:

[mysqld]## 设置server_id,注意要唯一server-id=101  ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用log-bin=mysql-slave-bin   ## relay_log配置中继日志relay_log=mysql-relay-bin  read_only=1  ## 设置为只读,该项如果不设置,表示slave可读可写

配置完成后重启服务:

service mysql restart

四、开启master-slave主从复制

进入master容器内,的mysql【客户端】查看master的状态:

# 进入容器docker exec -it master /bin/bash# 进入客户端mysql -uroot -proot# 展示状态show master status;

记住file和position栏对应的内容:

进入到Slave库myslq【客户端】,执行如下命令:

change master to master_host='172.18.0.2', master_user='root', master_password='task,.123', master_port=3306, master_log_file='master-bin.000001', master_log_pos=913, master_connect_retry=30;

【注意:在配置slave的时候,不要操作 master,否则 maser中的 position 会发生变化】

命令说明:

master_host :Master库的地址,指的是容器的独立ip,可以通过

docker inspect --format='{
{.NetworkSettings.IPAddress}}' 容器名称 | 容器id查询容器的IP 进行查询

如下所示:

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

在Slave 中的mysql终端执行命令;用于查看主从同步状态

show slave status \G

在slave中mysql的终端执行命令:

# 开启主从复制start slave;# 再次查看状态show slave status \G

如何停止从服务复制功能

在slave容器内的 mysql 客户端内执行:

使用stop slave;命令

如何重新配置主从

在slave容器内的 mysql 客户端内执行:

使用这两个命令 stop slave; reset master;

注意:初始化的时候主库和从库的数据一致

转载地址:http://sexxi.baihongyu.com/

你可能感兴趣的文章
Qt 密码框不可选中、复制、粘贴、无右键菜单等
查看>>
Qt 事件过滤器
查看>>
Qt 自定义界面(实现无边框、可移动)
查看>>
QT 提示之右下角冒泡
查看>>
qt中tinyxml2的基本使用方法
查看>>
qt 下log4cplus的使用
查看>>
关于屏幕分辨率的一些操作
查看>>
确定windows系统是32bit还是64bit
查看>>
关于获取多个屏幕分辨率以及进行一些设置
查看>>
宽字节与多字节转换
查看>>
qt 屏蔽ESC
查看>>
QDialog常用理解
查看>>
qt 获取发送信号的对象
查看>>
vs下使用qt设置应用程序的图标
查看>>
qt 自定义标题栏
查看>>
qt设置路径为应用程序启动路径
查看>>
qt 实现窗口拉伸
查看>>
qt 实现右键菜单
查看>>
qt中程序崩溃生成dump文件
查看>>
windows 打开和关闭显示器
查看>>