数据库的主从复制,读写分离

       数据库作为一个数据公司的命脉,是要保证绝对不能丢失的,那么我们应该如何去做数据的备份呢?数据的库的备份有两种方式,分别为数据库的冷备份和数据库的热备份。

      数据库的冷备份:定时将数据库中的文件进行转储进行数据备份。也就是使用数据库工具进行连接导入导出。但是这种方式的备份有着很大缺点,比如,数据备份不是实时备份的,所以不能很完美的防止数据库数据的丢失。再者数据库冷备份需呀人工完成,效率太低,而且数据库备份如果数据量很庞大的话,数据量大,极易出错。一般讲数据库的冷备份作为防备数据丢失的最后手段。

      数据库的热备份Mysql数据库提供了数据实时备份功能,但是前台必须配置数据库的主从结构。其实现原理如下:

数据库的主从复制,读写分离

      1.当数据库(主库)数据发生变化时,会将将改变的数据写入二进制文件当中

      2.从库中会启动io线程实时监控主库的二进制问价是否发生改变,如果主库的二进制改变了,则将改变的数据进行读取,读取之后将二进制内容写入中继日志中。

       3.紧接着从库会启动sql线程,会读取中继日志中的小溪,将它写入数据库中,最终实现数据同步

       注:一台主库可以搭配多台从库,一台从库也可以当做主库给它配置从库。这些操作可以进一步保证数据的安全。

数据库的读写分离:当所有的tomcat服务器将数据请求都发往mysql数据库时,如果面临持续的高并发,则mysql可能会面临宕机的危险,紧接着就是雪崩效应了。那么我们应该如何类减小宕机的风险呢:我们可以主机丛机的性质来进行读写分离,数据的丛机是不能进行写操作的,因此我们可以将所有的写操作交给主库,读操作按需求分配给所有丛机和主机,在此过程中我们应当如何对用户的操作进行读写分离分配呢?笔者认为这个原理和服务器抗击高并发的原理是差不多的,当请求发进来了,由一个中间的代理对象根据分配的策略进行分配,以达到抗击高并发的效果。

数据库的主从复制,读写分离