Docker安装mysql镜像并进行主从配置

1.下载需要的mysql版本镜像

docker pull mysql:5.6

2.启动mysql服务实例(基本启动)

#启动主mysql
docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

解析:

  • --name 容器名 给容器取名字为mysql-master
  • -p 端口1:端口2 端口1是对外暴露的端口(即宿主机的端口),端口2 是mysql端口
  • -e MYSQL_ROOT_PASSWORD=密码 即root用户的密码
  • -d mysql:5.6 代表后台运行我们的mysql

注意:(此方式的缺点:容器关闭再启动我们的数据就没有了)

#启动从mysql 改变端口号
docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

3.进行主从配置&&挂载启动

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

创建文件夹

mkdir /home/docker/mysql/master/conf/
vim my.cnf

主mysql的my.cnf配置文件

[mysqld]
#主数据库端ID号(为1时表示为master,其中master_id必须为1到232-1之间的一个正整数值,主从server-id不能一样)
server_id = 1
#开启二进制日志
log-bin = mysql-bin

同理配置slave的my.cnf文件

[mysqld]
server-id=2
relay-log=relaylogs
3.1挂载启动(一般选择这种方式)
#主节点启动
docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d -v /home/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -v /home/docker/mysql/master/data:/var/lib/mysql mysql:5.6

解析:

  • -v /home/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf 代表将宿主机/home/docker/mysql/master/conf/my.cnf 配置文件挂载到 mysql容器的/etc/mysql/my.cnf下

  • -v /home/docker/mysql/master/data:/var/lib/mysql 代表将宿主机/home/docker/mysql/master/data 配置文件挂载到 mysql容器的/var/lib/mysql下

#从节点启动
docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d -v /home/docker/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /home/docker/mysql/slave/data:/var/lib/mysql mysql:5.6

可以看到容器mysql-master和mysql-slave已经启动成功!

3.2保存文件重启mysql,进入主库
#进入mysql容器内部
docker exec -it 主mysql的容器id bash
#登录mysql
mysql -uroot -p123456
3.3授予用户权限
#这里就采用的root用户
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by '123456';
FLUSH PRIVILEGES;
show grants for 'root'@'%';
3.4登录从库配置主库的信息
# 内网地址
CHANGE MASTER TO MASTER_HOST='172.18.242.24',
MASTER_PORT=3307,
MASTER_USER='root',
MASTER_PASSWORD='123456',
master_log_file = 'mysql-bin.000001',
master_log_pos=0;
3.5查看是否配置成功
#开启复制
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安装mysql镜像并进行主从配置的更多相关文章

  1. docker安装mysql镜像和容器

    下拉镜像 docker pull mysql/mysql-server:5.5 后面的mysql标签是版本号,是可选择的,有: 5.5 5.6 5.7 8.0 创建mysql5.5的容器 docker ...

  2. docker安装mysql5.6镜像并进行主从配置

    docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...

  3. docker安装mysql主从

    docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...

  4. Docker学习实践 - Docker安装MySql数据库

    Docker安装MySQL数据库 1.Ubuntu安装MySQL安装 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libnc ...

  5. 使用docker安装mysql和redis

    本文介绍在linux下使用docker安装mysql和redis. 原文地址:代码汇个人博客 http://www.codehui.net/info/59.html 测试环境:centos7.6,do ...

  6. docker 安装mysql mongo

    Docker安装Mysql 1.拉取镜像 docker pull mysql/mysql-server 2.运行mysql docker run -d -p : --name [Name] [Imag ...

  7. docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区

    原文:docker安装MySQL8,目录挂载.配置用户名密码.忽略表名大小写.连接数.特殊字符.时区 一.环境配置 1.系统:centos7.3 2.docker版本:Docker version 1 ...

  8. CentOS 中利用docker安装MySQL

    1.前提条件 centos7 且内核版本高于3.10, 可通过命令: uname -r 查看内核版本 2.利用yum 安装docker 安装一些必要的系统工具: sudo yum install -y ...

  9. Docker安装MySQL,Redis,阿里云镜像加速

    Docker安装 虚拟化容器技术.Docker基于镜像,可以秒级启动各种容器.每一种容器都是一个完整的环境,容器之间相互隔离. 如果之前安装的有其他版本,卸载旧的版本. $ sudo yum remo ...

随机推荐

  1. 新手安装eclipse或idea后进行配置、快捷键、插件总结

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. UNIX环境高级编程APUE练习4.6-实现类似cp(1)的程序,保留文件中的空洞

    1 题面 编写类似cp(1)的程序,它复制包含空洞的文件,但是不将字节0写到输出文件中去. 2 基本思路 首先要搞清楚空洞的性质以判断一个文件是否有空洞,以及空洞的位置 知道了空洞的位置之后,读到源文 ...

  3. Linux应用程序安装方法

    一.linux应用程序基础 1.1.应用程序与系统命令的关系 1.2.典型应用程序的目录结构 1.3.常见的软件包封装类型 二.RPM包管理工具 2.1.RPM软件包管理器Red-Hat Packag ...

  4. Spring源码解析之ConfigurationClassPostProcessor(二)

    上一个章节,笔者向大家介绍了spring是如何来过滤配置类的,下面我们来看看在过滤出配置类后,spring是如何来解析配置类的.首先过滤出来的配置类会存放在configCandidates列表, 在代 ...

  5. 题解—P3000 [USACO10DEC]Cow Calisthenics G

    做这题之前最好学会 "树形 \(dp\) 求树的直径"这一前缀知识(虽然我会但是我还是没想出来) 几乎想到要求直径这道题也没什么问题了(这不是废话吗,为什么题面里给了"直 ...

  6. jpa中使用Query判断条件查询

    jpa中使用Query判断条件查询 @Query(value = " select m.* from mining_area as m " + " where 1 = 1 ...

  7. flutter实现文字超出最大宽度显示省略号

    Container( width: 60, child: Text( '...', maxLines: 1, overflow: TextOverflow.ellipsis, ), ) 给Text外层 ...

  8. 在npm Vue单页面的环境下,兄弟组件之间通信Bus

    参考1:https://www.cnblogs.com/wangruifang/p/7772631.html 参考2:https://www.jianshu.com/p/b3d09c6c87bf 在m ...

  9. Javascript - Vue - 路由

    vue router.js 下载:vue-router.js, 该文件依赖于vue.js <script src="Scripts/vue-2.4.0.js">< ...

  10. Hibernate之检索方式

    时间:2017-1-22 16:09 --检索方式Hibernate中提供了以下几种检索对象的方式:    *   导航对象图检索方式        根据已经加载额对象导航到其他对象.        ...