docker安装mysql5.6镜像并进行主从配置
docker安装mysql镜像并进行主从配置
1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像
docker pull daocloud.io/library/mysql:5.6.20
2.启动mysql服务实例(基本启动)
#启动主mysql
docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.6.20
解析:
- --name 给容器取名字为mysql-master
- -p 端口1:端口2 端口1是对外暴露的端口(即宿主机的端口),端口2 使我们的mysql端口
- -e MYSQL_ROOT_PASSWORD=密码 即root用户的密码
- daocloud.io/library/mysql:5.6.20 代表后台运行我们的mysql
注意:(此方式的缺点:容器关闭再启动我们的数据就没有了)
#启动从mysql 改变端口号
docker run --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.6.20
3.高级启动(一般选择这种方式)
#主节点启动
docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d -v /opt/docker/mysql/master/conf:/etc/mysql/ -v /opt/docker/mysql/master/data:/var/lib/mysql daocloud.io/library/mysql:5.6.20
解析:
-v /opt/docker/mysql/master/conf:/etc/mysql/ 代表将宿主机/opt/docker/mysql/master/conf 配置文件挂载到 mysql容器的/etc/mysql/下
-v /opt/docker/mysql/master/data:/var/lib/mysql 代表将宿主机/opt/docker/mysql/master/data 配置文件挂载到 mysql容器的/var/lib/mysql下
/opt/docker/mysql/master/data和/opt/docker/mysql/master/data 这量个目录是我们虚拟机的地址,文件夹不用建,启动成功自动生成
#从节点启动
docker run --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d -v /opt/docker/mysql/slave/conf:/etc/mysql/ -v /opt/docker/mysql/slave/data:/var/lib/mysql daocloud.io/library/mysql:5.6.20
可以看到都正常启动成功

4.进行主从配置
MySQL5.6开始主从复制有两种方式:基于日志(binlog);基于GTID(全局事务标示符)。此文章是基于日志方式的配置步骤。

4.1编辑修改master上已经挂载到本地的my.cnf文件
(不配置的话使用mysql show master status;查看为空值)
vim /opt/docker/mysql/master/conf/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
解析:
- log-bin配置项表示binlog的base name,产生的日志文件名称类似,mysql-bin.00001,mysql-bin.00002,mysql-bin.00003
- server-id配置表示数据库ID号, 为1时表示为master,其中master_id必须为1到232-1之间的一个正整数值,主从server-id不能一样;
同理配置slave的my.cnf文件
[mysqld]
server-id=2
relay-log=relaylogs
4.2保存文件重启mysql
#进入mysql容器内部
docker exec -it 主mysql的容器id bash
#登录mysql
mysql -uroot -p123456
4.3授予用户权限
#这里就采用的root用户
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by '123456';
FLUSH PRIVILEGES;
show grants for 'root'@'%';
4.3登录从库配置主库的信息
CHANGE MASTER TO MASTER_HOST='192.168.19.101',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
master_log_file = 'mysql-bin.000001',
master_log_pos=0;
4.4查看是否配置成功
#开启复制
start slave;
#查看复制有无成功
show slave status\G
可以看到配置成功( 当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常)

下面测试一下是否开启同步
#在master中创建一个数据库
create database mytest default character set utf8;
#在mytest数据库中创建一个表
create table student(`name` varchar(64) not null,`age` int(11) not null) default charset utf8;
可以看到slave的同步开启了

参考:
docker安装mysql5.6镜像并进行主从配置的更多相关文章
- Docker安装mysql镜像并进行主从配置
Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...
- Docker安装mysql5.7并且配置主从复制
Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...
- Docker 安装MySQL5.7(三)
Docker 安装MySQL5.7 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search mysql 2.拉取docker的mysql镜像 ...
- docker安装mysql5.6和redis3.2
环境:centos 6.8, docker version 1.7.1 1.docker安装mysql5.6 第一步:拉取镜像 docker pull mysql:5.6 第二步:docker run ...
- CentOS7利用docker安装MySQL5.7
CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...
- Docker安装入门 -- 应用镜像
Docker安装入门 -- 应用镜像 WordPress 1.docker build -t csphere/wordpress:4.2 . 2.docker run -d -p 80:80 -- ...
- Docker安装入门 -- 中间件镜像
Docker安装入门 -- 中间件镜像 php-fpm 1.docker build -t csphere/php-fpm:5.4 . //在当前目录下创建镜像 2.docker run -d - ...
- docker安装mysql5.7 数据挂载
docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...
- docker安装MySQL5.7示例!!坑
docker pull mysql 一.错误的启动 [root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql 42f0981990 ...
随机推荐
- Java中base64与byte[]转换
1.base64转byte[] 导包: import java.util.Base64 转换: String base64Str = base64的字符串; byte[] bytes = Base64 ...
- Mysql通过binlog恢复误update的数据
事件: 在生产库执行update时只添加了STATUS(状态)条件,将所有状态为'E'的数据全部改为了'D' 思路: 操作步骤主要参考自文章:https://blog.csdn.net/weixin_ ...
- docker里运行docker命令
一.概述 现有环境的jenkins是在docker里面运行的,需要执行docker相关命令才行. 关于基于docker搭建jenkins,请参考链接: https://www.cnblogs.com/ ...
- 关于Java中for,while,if,方法的练习
练习 计算0到100之间的奇数和偶数和 package com.kangkang.forDemo;public class demo01 { public static void main(S ...
- Java的特性和优势以及不同版本的分类,jdk,jre,jvm的联系与区别,javadoc的生成
Java 1.Java的特性和优势 Write Once,Run Anywhere 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java的三大版本 JavaSE:标 ...
- windows下MySQL如何完全卸载并安装行的版本
卸载本地mysql之前,请务必要先将需要的数据库备份 停止mysql 服务 windows键-->搜索服务 找到mysql 服务,并停止他 卸载mysql server 在控制面板--程序 找到 ...
- c++ 11 是如何简化你的数据库访问接口的
之前写过一篇文章专门分析了 c++ 模板编译过程中报的一个错误:<fatal error C1045: 编译器限制 : 链接规范嵌套太深 >,其中涉及到了 qtl -- 一个使用 c++ ...
- 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(概述篇)
SDK 开发 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(理念与设计原则篇) 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(开发基础篇) 系列 Snuba:Sentr ...
- 【Git】敏感信息保护
保护Git仓库敏感信息 代码中无可避免有一些敏感信息,包含但不限于,数据库信息,密钥,账号信息等等.通常我们会把这些信息放在配置文件,这些信息若泄露会造成安全问题. 以前我们做法,是把配置文件通过.g ...
- 导出文件,responseType设置了blob,实际返回了JSON格式的错误信息的处理方式
需求:导出文件 问题描述:由于后台直接返回的文件流,在请求下载的方法中将XHR 的 responseType 指定为 blob 或者 arraybuffer.但并不是每次的操作都是成功的,所以在接口错 ...