暂无个人介绍
这个情况有多种可能,有可能是因为需要重建索引,所以花的时间比较久,在 4.0 以后也有可能是因为要加载大量的 oplog 导致重启时间比较久,这种情况建议还是通过工单反馈阿里云服务同学,会有后端服务同学尽快处理。
mongodb 本身是支持多线程并发执行请求的,而且使用 WiredTiger 引擎支持文档级粒度的锁,你说的那个报错感觉更像是业务层的报错,具体你可以发下日志看下。
有具体的例子可以看下吗,这个通常不会发生,看下是不是 sort key 写的有问题,或者没有配置正确的 collation(本地方字符集)。
你说的这个 heros 下的 lock 值得是数据库或者 Collection 的加锁情况吗,这个你可以用 mongo shell 执行一下 db.currentOp()命令来看下当前正在执行的命令,以及加锁的情况。
导数据的场景下通常会对数据库产生比较大的压力,不是一个正常的业务压力,你可以看下是不是 WiredTiger 的 Cache 配置的太大,导致机器 OOM 了,也可以在导数据时稍微控制一下导入数据的速度。
给你个例子,
sharding:
autoSplit: true
chunkSize: 64
configDB: xxmgset-197026888/111.81.164.123:9666
建议还是直接使用 MongoDB 官方发布的二进制包,具体看这个链接,讲的清晰明了:https://docs.mongodb.com/manual/installation/
欠费后实例会被锁定,隔离期不会扣费,但是欠费太久,比如一个月,实例会被自动销毁。
MongoDB 有一系列的多语言的官方 Driver支持,其中就包括 python,看这里:https://docs.mongodb.com/ecosystem/drivers/ 。
mongodb 不仅支持事务,而且有很强大的事务能力支持,比如 4.0 及之前的多文档事务,4.2 的分布式事务支持(阿里云 MongoDB 独家),具体给个文档你看下:https://docs.mongodb.com/manual/core/transactions/ 。对应的 java api 也会有支持。
Redis 的有开源的多线程版本,而且数量不少,这里分享一个 KeyDB:https://github.com/JohnSully/KeyDB 。
4.x 版本里面的混合持久化,也只是说在 aof rewrite 的时候生成 rdb format 的 aof,然后在 rdb preamble 后面继续追加 aof 格式 命令,所以归根结底,rdb 还是 rdb,aof 还是 aof,二者没有关联,用混合格式的主要原因是 rdb 支持压缩,空间更小,且生成速度比 aof 格式快。
这个需要逐步分析排查,首先你可以看下 Redis 进程的 CPU 是不是跑满的,如果是那问题出在 Redis 上面,可以通过一些命令,比如 monitor 看下是什么在消耗 cpu,还可以看下 slow log,如果不是,需要看下主机的情况,比如主机是不是网卡跑满了,redis 是不是开启了 aof,主机 io load 太高,等等原因,逐步去缩小问题范围。
Redis 的 GEO 功能,相比于 MongoDB 还是比较弱的,如果是简单的使用场景,比如就计算一下附近的人这种类似需求,而且对 qps 要求高,且数据量不大,可以考虑先使用 Redis。
redis 中的 hash 底层是无序存储的,中间会有 rehash 或者新的数据插入,所以 hkeys 和 hvals 如果是各自单独执行,返回结果大概率不是一一对应,如果要一一对应,请用 hgetall。
这个需要改变访问入口,完全无损的迁移基本上是做不到的,比较好的办法是使用 redis-shake 进行持续的数据同步,在业务低峰期对单机实例进行停写,然后业务切换访问入口到新的集群实例。
这个使用阿里云团队开源的 Redis-shake 可以做到,从云下迁移到云上,或者从自建迁移到阿里云集群,redis-shake 的使用可以看下 github:https://github.com/alibaba/RedisShake
首先使用 redis-cli --bigkeys 分析一下是不是有大 key,然后也可以用 info memory 命令看下是不是碎片率太高了,如果是这样可以考虑在业务低峰期,做个主备切换,滚动重启一下 Redis。
原生的复制协议只能按实例(进程)维度去复制,这个直接 slaveof 是不行的,但是现在有一些开源的工具,比如 redis-port 可以按 db 去 sync,具体可以去 github 上看下。
这个功能Redis 一直是没有的,本质原因是这个和 keys 命令一样,需要遍历整个数据空间,开销非常大,如果真想按 pattern 删除 key,可以考虑写个脚本按 pattern scan,然后删除 key。