docker搭建mysql主从
前言
为什么要使用Docker搭建?
不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成功,更别说直接在服务器上安装mysql主从节点了
使用docker安装mysql的好处大概有下面节点:
- 节省服务器资源,传统方式安装一个mysql,至少夜的一台配置不算太差的服务器吧,如果使用docker呢?一个服务器上你可以部署多个mysql啊,只需暴露出来的端口号不一样就可以啦
- 安装便捷,只需一条命令即可完成安装,这样新手还说自己不会吗
- 维护成本低,可以跨器移植
1、docker安装mysql
1.1 下载一个mysql镜像文件,为了使用的稳定性,不建议使用最新的,我这里使用的是5.7.25版本的
docker pull mysql:5.7.25
1.2 启动mysql,以后台启动方式
docker run -p 3307:3306 --name my5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
1.3 查看启动成功的mysql进程并进入容器进行操作
docker exec -it 容器ID /bin/bash
基本上到这里我们就完成了一个mini版的docker下的mysql服务的安装,是不是很快,项目上使用的时候,最好配置一下宿主机和mysql容器的数据卷,方便后续数据管理和维护
2、docker搭建mysql主从
2.1 依照上面的流程,我们再启动两个mysql容器的实例,两个实例对外的端口和容器名称不同
主节点:
docker run -p 3339:3306 --name mymysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
从节点:
docker run -p 3340:3306 --name mymysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
启动成功可通过docker ps观察是否启动成功:
2.2 进入主节点容器,配置my.cnf文件,我们知道,mysql主从的原理是从节点通过监听主节点的bin_log文件完成数据的同步的,默认情况下,不管是服务器直接安装还是docker安装的mysql,均没有开始bin_log,需要手动开启,首先修改主节点的my.cnf
但是在docker的容器中,初次进去直接执行vi 或者vim命令时会提示命令找不到,需要手动安装一下vim的命令,如下:
apt-get update
apt-get install vim
安装成功后,主节点配置如下:
配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器停止,我们还需要docker start mymysql-master启动容器
service mysql restart
docker start mymysql-master
下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
File和Position字段的值后面将会用到,Position表示从节点要监听的bin_log位置起始点,在后面的操作完成之前,需确保Master库不做任何操作,否则将会引起状态变化,File和Position字段的值变化会对后面的数据同步时不准确
2.3 从节点也做同样的操作,即进入容器后配置my.cnf并重启容器
进入从节点的mysql命令模式客户端,执行如下命令,完成配置连接信息初始化,
change master to master_host='172.17.0.3', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
简单解释下上面命令的含义:
- master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect 容器名称|容器id查询容器的ip
- master_port:Master的端口号,指的是容器的端口号
- master_user:用于数据同步的用户
- master_password:用于同步的用户的密码
- master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
- master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
- master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
关于docker启动后的IP地址,可能有些同学不太熟悉,可以通过上面所说的:docker inspect 镜像ID查看:
2.3 再在Slave 中的mysql终端执行show slave status \G;用于查看主从同步状态
图中圈起来的是需要关注的地方,比如这里的position就是上面主节点的起始位置监听点,同时因为我们还没有开启主从复制过程,所以SlaveIORunning 和 SlaveSQLRunning 都是No,再次执行命令
start slave
然后再观察主从同步状态,这时候状态就变了
测试主从数据是否可以同步
正常情况下,开启了同步命令后,从节点就开启了对主节点的bin_log日志的监听,只要不出现连接短路的问题就一直处于connecting的状态
测试的话也非常简单,只需要在主节点创建一个库,然后看看从节点是否也有这个表就可以了啊,在主节点创建一个名test1的数据库
然后再在从节点的mysql命令行工具查看一下,
基本上到这里,我们通过docker完成了一个mysql主从搭建的简易案例,希望对看到的同学有用,最后感谢观看!
docker搭建mysql主从相关推荐
- mysql主从docker_(学习到实践)四、docker搭建mysql主从实践
前言 目前已完成:php7及扩展.redis5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里memcached还没有剥离安装). 今天数据库,编程的一个重要原则是不要重 ...
- docker搭建mysql主从数据库
一.docker安装mysql 参考 在服务器上使用docker安装mysql 在服务器上运行两个MySQL容器,一个作为主,另一个作为从,主写从读. 二.配置my.cnf 1.配置主库 首先进入容器 ...
- Docker - Docker中搭建MySQL主从
1.pull完centos7纯净版的镜像后,创建容器,然后将宿主机上下载的MySQL文件 (MySQL下载地址:http://mysql.mirror.kangaroot.net/Downloads/ ...
- docker下mysql主从搭建
使用docker 建立mysql主从 环境:Mac Mysql:5.7.36 目标: master主机端口 3307 slave从机端口 3308 在Mac建立master,slave对应目录 log ...
- docker安装mysql主从视频教程_docker安装mysql主从
docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...
- docker安装mysql主从_docker安装mysql主从
docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...
- 【收藏】使用Docker搭建MySQL服务
使用Docker搭建MySQL服务 https://www.cnblogs.com/sablier/p/11605606.html
- liunx下搭建mysql主从_linux下搭建mysql主从
在master上创建repl账户,用于复制. grant replication slave on *.* to [email protected]%' identified by 'P@$$W0rd ...
- docker mysql主从_使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
最新文章
- Tir-Hi3559AV100镜像烧写
- SCP传输文件和断点续传
- python中的线程threading.Thread()使用
- C语言(CED)与long long相关的知识
- Unity3dRPG 相机跟随player旋转_跟随式灌装机
- Linux系统基本操作(二)—设置本地光盘为yum源
- 今年最值得期待的JavaScript传奇绿皮书登场!
- python题目(1)
- Eclipse无法DEBUG
- 别人改汝代码,应该怎么办
- 小伙子自学C++编程简单DIY,即让你拥有一个屏幕画笔,非常实用!
- 非常规的DeepFaceLab(DeepFake)小花招和注意事项
- 【转】利用百度BAE3.0搭建原版WORDPRESS博客详细教程
- JEECG架构讲解及使用
- Default changeset implementation allows only one operation
- 每日 30 秒 ⏱ 强风吹拂
- html中index函数,INDEX函数.doc
- 向大家推荐一款可以免费在线Word转pdf,jpg转pdf,ppt转pdf等各种格式转换的网站
- omnet++,veins,sumo使用多应用层实现车辆和行人的模拟
- OpenMP求PI的四种方式