使用docker部署mysql主从复制集群
一、环境搭建
虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123
启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309
docker pull mysql:5.7docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3308:3306 --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3309:3306 --name mysql-slaver2 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
二、配置mysql-master
进入mysql-master容器,修改/etc/mysql/my.cnf,添加
[mysqld] server-id=3307 ##自定义id号,不要重 log-bin=mysql-bin ##开启二进制日志
注意:在使用vim时,可能会出现not found,需要apt-get install vim
修改好my.cnf后,需要重启一下mysql,重启一下mysql-master容器,重新进入容器
service mysql restartdocker start mysql-masterdocker 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=3308 ##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=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;
查看连接状态
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=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;start slave;show dlave status \G;
当看到两个Yes的时候,说明slave配置成功了,并且已经开启了主从复制。
mysql-slaver2配置相同。
四、测试
mysql-master上创建一个数据库,创建表,插入数据
create database test charset utf8; use test; create table user(id int(11),name varchar(255))charset utf8; insert into user(id,name) values(100,'tom'),(101,'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就可以啦。
转载于:https://www.cnblogs.com/wwzyy/p/11060400.html
使用docker部署mysql主从复制集群相关推荐
- 自动化部署mysql主从复制集群_使用docker部署mysql主从复制集群
一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和 ...
- 使用docker compose部署MySQL主从复制集群
使用docker compose部署MySQL主从复制集群 环境说明 宿主机:Ubuntu 14.04.6 LTS Docker Engine: 18.06.3-ce docker compose: ...
- s19.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(一)
基于 Kubernetes v1.25 和 Docker 部署高可用集群 主要内容 Kubernetes 集群架构组成 容器运行时 CRI Kubernetes v1.25 新特性 Kubernete ...
- k8s(七)—statefullset部署mysql主从集群
1 使用statefullset部署mysql主从集群 mysql-0是master mysql-1和mysql-2是两个备份 当mysql写的时候,找headless service中的mysql- ...
- innodb 集群_部署MySQL InnoDB集群以实现高可用性
innodb 集群 In this article, I am going to explain how we can deploy the MySQL InnoDB cluster. InnoDB ...
- docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群
转载自https://zhuanlan.zhihu.com/p/45193580 前言 随着应用业务数据不断的增大,应用的 响应速度不断下降,在检测过程中我们不难发现大多数的请求都是 查询操作.此时, ...
- Docker学习总结(43)——Docker Compose 搭建Mysql主从复制集群
前言 随着应用业务数据不断的增大,应用的 响应速度不断下降,在检测过程中我们不难发现大多数的请求都是 查询操作.此时,我们可以将数据库扩展成 主从复制模式,将 读操作 和 写操作 分离开来,多台数据库 ...
- 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
没有夸大标题哈,能够成功的,实测后发文 本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的. 直接CV也能搭建起来,莫慌. 我们一起加油!!! 地点 ...
- CentOS服务器Mysql主从复制集群的搭建
在配置Mysql数据库主从复制集群的时候要保证: 1.主从服务器操作系统版本和位数一致. 2.Mysql版本一致. 为了保证稳定性,最好服务器操作系统和Mysql数据库环境一致. CentOS服务器上 ...
最新文章
- mysql parametertype_MyBatis传入参数与parameterType
- 互联网公司GitHub repo 语言使用情况
- 人参的用法 和 吃法
- 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld
- 国内免费GPU资源哪里找,让我告诉你最新的薅羊毛“秘籍”
- Linux 编译 mysql
- python3.5中pdfkit的详细配置与使用
- OSPF邻接关系的建立步骤
- vcpkg安装_[工具]包管理工具Vcpkg 的使用
- 荣耀V30外观细节曝光:后置相机模组排布类似坚果Pro3
- 使用try-with-resources优雅的关闭IO流
- 修改MySQL的默认数据存储引擎
- pgsql 9.4修改数据库只读
- vim安装airline
- SOLIDWORKS 2021 SP5.0 安装教程
- 消除计算机硬盘的碎片应该使用,win10系统电脑C盘磁盘碎片怎么清理?
- Linux服务器建立IP隧道,变更访问出口
- 微信小程序如何快速达到1000UV流量主开通要求
- Civil 3D API二次开发学习指南
- Unity - RectTransform详解
热门文章
- iframe里面的元素触发父窗口元素事件的jquery代码 转
- Android中使用am命令实现在命令行启动程序详解
- Sublime 插件- px 转rem
- 【转】英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析
- 愉快且卓有成效:培养你与人相处的能力
- 不要错过路边的的风景
- oracle服务说明
- 跟着太白老师学python day11 可迭代对象和迭代器
- 数据库常见面试题总结
- 程序员的思维修炼》读书笔记