目录

一.前言

二.主从集群搭建

2.1.master 主服务器的搭建

2.2 slave服务器准备


一.前言

主从复制的流程:

1. 主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面。

2. 从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进   制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。

3. 从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

小结: 借助于docker的容器化技术,我们只需要创建两个MySQL容器,并且占用主机的两个端口即可,对主机没有其他额外的影响。这种方式非常的轻量,而且也容易复制。本文则主要讲解如何通过docker来搭建MySQL集群。

二.主从集群搭建

2.1.master 主服务器的搭建

1.启动容器

docker run --name mysql-master --privileged=true -v /home/mysql/master-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a123456. -d xiaochunping/mysql-master

在执行上述命令之后,docker首先会检测本地有没有目标镜像,即xiaochunping/mysql-master(这个镜像内部的cnf是配好的),如果没有,则会下载该镜像,然后根据配置的参数运行该镜像。

上述命令中各个参数的含义如下:

--name指定运行之后的容器的名称为mysql-master;

​ -- privileged指定了当前容器是否真正的具有root权限,所谓的root权限是指具有宿主机的root权限,而不仅仅只是在容器内部有root权限;

-v 指定了容器中指定目录挂载到宿主机上的某个目录,这样做的目的在于防止容器中配置的数据丢失,因为docker容器在重启之后是不会保留前一次在其内部运行的相关数据的; ​

-p 表示宿主机上的某个端口映射到docker容器内的某个端口,这里也就是将宿主机的3306端口映射到容器内部的3306端口; ​

-e 表示指定当前容器运行的环境变量,该变量一般在容器内部程序的配置文件中使用,而在外部运行容器指定该参数。这里的MYSQL_ROOT_PASSWORD表示容器内部的MySQL的启动密码; ​

-d 参数指定了当前容器是在后台运行。

docker ps命令即可看到这个运行的容器

[root@zyy ~]# docker ps

CONTAINER ID   IMAGE        COMMAND    CREATED       STATUS    PORTS        NAMES

746e43a06fbf   xiaochunping/mysql-master   "docker-entrypoint.s…"   15 minutes ago   Up 15 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql-master ​

2.进入该容器:

docker exec -it 746e43a06fbf /bin/bash ​

# 通过容器id方式,这里的id就是上面docker ps中展示的id

3.进入容器后,我们需要连接其MySQL服务:

mysql -uroot -pa123456.

# 这里的密码就是最开始创建容器时指定的密码

4.创建一个专门用来复制binlog的账号,并且赋予该账号复制权限,其命令如下:

grant replication slave on *.* to 'test'@'%' identified by '123456'; flush privileges;

#这里的grant replication slave是一个命令格式,表示赋予后面的账户以复制的权限,这样slave节点就能够获取到master节点对数据的更新。上述命令中创建的账户的用户名为test,密码为123456

5.查看master节点的binlog状态:

mysql> show master status; #这里需要记住这个File和Position属性的值,因为下面在配置slave的时候需要用到

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

2.2 slave服务器准备

1.启动容器

docker run --name mysql-slave --privileged=true -v /home/mysql/slave1-data:/var/lib/mysql -p 3307:3306 --link mysql-master:master -e MYSQL_ROOT_PASSWORD=a123456. -d xiaochunping/mysql-slave​

2.进入容器

docker exec -it mysql-slave /bin/bash ​

3.输入用户名密码

mysql -uroot -pa123456.

4.连接连接主服务器信息

change master to master_host='master', master_user='test', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=589, master_connect_retry=30;

5.开启主从复制

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

6.查看从服务器的连接状态

show slave status\G;

#这里只要看到两个参数Slave_IO_Running和Slave_SQL_Running都为true,则表示复制是正常进行的,到这里我们的主从结构也就搭建完成了。

docker安装mysql集群相关推荐

  1. docker 安装mongodb集群,多台服务器

    docker 安装mongodb集群==多台服务器 - a393060727 - 博客园

  2. CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE

    CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE 文章目录 CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR M ...

  3. docker安装redis集群+设置密码

    docker安装redis集群+设置密码 采用文章 https://blog.csdn.net/BThinker/article/details/123374236 1.获取Redis镜像 shell ...

  4. Zookeeper:Mac通过Docker安装Zookeeper集群

    此篇为 "Mac通过Docker安装Zookeeper集群",笔者原本计划是接下来更新Zookeeper应用系列的相关内容,但相关内容依赖Zookeeper集群,虽然前面也更新了 ...

  5. 二进制安装mysql集群_基于二进制安装Cloudera Manager集群

    一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...

  6. 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6

    在超哥的帮助下,完成了基于InnoDb数据引擎的mysql数据库集群搭建,实现了主从复制的功能,本篇博文介绍如何使用二进制安装mysql的方法,具体实现步骤如下: 软件使用说明: Liunx系统:ce ...

  7. docker 安装redis集群配置3主3从,实现hash槽分配存储数据

    目录 一.docker集群安装 1.分别在宿主机的/docker/redis下创建每个节点数据同步的目录 2.执行容器启动命令 3.执行命令参数解释: 4.集群节点不够提示:提示需要至少3个maste ...

  8. 使用Docker安装Spark集群(带有HDFS)

    本实验在CentOS 7中完成 第一部分:安装Docker 这一部分是安装Docker,如果机器中已经安装过Docker,可以直接跳过 [root@VM-48-22-centos ~]# system ...

  9. 【Docker】docker安装elasticsearch集群,Kibana安装以及开启认证

    提示: 文章目录 前言 一.Elasticsearch是什么? 二.Elasticsearch安装步骤 1.环境配置 2.系统配置修改 3.拉取镜像 4.创建挂载目录并赋权 5.安装获取elastic ...

最新文章

  1. python 隐马尔科夫_隐马尔可夫模型原理和python实现
  2. ABAP:ALV List报表
  3. 百度html删除,百度地图-删除默认版权信息
  4. mysql数据库主要负责存储_MySQL默认数据库简介
  5. [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange
  6. Roslyn 使用 Directory.Build.props 管理多个项目配置
  7. Modbus协议栈开发笔记之三:Modbus TCP Server开发
  8. Node.js安装及环境配置之Windows篇
  9. 明晚直播预告丨Oracle 19c X86下移经验分享
  10. Single-page application
  11. Linux学习笔记:CentOS6关闭IPv6
  12. 是什么浪费了运维的工作时间?
  13. TCP/IP协议与Http协议的区别
  14. ubuntu16.04 pytorch 安装
  15. Excel 取消身份证的科学计数法显示形式
  16. Kafka从上手到实践 - 实践真知:搭建单机Kafka | 凌云时刻
  17. PMP考试难度以及通过率
  18. 把hive sql的关键字小写转大写的小程序
  19. android webview浏览器下载文件,Android 浏览器 —— 使用 WebView 实现文件下载
  20. c语言求范围内最大素数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...

热门文章

  1. 转:职场人必看十句话
  2. 都8102年了,你为什么还在装系统?!
  3. 信息系统监理师题库_2018年下半年上午-信息系统监理师-软考(考试真题及答案-完整版)...
  4. Hinge Loss简介
  5. hackme-1初级渗透测试
  6. 人脸检测之Improved Faster R-CNN
  7. scrapy深入爬取苏宁易购图书信息
  8. 解决Swift中callback循环引用 - Delegated(Library)
  9. element-ui switch开关打开和关闭时的文字设置样式
  10. java中的cascade,详解Hibernate cascade级联属性的CascadeType的用法