如何解决亿级用户的分布式数据库数据存储问题

  介绍

这篇文章给大家介绍如何解决亿级用户的分布式数据库数据存储问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>一、MySQL复制

<人力资源/>

<强> 1。MySQL的主从复制


MySQL的主从复制,就是将MySQL主数据库中的数据复制到从数据库中去。

如何解决亿级用户的分布式数据库数据存储问题

主要目的是实现数据库读写分离,写操作访问主数据库,读操作访问从数据库,从而使数据库具有更强大的访问负载能力,支撑更多的用户访问。,,,

它的主要的复制原理是:当应用程序客户端发送一条更新命令到数据库的时候,数据库会把这条更新命令同步记录到Binlog中,然后由另外一个线程从Binlog中读取这条日志,然后通过远程通讯的方式将它复制到从服务器上面去,从服务器获得这条更新日志后,将其加入到自己的中继日志中,然后由另外一个SQL执行线程从继电器日志中读取这条新的日志,并把它在本地的数据库中重新执行一遍。

这样当客户端应用程序执行一个更新命令的时候,这个命令会在主数据库和从数据库上同步执行,从而实现了主数据库向从数据库的复制,让从数据库和主数据库保持一样的数据。

<强> 2。MySQL的一主多从复制

MySQL的主从复制是一种数据同步机制,除了可以将一个主数据库中的数据同步复制到一个从数据库上,还可以将一个主数据库上的数据同步复制到多个从数据库上,也就是所谓的MySQL的一主多从复制。

多个从数据库关联到主数据库后,将主数据库上的Binlog日志同步地复制到了多个从数据库上。通过执行日志,让每个从数据库的数据都和主数据库上的数据保持了一致。这里面的数据更新操作表示的是所有数据库的更新操作,除了不包括选择之类的查询读操作,其他的插入、删除、更新这样的DML写操作,以及创建表,放下,ALTER TABLE等DDL操作也都可以同步复制到从数据库上去。

<强> 3。一主多从复制的优点

一主多从复制有四大优点,分别是分摊负载,专机专用,便于冷备和高可用。   

<>强。分摊负载

将只读操作分布在多个从数据库上,从而将负载分摊到多台服务器上。

<强> b。专机专用

可以针对不同类型的查询,使用不同的从服务器。

<强> c。便于进行冷备

即使数据库进行了一主多从的复制,在一些极端的情况下。也可能会导致整个数据中心的数据服务器都丢失,所以通常说来很多公司会对数据做冷备,但是进行冷备的时候有一个困难点在于,数据库如果正在进行写操作,冷备的数据就可能不完整,数据文件可能处于损坏状态。使用一主多从的复制就就可以实现零停机时间的备份。只需要关闭数据的数据复制进程,文件就处于关闭状态了,然后进行数据文件拷贝,拷贝完成后再重新打开数据复制就可以了。

<强> d。高可用

如果一台服务器宕机了,只要不发请求给这台服务器就不会出问题。当这台服务器恢复的时候,重新发请求到这台服务器,所以,在一主多从的情况下,某一台从服务器宕机不可用,对整个系统的影响是非常小的。

<强> 4。MySQL的主主复制

但是一主多从只能够实现从服务器上的这些优点,当主数据库宕机不可用的时候,数据依然是不能够写入的,因为数据不能够写入到从服务器上面去,从服务器是只读的。

为了解决主服务器的可用性问题,我们可以使用MySQL的主主复制方案。所谓的主主复制方案是指两台服务器都当作主服务器,任何一台服务器上收到的写操作都会复制到另一台服务器上,,,

如上主主复制原理图,当客户端程序对主服务器一进行数据更新操作的时候,主服务器一个会把更新操作写入到Binlog日志中。然后Binlog会将数据日志同步到主服务器B,写入到主服务器的中继日志中,然后执中继日志,获得日志中继电器的更新日志,执行SQL操作写入到数据库服务器B的本地数据库中。B服务器上的更新也同样通过Binlog复制到了服务器的继电器日志中,然后通过继电器日志将数据更新到服务器中。

通过这种方式,服务器一个或者B任何一台服务器收到了数据的写的操作都会同步更新到另一台服务器,实现了数据库主主复制。主主复制可以提高系统的写可用,实现写操作的高可用。

如何解决亿级用户的分布式数据库数据存储问题