docker安装mysql集群
目录
一.前言
二.主从集群搭建
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集群相关推荐
- docker 安装mongodb集群,多台服务器
docker 安装mongodb集群==多台服务器 - a393060727 - 博客园
- 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 ...
- docker安装redis集群+设置密码
docker安装redis集群+设置密码 采用文章 https://blog.csdn.net/BThinker/article/details/123374236 1.获取Redis镜像 shell ...
- Zookeeper:Mac通过Docker安装Zookeeper集群
此篇为 "Mac通过Docker安装Zookeeper集群",笔者原本计划是接下来更新Zookeeper应用系列的相关内容,但相关内容依赖Zookeeper集群,虽然前面也更新了 ...
- 二进制安装mysql集群_基于二进制安装Cloudera Manager集群
一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...
- 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6
在超哥的帮助下,完成了基于InnoDb数据引擎的mysql数据库集群搭建,实现了主从复制的功能,本篇博文介绍如何使用二进制安装mysql的方法,具体实现步骤如下: 软件使用说明: Liunx系统:ce ...
- docker 安装redis集群配置3主3从,实现hash槽分配存储数据
目录 一.docker集群安装 1.分别在宿主机的/docker/redis下创建每个节点数据同步的目录 2.执行容器启动命令 3.执行命令参数解释: 4.集群节点不够提示:提示需要至少3个maste ...
- 使用Docker安装Spark集群(带有HDFS)
本实验在CentOS 7中完成 第一部分:安装Docker 这一部分是安装Docker,如果机器中已经安装过Docker,可以直接跳过 [root@VM-48-22-centos ~]# system ...
- 【Docker】docker安装elasticsearch集群,Kibana安装以及开启认证
提示: 文章目录 前言 一.Elasticsearch是什么? 二.Elasticsearch安装步骤 1.环境配置 2.系统配置修改 3.拉取镜像 4.创建挂载目录并赋权 5.安装获取elastic ...
最新文章
- python 隐马尔科夫_隐马尔可夫模型原理和python实现
- ABAP:ALV List报表
- 百度html删除,百度地图-删除默认版权信息
- mysql数据库主要负责存储_MySQL默认数据库简介
- [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange
- Roslyn 使用 Directory.Build.props 管理多个项目配置
- Modbus协议栈开发笔记之三:Modbus TCP Server开发
- Node.js安装及环境配置之Windows篇
- 明晚直播预告丨Oracle 19c X86下移经验分享
- Single-page application
- Linux学习笔记:CentOS6关闭IPv6
- 是什么浪费了运维的工作时间?
- TCP/IP协议与Http协议的区别
- ubuntu16.04 pytorch 安装
- Excel 取消身份证的科学计数法显示形式
- Kafka从上手到实践 - 实践真知:搭建单机Kafka | 凌云时刻
- PMP考试难度以及通过率
- 把hive sql的关键字小写转大写的小程序
- android webview浏览器下载文件,Android 浏览器 —— 使用 WebView 实现文件下载
- c语言求范围内最大素数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
热门文章
- 转:职场人必看十句话
- 都8102年了,你为什么还在装系统?!
- 信息系统监理师题库_2018年下半年上午-信息系统监理师-软考(考试真题及答案-完整版)...
- Hinge Loss简介
- hackme-1初级渗透测试
- 人脸检测之Improved Faster R-CNN
- scrapy深入爬取苏宁易购图书信息
- 解决Swift中callback循环引用 - Delegated(Library)
- element-ui switch开关打开和关闭时的文字设置样式
- java中的cascade,详解Hibernate cascade级联属性的CascadeType的用法