使用docker部署mysql主从复制集群
一、环境搭建
虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:
启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309
docker pull mysql:5.7 docker run -p : --name mysql-master -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
docker run -p : --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
docker run -p : --name mysql-slaver2 -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
二、配置mysql-master
进入mysql-master容器,修改/etc/mysql/my.cnf,添加
[mysqld]
server-id= ##自定义id号,不要重
log-bin=mysql-bin ##开启二进制日志
注意:在使用vim时,可能会出现not found,需要apt-get install vim
修改好my.cnf后,需要重启一下mysql,重启一下mysql-master容器,重新进入容器
service mysql restart
docker start mysql-master
docker exec -it mysql-master /bin/bash
进入容器后,登录mysql,为slaver分配一个账号
CREATE USER 'slave'@'%' IDENTIFIED BY '123abc'; ##用户名是slave,密码是123abc
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; ##指定访问权限
查看当前主机状态,注意:查看完状态后就不要再进行其他的操作了,slaver会引用mster的Position编码,每次操作Position都会变。
到这里,master就配置完成了,等待slaver的连接。
三、配置mysql-slaver
以mysql-slaver1为例
进入容器和配置master一样
修改/etc/mysql/my.cnf文件,添加
[mysqld]
server-id= ##id号,自定义,不要重就行
log-bin=mysql-slave-bin ##开启二进制日志功能
relay_log=edu-mysql-relay-bin ##配置中继日志
然后是重启mysql,重启容器,重新进入容器,登录mysql进行下一步配置
service mysql restart
docker start mysql-slaver1
docker exec -it mysql-slaver2 /bin/bash
mysql -u root -p
执行命令进行master的连接,需要配置master的ip,用户名,密码,日志文件和当前版本号
change master to master_host='192.168.37.134', master_user='slave', master_password='abc123', master_port=, master_log_file='mysql-bin.000001', master_log_pos= , master_connect_retry=;
查看连接状态
show slave status \G;
可以看到当前状态是未开启主从复制,接下来开启,再查看状态
start slave;
show slave status \G;
当看到这个的时候,说明我们的配置出现了问题,原因是密码写错了,出现这种情况一般就是在连接配置的时候出现了问题。现在改回来重新执行如下代码
stop slave; #修改之前需要先stop一下
change master to master_host='192.168.37.134', master_user='slave', master_password='123abc', master_port=, master_log_file='mysql-bin.000001', master_log_pos= , master_connect_retry=;
start slave;
show dlave status \G;
当看到两个Yes的时候,说明slave配置成功了,并且已经开启了主从复制。
mysql-slaver2配置相同。
四、测试
mysql-master上创建一个数据库,创建表,插入数据
create database test charset utf8;
use test;
create table user(id int(),name varchar())charset utf8;
insert into user(id,name) values(,'tom'),(,'jerry');
在其中一台mysql-slaver1上查看数据
五、说明一下
1. mysql是按/etc/my.cnf
-> /etc/mysql/my.cnf
-> /usr/local/mysql/etc/my.cnf
-> ~/.my.cnf的顺序读取配置文件的。
如果几个配置文件中都有相同的参数,mysql会以读取的最后一个文件配置参数为准。
2. 集群结构
当前的结构是slaver1和slaver2作为master的从机,需要在slaver1和slaver2上配置master的相关信息。
也可以使用串行结构
只不过是slaver2把slaver1认为是master,配置的是slaver1的相关信息
在spring项目中,可以配置两个数据源,一个读,一个写。然后DAO层的类分别注入不同的数据源,产生读的bean和写的bean,service调用的时候注入指定的bean就可以啦。
使用docker部署mysql主从复制集群的更多相关文章
- Kubernetes 部署Mysql 主从复制集群
Mysql主从参考文章: https://www.jianshu.com/p/509b65e9a4f5 http://blog.51cto.com/ylw6006/2071864 Statefulse ...
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- 基于Docker的Mysql Cluster集群
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...
- docker部署Ceph分布式存储集群
1.环境准备 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb ...
- docker 部署 HFish(集群部署)
主节点部署: docker run -d --name hfish-master -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : ...
- docker中mysql pxc集群
PXC集群 https://hub.docker.com/r/percona/percona-xtradb-cluster 安装PXC镜像 下载镜像或者导入本地镜像 docker pull perco ...
- Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...
- Docker搭建MySQL主从集群,基于GTID
写在前边 搭建MySQL读写分离主从集群,这里未使用binlog方式,使用的是GTID方式 源码见我的Github https://github.com/hellxz/mysql-cluster-do ...
随机推荐
- SQL连接(join)
INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN ...
- 微信小程序wxs如何使用
新建一个.wxs文件 <!-- 引入.wxs文件 src为相对路径,module指定当前模块的名称 --> <wxs module="filter" src=&q ...
- 如何部署struts开发环境
1 首先登陆http://archive.apache.org/dist/struts/source/页面,会看到struts的下载页面 2 下载struts的最新版本struts2-2.2.1-sr ...
- ASP.NET如何接收清楚缓存的通知
1 如果使用cache的add方法或者接受CacheItemPriority值得Insert方法重载接收通知,可以提供CacheItemRemovedCallBack对象,选择在清除对象时接收通知 u ...
- 【Git】三、版本回退&撤消修改&文件删除
提要 //查看git操作日志 $ git log //单行格式查看操作日志 $ git log --pretty=oneline //还原操作到上一次版本,有几个^就上几次 $ git reset - ...
- 微信小程序开发(七)获取手机网络类型
// succ.wxml <view>手机网络状态:{{netWorkType}}</view> // succ.js var app = getApp() Page({ da ...
- 11_Hive TransForm 案例
1.需求:将Json格式的数据处理后插入新表中 数据文件如下:rating.json,文件格式:{"movie":"2858","rate" ...
- confluence配置搭建
1.环境准备:需要安装jdk.需要mysql5.7数据库,创建数据库confluence并创建用户和密码 CREATE DATABASE `confluence` DEFAULT CHARACTER ...
- CodeForces 839B - Game of the Rows | Codeforces Round #428 (Div. 2)
血崩- - /* CodeForces 839B - Game of the Rows [ 贪心,分类讨论] | Codeforces Round #428 (Div. 2) 注意 2 7 2 2 2 ...
- nginx之location部署yii项目(不使用nginx端口转发)
前言: 之前部署yii项目的时候, 使用的是域名, 后来使用nginx进行端口转发(反向代理)来部署yii项目. 这一次部署尝试只使用location 进行部署(不需要使用端口). 先贴出nginx的 ...