mysql集群

Canal简介

落花浮王杯 提交于 2020-01-17 13:51:37
以下内容主要摘自Canal 官方wiki和网友博客:https://www.jianshu.com/p/6299048fad66 一、背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 ps. 目前内部版本已经支持mysql和oracle部分版本的日志解析,当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48) 基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) search build 业务cache刷新 价格变化等重要业务消息 二、项目介绍 名称:canal [kə'næl] 译意: 水道/管道/沟渠 语言: 纯java开发 定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql 三、工作原理 1、mysql主备复制实现 从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log

【Canal源码分析】配置项

左心房为你撑大大i 提交于 2020-01-17 13:21:40
本文讲解canal中的一些配置含义。 一、配置加载图 二、配置文件canal.properties 2.1 common参数定义 比如可以将instance.properties的公用参数,抽取放置到这里,这样每个instance启动的时候就可以共享. 【instance.properties配置定义优先级高于canal.properties】 参数名 含义 默认值 canal.id 每个canal server实例的唯一标识,暂无实际意义 1 canal.ip canal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行启动服务 无 canal.port canal server提供socket服务的端口 11111 canal.zkServers canal server链接zookeeper集群的链接信息,例子:127.0.0.1:2181,127.0.0.1:2182 无 canal.zookeeper.flush.period canal持久化数据到zookeeper上的更新频率,单位毫秒 1000 canal.file.data.dir canal持久化数据到file上的目录 ../conf (默认和instance.properties为同一目录,方便运维和备份),如果想要HA,不需要配置这个,因为无法通过文件实现高可用 canal.file

MySQL group replication

被刻印的时光 ゝ 提交于 2020-01-17 04:57:24
本篇文章主要讲解 MySQL group replication 介绍,文中有关 MySQL ,group的内容,希望对大家有所帮助。 “ MySQL group replication ” group replication 是 MySQL 官方开发的一个开源插件,是实现 MySQL 高可用集群的一个工具。第一个GA版本正式发布于MySQL5.7.17中;想要使用group replication只需要从官网上下载MySQL5.7.17及以后的版本即可 group replication发布以后,有3种方法来实现MySQL的高可用集群: ①:异步复制 ②:半同步复制 ③:group replication ---注意: 异步复制是实现最早也是最简单的高可用方法。相比异步复制而言,半同步复制提高了MySQL集群的可靠性。group replication则是MySQL复制今后发展的方向,与前两者相比,不仅是可靠性更好,在易用性上也有巨大提高; 1、组的概念: group replication插件中有组(group)的概念,被group replication插件连接在一起的MySQL服务器是一个高可用组,组内的MySQL服务器被称为成员。组的概念贯穿与group replication的使用和内部实现之中。group replication内部集成了组管理服务

mysql group replication观点及实践

瘦欲@ 提交于 2020-01-17 04:56:51
一:个人看法 Mysql Group Replication 随着5.7发布3年了。作为技术爱好者。mgr 是继 oracle database rac 之后。 又一个“真正” 的群集,怎么做到“真正” ? 怎么做到解决复制的延迟,怎么做到强数据一致性?基于全局的GTID就能解决? 围绕这些问题进行了一些mgr 的实践, 为未来的数据库高可用设计多条选择。 mysql5.7手册17章可以看到其原理,网络上也很多同志写了关于其技术原理,这里自己对比rac理解下: 作为shared nothing (mgr)架构,其数据一致性实现较 shared everything(RAC) 架构要难, MGR通过一致性(Paxos)协议,保证数据在复制组内的存活节点里是一致的,复制组内的各成员都可以进行读写, 其实现机制是,当某个实例发起事务提交时,会向组内发出广播,由组内成员决议事务是否可以正常提交, MGR 在遇到事务冲突时(多节点同时修改同一行数据),会自动识别冲突,并根据提交时间让先提交的事务成功执行,后提交的事务回滚,其原理示意图如下: 对于 sharad nothing 架构,必须要了解分布式协议PAXOS,分布式状态机 理论,而在这块我翻阅了很多资料,发现其实并不是很成熟的。从上图可以看出来MGR 的冲突检测机制 类似于 rac 的gird 群集组件 也具备通告广播的群集服务

hadoop2.6.0搭建hive-2.3.3集群我遇到坑(hive的远程模式下)

余生长醉 提交于 2020-01-17 00:40:13
总结: 1:mysql数据库要在主节点(active)上安装才行 ! 2:lib的数据库连接的jar包要对相关的mysql版本 3 : 如果给 集群配置过ha的, 要保证hive数据库的初始化的时候,要保证安装了mysql的节点的namenode是active的状态,否则在hive的元数据的初始化的过程中会 报错,提示一些 节点的是处于备的状态 4:在运行hive之前要先启动hive的服务。 5 :”hive是 基于hdfs的,要 搭建好 hadoop的基础的相关 组件 == 6 :mysql下 要 设置可以进行远程登入== hive远程模式启动的步骤,如下。 1:启动hadoop集群,相关的进程都启动了 ;可以在webui界面中查看相应的进程” start-all.sh jps 2:启动处于(active)的namenode中的 mysql服务 systemctl start mysqld 查看mysql的服务是否启动 netstat -anop | grep mysqld 查看mysql的服务是否启动 systemctl status mysqld 3: 初始化hive的元数据库 bin/schematool -dbType mysql -initSchema 4:启动主节点的hive服务 ./hive master metastor 到此结束了

CDH5.12.1集群安装配置

ぐ巨炮叔叔 提交于 2020-01-16 08:46:49
CDH5.12.1&Kerberos 安装配置 环境: 操作系统:CentOS 7 JDK 版本:1.8.144 所需安装包及版本说明:由于我们的操作系统为CentOS7,需要下载以下文件: 下载地址: http://archive.cloudera.com/cm5/cm/5/ cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz 下载地址: http://archive.cloudera.com/cdh5/parcels/5.12.1/ CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 manifest.json IP地址 主机名 角色名称 部署软件 192.168.1.25 node5 Master jdk、cloudera-manager、MySql、krb5kdc、kadmin 192.168.1.21 node1 node jdk、cloudera-manager 192.168.1.22 node2 node jdk、cloudera-manager 192.168.1.23 node3 node jdk、cloudera-manager 192.168.1.24 node4 node jdk、cloudera

使用docker搭建mysql集群

懵懂的女人 提交于 2020-01-16 05:50:15
使用docker搭建mysql集群 如何使用docker搭建mysql的集群(使用了percona/percona-xtradb-cluster和haproxy镜像) 获取docker的mysql镜像 获取docker仓库存在的mysql镜像 docker pull percona/percona-xtradb-cluster:latest #获取镜像 #也可使用docker tag 【镜像名称】 【你需要的命名】 ,来个镜像加标签,可以让镜像名字短一些,便于使用 创建mysql集群服务 新建属于mysql集群的网段 docker network create -- subnet=172 . 18 . 0 . 0 / 16 mysql - cluster - net 新建属于mysql服务的数据卷 docker volume create v1 docker volume create v2 docker volume create v3 docker volume create v4 docker volume create v5 创建第一个mysql的节点 docker run - d - p 3406:3306 - e MYSQL_ROOT_PASSWORD=Radiant123 - e CLUSTER_NAME=MIXEDINFOS - PXC - e XTRABACKUP

MySQL的分区、分表、集群

烂漫一生 提交于 2020-01-16 05:40:52
1.分区 mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的, 一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能, 在物理上将这一张表对应的三个文件,分割成许多个小块,这样呢,我们查找一条数据时,就不用全部查找了,只要知道这条数据在哪一块,然后在那一块找就行了。 如果表的数据太大,可能一个磁盘放不下,这个时候,我们可以把数据分配到不同的磁盘里面去 分区的二种方式 a,横向分区 什么是横向分区呢?就是横着来分区了,举例来说明一下,假如有100W条数据,分成十份,前10W条数据放到第一个分区,第二个10W条数据放到第二个分区,依此类推。也就是把表分成了十分,根用merge来分表,有点像哦。取出一条数据的时候,这条数据包含了表结构中的所有字段,也就是说横向分区,并没有改变表的结构。 b,纵向分区 什么是纵向分区呢?就是竖来分区了,举例来说明,在设计用户表的时候,开始的时候没有考虑好,而把个人的所有信息都放到了一张表里面去,这样这个表里面就会有比较大的字段,如个人简介,而这些简介呢,也许不会有好多人去看,所以等到有人要看的时候

MySQL InnoDB Cluster 详解

我们两清 提交于 2020-01-15 08:55:49
导读 本文转载自MySQL解决方案工程师 作者:徐铁韬 这篇文章将详细地介绍MySQL的高可用解决方案—— MySQL InnoDB Cluster。 说到高可用性,首先要了解一下什么是高可用性? 高可用性要求的实际上是对可靠性的要求,从本质上来说,是通过技术和工具来提高可靠性,尽可能长时间保持数据的可用和系统的正常运行时间。实现高可用性的原则为排除单点故障、通过冗余实现快速恢复,并且具有容错机制。 上面一页主要介绍了几个关键词汇,以及相关的定义,这些有助于理解可靠性和高可用性。 MySQL的高可用性解决方案目前大致分为5种,按照高可用的级别(99.9999%为最高级)排序依次为,主从复制、具有自动故障转移功能的主从复制、利用共享存储、OS或虚拟化软件实现主备架构、MySQL Group Replication 群组复制,以及MySQL NDB Cluster。 MySQL Replication:允许数据从一台实例上复制到一台或多台其它的实例上。 MySQL Group Replication:群组复制提供更好的冗余性、自动恢复以及写入扩展。 MySQL InnoDB Cluster:基于群组复制,提供了易于管理的API、应用故障转移和路由、易于配置,提供比群组复制更高级别的可用性。 MySQL NDB Cluster:容易与MySQL InnoDB Cluster混淆

App后台开发运维——架构设计

六眼飞鱼酱① 提交于 2020-01-15 00:06:05
QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming 1.设计app架构 1.梳理app业务流程 2.整理业务流程可能遇到的问题 3.根据问题,探讨可执行的解决方案 4. app后台 初步架构 :3中所有技术进行有机融合 api编写: 1.api的作用(功能) 2.api需要输入的参数 3.api返回的数据 2.服务器选择 1.传统的IDC 在传统的IDC,要加cpu或内存,流程如下:   1.和客户经理商商谈所需硬件的价格   2.汇款过去,等IDC的财务确认   3.确认后,等待IDC安排工作人员升级硬件   这个流程走一次,最少也要1至2天。延迟了1至2天升级硬件,怎么保证可以快速应付爆发的业务 2.云服务器 升级硬件: 1.在用户后台选择需要的硬件配置   2.通过网络支付   3.重启服务器,升级就完成了。如果只是升级带宽,甚至不用重启。   整个过程合起来不用5分钟,简单,快捷,方便。   而且,现在的云服务器提供商,除了服务器外,还提供下面的服务:   负载均衡   云数据库   云内存存储   这些服务在app上线初期,在一台服务器上自己搭建就行了,   但随着app的发展,这些服务都需要部署在不同的服务器。      规模的增大,也要面对高可用,高并发,监控报警等问题。   这些问题如果都要后端人员处理