分类 数据库 下的文章

一次 MongoDB 选主失败经历

MongoDB 选主机制较为复杂,需要考虑各种可能性,选举机制可参考>>。这样在某些特定情况下,则可能导致选主失败,从而使得整个集群中无主,也就无法提供写操作,进而影响到服务的可用性。本文便记录了一次在特殊场景下所导致的选主失败经历。

复制集模式 MongoDB 从2.2升级到3.0

到目前最新 Release 版本的 Mongodb 已经是3.2了,对于比2.2更高的版本 2.4、2.6、3.0 来说,无论是支持更多的新特性还是在性能、安全、bug 修复方面也都有着巨大的改进。但也正是因为这些变动就会给升级工作带来困难和风险,比如兼容性问题。而我们必须遵守整个升级过程是数据要绝对安全,线上服务不能受影响的原则,这就需要在前期做好充足的准备工作。整个版本升级过程会逐步推进,从2.2到2.4,从2.4到2.6,php驱动升级,从2.6到3.0,升级3.0引擎为 WiredTiger。

Mysql 锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。Mysql 是一个支持插件式存储引擎的数据库系统,不同的存储引擎的锁机制会有较大区别。MySQL 中锁的种类很多,有常见的表锁行锁,也有新加入的 Metadata Lock 等等。比如,MyISAM 和 MEMORY 存储引擎采用的是表级锁(table-level locking);BDB 存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB 存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

更好地使用 MongoDB 索引

MongoDB 是类似于关系型数据库的非关系型数据库,同样 MongoDB 的索引在概念上和大多数关系型数据库如 MySQL 是一样的。但在一些细节也存有差异,在使用 MongoDB 索引时需要谨慎,否则容易掉坑!本文将在索引方面把容易产生误解、误用的一些地方整理出来,使得我们能更畅快地使用 MongoDB。

细说 Mongodb、Redis、Mysql 数据同步机制

数据库集群具有数据备份、负载均衡等功能。比如 Mongodb 的复制集模式,Redis、Mysql 的主从模式。这些模式均有它们各自的实现方式。有相同之处也有截然不容的处理方式。

分别使用 Memcached、Redis、Mysql 实现分布式锁

我们有时会遇到这么一种情况:某个接口只能同时一个用户或者同一个用户不能同时访问。也就是防并发请求问题。这种场景在实现上可以通过锁的方式,就是在 php 接到请求后执行业务代码前加上锁,执行完成后释放锁。