本文是《Docker下MySQL主从三部曲》系列的第二篇,上一篇《Docker下MySQL主从三部曲之一:极速体验》我们轻而易举的搭建了MySQL主从同步环境,凭借的是一个docker-compose.yml脚本,今天我们一起来看看这个脚本相关的技术细节,学习如何制作支持MySQL主从同步镜像;
从本章开始,我们来实战如何在Docker下快速搭建主从同步的MySQL环境,《Docker下MySQL主从三部曲》由以下三章组成:
配置完成后,需要重启mysql服务使其修改的配置文件生效,使用如下命令使mysql进行重启
大家好,咱们前面通过十篇的文章介绍了docker的基础篇,从本篇开始,咱们的《docker学习系列》将要进入到高级篇阶段(基础篇大家可以查看之前发布的文章)。
本文介绍在Kubernetes集群中部署MySQL主从集群,数据持久化采用NFS。
通过前面的学习,我们已经掌握了docker-compose容器编排及实战了。高级篇也算快完了。有没有相关,我们前面学习的时候,都是通过命令行来操作docker的,难道docker就没有图形化工具吗?答案是肯定有的。咱们本篇就来讲讲docker图形化工具及使用图形化工具安装Nginx及docker系列教程总结
Redis作为承担缓存作用的数据库,一般会应用在高并发的场景里,而在这些高并发应用场景的数据库层面还会用到其他数据库的组件或集群以提升性能,比如用MySQL主从集群实现读写分离效果、用MyCAT组件实现分库分表的功能。另外,Redis本身会以集群的形式对外提供缓存服务。
首先,在docker下进行搭建mysql可以当做学习数据库搭建时的测试使用,docker的hub中有已经封装好的mysql可以避免我们进行数据库安装的复杂步骤,而且docker容器之间相互独立,拥有自己的ip和可以设置不同的端口,不会造成端口的冲突。
Gaea是小米中国区电商研发部研发的基于MySql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。Gaea支持分库分表、SQL路由、读写分离等基本特性,其中分库分表方案兼容了mycat和kingshard两个项目的路由方式。
本章是《Docker下MySQL主从三部曲》的终篇,前面的章节我们能够制作镜像来搭建主从同步环境,本章我们来观察binlog参数MASTER_LOG_POS;
本章在Docker环境下创建两个MySQL容器,再配置成一主一从,今天的配置都是手工输入命令完成的,这么做是为了熟悉MySQL主从配置的基本步骤,为接下来的实战打好基础,后面的章节中,我们自制MySQL主从镜像,实现以最简化的方式搭建一个MySQL主从环境;
MySQL的主从复制之前也没做过,刚百度了下发现并不算难,但同时开两个虚机挺麻烦,于是我就想到了使用docker来配置MySQL主从复制。
通过前面十来篇的学习,我们已经把docker基础篇学习完了。这篇文章,咱们就来小总结下基础篇学习的东西以及介绍接下来高级篇中,将会学习到哪些知识点。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
先说一下我想搭建的原因的吧。我必须申明的是:我们目前的项目接触不到。shigen是一个比较喜欢折腾的人,在接触腾讯云的云数据库(CDB)的时候,有很多的主从节点。我一想,我也可以尝试去搭建一个呢。
docker run-p3339:3306--name mymysql-e MYSQL_ROOT_PASSWORD=123456-d mysql:5.7
首发地址: https://mp.weixin.qq.com/s/7mmIsd83QPT65QnQd5CtFQ
那么,接着,活动过去了。流量没有那么大了。需要缩容了。从4主4从缩容到3主3从了。那么这个时候又该怎么处理呢?
环境准备 准备MySQL配置文件 my.cnf 应该注意的是每个MySQL服务器配置的 server_id 应是唯一不同的,把binlog-do-db后面的值修改为需要同步的数据库即可 [mysqld] log_bin = mysql-bin binlog-do-db = blogapi # 注意这儿仅仅复制blogapi数据库 server_id = 4168 datadir=/var/lib/mysql symbolic-links=0 default-storage-engine=innod
作为《手撕MySQL》系列的第三篇文章,今天讲解使用 bin log实现主从复制的功能。主从复制也是MySQL集群实现高可用、数据库读写分离的基石。因为是系列文章,上一篇文章中(传送门)我们已经介绍了在MySQL中查看 bin log的相关状态以及文件信息,并且借助 bin log(二进制日志)实现数据恢复的案例。因此在这篇文章中如有涉及相关知识,将不再赘述。
通过前面的学习,我们已经可以把自己写的微服务项目通过dockerfile文件方式部署到docker上面了(可以移步到:docker高级篇:实战-自己开发的微服务怎么在docker上面运行?)。那么微服务之间通信,怎么通信的?是在同一个网络还是在不同的网络环境下?docker中怎么配置网络环境呢?本文咱们就一起学学docker网络。
搭建mysql主从的目的是让一台mysql作为主数据库,一台或多台mysql作为从数据库,主数据库只负责数据的写入,从数据库只负责数据的查询(读写分离),且主从数据库是实时同步的,这样就可以减轻单个数据库压力,从而提高项目的并发量。
其中hostip是必须修改的,其他配置可以酌情修改. 注意: 如果你的Docker环境是通过Docker Toolbox,且是安装在windows环境,建议将isToolBox=1. 因为windows下数据目录共享可能会出现磁盘异步io的异常,此时通过设置--skip-innodb-use-native-aio关闭异步io之后就会正常.关闭异步io会导致性能下降,此参数仅建议用于测试。磁盘异步IO介绍请参考:dev.mysql.com/doc/refman/…
binlog 是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句(不包括 SELECT),可以在配置文件开启,也可以在 MySQL 客户端开启. 可以在客户端键入show plugins; 查看 binlog 是否已安装开启( Active )
这三个mysql创建一个docker的局域网用于通信使用,因为各个容器之间是互不影响的,所以他们的启动端口都可以是3306,对于宿主机映射的端口分别是6606,6607,6608。
URL监控通过blackbox-exporter组件监控,组件部署位置192.168.0.39。
在上篇文章中我们介绍了基于Docker的MySQL主从搭建,一主多从的搭建过程就是重复了一主一从的从库配置过程,需要注意的是,要保证主从库my.cnf中server-id的唯一性。搭建完成后,可以在主库show slave hosts查看有哪些从库节点。
在这里,使用了Docker官方提供的MySQL镜像,并且使用了MySQL的默认3306端口。-e选项用于设置MySQL的root密码。
在上篇文章中我们介绍了基于Docker的Mysql主从搭建,一主多从的搭建过程就是重复了一主一从的从库配置过程,需要注意的是,要保证主从库my.cnf中server-id的唯一性。搭建完成后,可以在主库 show slave hosts查看有哪些从库节点。
通过前面的一系列学习,我们已经知道怎么制作dockerfile了(见 Dockerfile介绍及常用保留指令 docker高级篇第三章-dockerfile案例之制作自己的centos镜像 )。那么,本篇文章,咱们就把自己写的spring boot的demo项目,部署在docker上面。
2.2.4 先启动容器(为了复制配置文件)(这种做法显得多余,但是Docker不是很精通的我没想到更好的办法,请各位大神指导)
在上一篇文章中,我们介绍了分布式存储的三种方式:hash取余分区、一致性哈希算法分区以及哈希槽分区。本篇,我们就来实战3主3从的哈希槽Redis集群搭建。
Canal [kə’næl],译意为水道/管道/沟渠,canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。GitHub的地址:https://github.com/alibaba/canal
昵称:院长 性别:男 爱好:羽毛球,乒乓球,嗨歌,钻研技术 技能:在下方 职位:落魄技术
mysql主从架构部署比较简单,常见架构根据主从节点个数不同分成 一主多从,多主一从,双主节点等。
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流)
在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的,我们需要一个像Git仓库一样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。
通过前面两篇,我们学会了三主三从的Redis集群搭建及主从容错切换迁移,随着业务增加,可能会有主从扩容的,所以,本文我们来实战主从扩容
docker的一大好处是在本地可以很方便快速的搭建负载均衡,主从同步等需要多主机的环境。 可以说是极大方便了运维成本和难度。 本节在本地搭建mysql的一主一从的集群环境。
其中hostip是必须修改的,其他配置可以酌情修改. 注意: 如果你的Docker环境是通过Docker Toolbox,且是安装在windows环境,建议将isToolBox=1. 因为windows下数据目录共享可能会出现磁盘异步io的异常,此时通过设置--skip-innodb-use-native-aio关闭异步io之后就会正常.关闭异步io会导致性能下降,此参数仅建议用于测试。磁盘异步IO介绍请参考:https://dev.mysql.com/doc/refman/5.7/en/innodb-linux-native-aio.html
参考https://www.cnblogs.com/xiaoyuanqujing/articles/11796376.html#4417022
Canal介绍:Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件(数据库同步需要阿里的 Otter 中间件,基于 Canal)。
*3 ==> PS ###我用的是虚拟机, 所以起了3个虚拟机,分配 IP如下###
由于我这里使用docker搭建,所以需要把配置文件和数据文件映射到宿主机,让容器运行时挂载数据
进入/mydata/mysql-master/conf目录下新建my.cnf(上面启动容器实例指定的路径)
在上一篇文章中,我们介绍了Dockerfile是什么以及Dockerfile常用的保留字段。熟悉了这些之后,有没有想自己动手写一个Dockerfile呢?本文咱们就实战自己Dockerfile。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhiqiang0316/article/details/79619246
从本文开始,咱们将介绍docker的另外一个技术点:dockerfile.我们来看看DockerFile相关的知识点,我们将怎么学习?
领取专属 10元无门槛券
手把手带您无忧上云