相信作为一个服务器端开发者,数据库是“必修的一门课”,今天主要讲讲什么是数据库的主从同步,读写分离。
在*古代*,互联网刚起步的时候,数据库中存储的数据是很小的,一台数据库完全可以搞定一切,随着时间的推移,互联网作为连接一切的中介,世界上任何一个地方的人都可以访问你的网站,并且随着互联网经济的急速扩张,数据量大成为了随之而来的问题。尤其是今天,数据代表着一个公司的价值,有价值的数据代表着这个公司的未来发展战略等。
数据量的急速膨胀带来一个主要矛盾,数据库改怎么进行存储成了最棘手的问题,前辈们想出了主从复制这样一个及其优雅的处理方式。
那么什么是主从复制?
主从复制指的是数据库以主数据库和从数据库 的方式进行架构。通过“复制”使从数据库和主数据库完全一样。主数据中的数据当然是我们通过业务来增加,那么从数据库中的数据从何而来呢?在数据库中,每执行一条sql,都会产生对应的bin-log二进制文件。从数据库赋值每一条sql。然后从数据库中设置relay-log日志文件执行这些sql,这样从数据库中会有和主数据库中同样的数据。
那么主从复制有什么样的有点和好处呢?首先从数据库可以作为主数据库的热备份,当主数据库服务器出现故障时,可以切换到从数据库进行替代,防止大面积出现数据问题。其次,可以缓数据I/O压力,只有主数据库,磁盘的I/O压力是随之而来的,增加从库不仅可以降低磁盘压力,而且可以增加单机的效率,一举两得。第三就是我们接下来需要讲的读写分离的好处,使用主从数据库后,后台数据可以直接拉取从数据库中的数据。二主数据库专心前台的业务和写操作等。
那么什么是读写分离?
读写分离是依赖于主从数据库结构而言,即写在主数据库,读在从数据库。主数据库产生写操作及其数据后从数据库中复制主数据库中数据,当进行读操作时拉取数据进行在从数据库上,实现读写分离。
最后简单说一下主从复制的几种方式:
1.同步复制:主数据库中的数据变化必须等从数据库群全部同步完成后才能返回。
2.异步复制:类似于ajax,主数据库完成自己操作之后不再关心从数据库的操作,至于从数据库是否执行了复制的sql不再关心。
3.半同步方式:主数据库中的数据变化后从数据库群其中一台从数据库完成复制之后就返回。