分片

mongodb备份与恢复(下)

江枫思渺然 提交于 2020-04-07 02:39:24
一. 适用于mongodb任何架构(standalon、replic set、sharding)备份脚本 需要安装perl的MongoDB模块,安装方法参见:使用cpanm安装perl相关模块 http://www.ttlsa.com/html/2030.html 。代码这东西,仁者见仁智者见智,一分价钱一分货,所以对于优秀的程序员不要抠门。对语言的熟练度高,编程经验丰富的程序员,写出来的代码,两个字:漂亮! 下面的脚本只需更改变量$mongodb相关参数即可,如有更好的更便捷的方法请赐教。 #!/bin/perl ################################# ### author: www.ttlsa.com ### ### QQ群: 39514058 ### ### E-mail: service@ttlsa.com ### ################################# use strict; use File::Path; use POSIX; use MongoDB; use Data::Dumper; my $mongodump='/usr/local/mongodb/bin/mongodump'; my $mongodb={ 'admin_1'=>{ #定义组别 'email'=>'39514058@qq.com',

搭建高可用mongodb集群(四)—— 分片

烂漫一生 提交于 2019-12-04 02:06:28
按照上一节中《搭建高可用mongodb集群(三)—— 深入副本集》搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的。而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来解决这个问题。 传统数据库怎么做海量数据读写?其实一句话概括:分而治之。上图看看就清楚了,如下 taobao岳旭强在infoq中提到的 架构图: 上图中有个TDDL,是taobao的一个数据访问层组件,他主要的作用是SQL解析、路由处理。根据应用的请求的功能解析当前访问的sql判断是在哪个业务数据库、哪个表访问查询并返回数据结果。具体如图: 说了这么多传统数据库的架构,那Nosql怎么去做到了这些呢?mysql要做到自动扩展需要加一个数据访问层用程序去扩展,数据库的增加、删除、备份还需要程序去控制。一但数据库的节点一多,要维护起来也是非常头疼的。不过mongodb所有的这一切通过他自己的内部机制就可以搞定!顿时石化了,这么牛X!还是上图看看mongodb通过哪些机制实现路由、分片: 从图中可以看到有四个组件:mongos、config server、shard、replica

MongoDB 最佳实践及2.8版本特性与功能

跟風遠走 提交于 2019-11-30 21:10:45
主要流程 MongoDB 2.8 版本特性与功能 MongoDB 在赶集网的应用 MongoDB 最佳实践 MongoDB 2.8 版本特性与功能 TJ MongoDB 开发者 TJ 强调 MongoDB 没有实际意义上的锁,只有 Latch,门栓。 2.6 库级锁 Latch,没有 Lock,写内存的一刹那锁住内存 2.8 无锁的 MVCC 并发,WIREDTIGER,snapshot isolation 2.6 MMAP 内存映射,库级锁 2.8 MMAP 集合级锁 2.8 WIREDTIGER 无锁 WIREDTIGER 存储模式 LSM(HBASE, Cassandra) - Log Structured Merge B-TREE LSM 数据写内存,异步写硬盘 读性能有问题,性能一般 高并发写应用场景 压缩算法 SNAPPY - 默认压缩方式,速度快,压缩率OK,32k cache 压缩 ZLIB - 压缩率高,占用 CPU 高,随时压缩,凑够 32k 落盘 更大的复制集群数: 12 - 50 2.6 Logging 控制 2.8 Logging 可控制 更新的工具集 Go 语言重写 多线程 支持输入校验 增强的导入导出性能 运维 OpsManager 监控,备份,集群管理 MongoDB 最佳实践 京东 DBA 复制集 分片架构 监控和备份 MS 不支持读写分离,不支持