一.从主架构
1.从主复制原理
从库生成两个线程,一个I/O线程,一个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
2.主从架构特点
主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,
因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建。
(1).读写分离并实现负载均衡
主从架构如何实现读写分离?需要通过mycat读写分离器来设置,当从客户端发出写权限的SQL语句(如:delete等)时,mycat会将其转发给主数据库;
当从客户端发出读权限的SQL语句(如:select等)时,mycat会将其转发给从数据库。这样就实现了主从库的读写分离,避免主数据库的负载过大。
同时当一主多从架构,为了实现从数据库的负载均衡,可以在mycat上再添上LVS,将读权限的语句请求根据算法转发到从数据库上。
(2).如何预防单点故障(主数据库宕机了。。)
方案一:MHA监控
工作原理:
MHA通过部署在主从集群上的node节点,时刻监控集群上的master节点,当master宕机了,那么MHA会立刻从集群中选出一个从节点来
顶替主节点。从而实现集群的高可用即预防单点故障。
方案二:主主架构
即互为主备,互相监控对方的二进制日志文件进行同步。不过这种方式要注意:可能会出现数据不一致情况。
因为同步是异步同步,可能没有及时同步数据,导致数据不一致。