相关数据库主从和集群方法

相关数据库主从和集群方法
memcached可以使用magent进行主从同步和分片存储(集群功能)
http://blog.sina.com.cn/s/blog_80413dd90102vbxa.html
1、如果是set操作的话,还会同时往备份memcached写一份,如第三步中127.0.0.1:11411,如果备份库有多个,也会负载均衡;
2、如果是读操作的话,则先判断哈希算法指定的这个memcached是否正常工作,如果正常,则读取此库的数据,如果不正常,则读取备份库的数据;
3、如果一个主库当机了,读取的key在这台机器上,这时会从备份库读取,如果这台机器从当机中恢复了,即使这个key的数据在备份库中有,也不会读取,而只会从主库当中读出null。

运行magent命令时指定那些是从机那些是主机。


Redis
Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis可以配置为主和从。从时要在配置文件中指定主的IP和密码
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。

主从复制的过程
当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

分片是通过cluster(会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中)

主节点宕机后,从节点会暂时作为主节点来接替主节点的工作,但并不总是能顶替。当出现以下两种情况时,可以认为Redis-Cluster已经宕掉了:
1、如果集群中的主节点宕机后,当前master节点没有slave节点,则集群进入宕机状态,也就是集群的slot映射不成功。(有一个主节点不能工作了就不能工作了)
2、如果集群中的master节点超过一半以上宕机,无论是否有slave节点,集群都会处于宕机状态。


sentinel一个用于在Redis进行主机宕机后使从机成为主机的

http://blog.csdn.net/sk199048/article/details/50725369
http://www.cnblogs.com/liuling/p/2014-4-19-02.html
http://blog.csdn.net/xu470438000/article/details/42971091
(Redis集群_3.redis主从自动切换Sentinel) http://www.2cto.com/database/201502/377061.html
(redis 3.0的集群部署) http://blog.csdn.net/myrainblues/article/details/25881535/

MySQL
Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。
要实现 MySQL 的 Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave 从 Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。

MySQL的Replication原理非常简单,总结一下:
每个从仅可以设置一个主。
主在执行sql之后,记录二进制log文件(bin-log)。
从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。

MysqlCluster可以进行集群,Mysqlcluster数据节点组内主从同步采用的是同步复制,来保证组内节点数据的一致性。


() http://blog.csdn.net/yangzhenzhen/article/details/8512292
(MySQL集群) http://blog.csdn.net/chenxingzhen001/article/details/7708663

(二阶段提交协议)最后的提交阶段将是耗时极短,耗时极短意味着操作失败的可能性也就降低。



mongoDb
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。(异步的复制过程)
mongoDb可以配置为主和从,从时要配置主机的IP

复制集群ReplicateSet模式(引入一个仲裁节点,仲裁节点不存储数据。从而达到主宕机后从会变成主的能力)

Replica Set保证高可用,数据分片(Shards)扩展容量

(征服 Mongodb 之 主从复制&集群复制) http://snowolf.iteye.com/blog/1974747
( Mongodb集群搭建的三种方式) http://blog.csdn.net/luonanqin/article/details/8497860
(高可用集群的解决方案) http://www.open-open.com/lib/view/open1476329503902.html


如果要实现高可用性可以用keepalived软件进行。(防止单点故障)

如果要数的安全性必需要一份数据写到多个数据库节点成功后才能认为数据有效,但这就影响了性能和用户体验。

数据节点组内主从同步采用的是同步复制可以保证数据的安全性

数据安全可以从备份,和log放在另一个服务器来确保数据的安全,因为数据写到数据库是先写好日志的。


猜你喜欢

转载自huangyongxing310.iteye.com/blog/2359942