什么是mysql的主从复制(同步)?
MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表(我们在进行同步的时候,没必要把所有的数据库内容都同步,我们只要把我们想要的东西同步就可以了)。
mysql为什么需要主从同步?
- 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。(即:读写分离)
- 做数据的热备;
- 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘1/O访问的频率,提高单个机器的I/O性能。
- 在业务比较简单,数据比较少的情况下,你用一台mysql可以保证服务/数据响应。当业务量比较大,并发量比较大的时候,需要多台mysql。在进行多台mysql存储时,每个数据库里面,必须保证每个都被web服务器访问到。同时访问给一个数据库对于用户而言,应该是透明的,也就是说,你的数据必须保持一致。因此在这种应用场景里面,我们必须要保证每一台数据库里面的数据必须是一致的、同步的。这个时候需要主从同步。
- 做数据的热备怎么理解,其实也很简单,除了主从外,还有一种叫什么叫主备。什么是主备呢?也很好理解,我现在有一台数据库,刚开始一直用着非常没问题。假如有一天你们的运营部也好,还是营销部也好,它发布了一个活动,导致你们当前这个产品卖爆,同时导致你当前网站也好,这跟系统也好,你的访问量激增,原来可能访问 10 个访问量,现在是 10000 个访问量,都去请求一台 MySQL 的话,很容易把当前这台 MySQL 给压垮了,你数据库崩了,你项目不能访问了,同时你不可能保证你当前的业务暂停。因此在这种情况下怎么办?我们可以给他做一个主备。备份什么意思?一般情况下,这台备机是不参与整个业务系统的,但是当你主机这台或者说宕机了,这时候立马从主机切换到备机里面去,保证我能够对它正常提供业务访问的一个功能。等到把主机修复好了之后,可以再切换到主机,也可以接着用我们的备机。这个时候当备机提供或者说当备机参与整个业务需求的时候,备机变成了主机,也就保证我们的业务系统能够正常的被外部访问,所以这是主备存在的一个意义。
- 架构的扩展:业务量越来越大,IO 法访问频率过高,单机无法满足。此时需要做多库的存储,降低访问磁盘 IO 磁盘一个频率,提高单机 IO 的性能。怎么理解,单台数据库它肯定是有具体的一个瓶颈的,比如我们经常说一句话,如果你现在用数据库 MySQL 来存储你的数据,当一个表里面的数据规模超过千万级别的时候,你就必须要做分库分表操作了。假如说表里面从一到一千万,这个时候你在进行数据检索的时候,效率非常低,把当前这个数据库拆分成五台数据库。第一台数据库放的数据从第一条到第两百万条,这样一次存储在这五台数据库中,保证你的数据均匀地散列在不同服务器里面。这个时候当你在查询请求的时候,是不是查询某个范围数据的时候,我去具体的某台数据库里面读取就可以了,而不会把所有的请求都压到一台上面,保证我们能对外持续提。