关于数据支撑环境进行了合适的改造,详细内容如下:
数据支撑环境与旧环境是不同的,经过了合理改造。
1. 添加Redis集群的切片机制
2. MongoDB的仲裁机制优化
3. MariaDB的选择,摒弃了Mysql
(1) Redis切片机制,旧环境没有切片
没有进行切片的redis集群有很大的缺陷,首先失去了负载均衡功能,其次重启后集群效果有可能不保。所以未切片的redis集群,就完全丧失了分布式的意义。因此城轨数据支撑环境进行了切片化改造,每个切片都包含一主一从。
切片命令如下:
./redis-trib.rb reshard 172.16.16.18:7000
./redis-trib.rb create --replicas 1 master.hadoop:7000 master.hadoop:7001 master.hadoop:7002 slave1.hadoop:7003 slave1.hadoop:7004 slave1.hadoop:7005
部署完成后,check得到如下切片集群。
(2)MongoDB的仲裁机制优化,添加旧环境没有的仲裁机制。
数据支撑环境的集群,必须有三部分构成:主、从、仲裁。
设计院环境缺乏仲裁机制,主一旦挂掉,从不能升级为主,导致服务挂掉。
仲裁的作用是:一旦主机挂掉,进行投票,从机自动升级为主机,这样系统服务就不会挂掉,保证了高可用性。
经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据的仲裁节点
config = {"_id" : "tonghao", "members" : [ {"_id" : 0, "host" : "10.2.42.101:27017", priority:2},{"_id" : 1, "host" : "10.2.40.104:27017", priority:1},{"_id" : 2, "host":"10.2.40.104:27016", arbiterOnly:true}]}
priority:2,数字越大级别越高,级别高的作为主节点。
主从复制原理:
假如副本集的数据主从同步不一致,则需要把local db下的文件全复制。 也就是要迁移oplog时间戳
当Mongo DB 被设置成主库时(这一点很重要),在 local db 下有个 collection 叫oplog.$main ,这个就是Mongo 的 oplog。
当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳。 2:检查Primary节点local库oplog.rs集合,找出大于此时间戳的记录。 3:将找到的记录插入到自己的oplog.rs集合中,并执行这些操作。
Secondary节点同步到哪了: 1:Primary节点插入一条数据 2:同时,会把该数据写入到Primary的oplog中,并且记录一个时间戳 3:db.runCommand({getlasterror:1,w:2})在Primary节点被调用时,Primary就完成了写入操作,等待其他非仲裁节点来同步数据 4:Secondary节点查询Primary的oplog并且拉去oplog 5:Secondary根据时间戳应用oplog 6:Secondary请求大于本身oplog时间戳的oplog 7:Primary更新时间戳 (3)关于MariaDB与Mysql的选择问题。 1.首先MariaDB的出现背景。 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是在遵循GPL协议的条件下完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,而MariaDB和原来开源Mysql是同一团队研发。 2.MariaDB的优点。 MariaDB有一个缺点就是开源,同时它的优点也是开源。这样对MariaDB进行支撑的团队人员将更加灵活和高效。事实也证明,闭源mysql的版本更新进度是紧跟MariaDB的。 MariaDB不仅仅是Mysql的一个替代品,它的主要目的是创新和提高Mysql的技术。 MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。 MariaDB 是一个采用Aria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。 最近Oracle进一步闭源的举措更是让人难以安心,众多互联网公司纷纷开始寻求MySQL的替代方案。Apple,Google、Facebook、Twitter、Wiki也大量使用MariaDB,在美国已经掀起了热潮。 此外Widenius团队对MariaDB进行了更充分的测试,更少的的警告语缺陷、真正的开源。 所以基于以上种种原因,一体化配置工具将采用MariaDB的设计方案。