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 ...
随机推荐
- 开启算法之路,还原题目,用debug调试搞懂每一道题
文章简述 大家好,本篇是个人的第 3 篇文章. 承接第一篇文章<手写单链表基础之增,删,查!附赠一道链表题>,在第一篇文章中提过,在刷算法题之前先将基础知识过一遍,这样对后面的做算法题是很 ...
- 百度webuploader_c#实现文件分片上传思路
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- mbatis中的#{}和${}
#{}和${}的区别是什么?a.#{}是预编译处理,${}是字符串替换. b.Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set ...
- WPF 之绘画(十一)
一.WPF 绘画 WPF 可以绘制线段(Line).矩形(Rectange).椭圆(Ellipse).路径(Path).具体使用如下所示: <!--(1)线段:Line--> <Li ...
- ============================================ 新的开始(前后端分离项目学习Vue+DRF)
- Java中base64与byte[]转换
1.base64转byte[] 导包: import java.util.Base64 转换: String base64Str = base64的字符串; byte[] bytes = Base64 ...
- ServiceMesh
传统微服务架构 在微服务模式下,企业内部服务少则几个到几十个,多则上百个,每个服务一般都以集群方式部署,这时自然产生两个问题: 一.服务发现:服务的消费方(Consumer)如何发现服务的提供方(Pr ...
- Java 队列同步器 AQS
本文部分摘自<Java 并发编程的艺术> 概述 队列同步器 AbstractQueuedSynchronize(以下简称同步器),是用来构建锁(Lock)或者其他同步组件(JUC 并发包) ...
- MySQL:单表查询
在线数据库:http://sqlfiddle.com/ 建表脚本:https://gitee.com/bqzzz/sql/tree/master/Scripts 基本查询 ①.查询所有记录 SELEC ...
- 【机制】js中的this指向
1.this的使用场景 我们先把this的使用场景分为两大类:函数外和函数内: 函数外的this 就是在全局代码里,直接使用this: "use strict"; let name ...