1.为什么需要搭建MySQL主从数据库集群?
可以防止主数据库服务器故障后,避免数据丢失,以及实现HA。
可以降低磁盘I/O访问的负载,提高机器的I/O性能。
主从集群读写分离,使数据库能支持更大的并发。
......
2.MySQL数据库主从复制原理
1. 首先主库对所有客户端DDL和DML操作产生的日志写进binlog。
2. 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog。
3. 从库的I/O Thread去请求主库的binlog,并将得到的binlog日志写到relay log文件中;
4. 从库的SQL Thread会读取relay log文件中的日志解析成具体操作,将主库的DDL和DML操作事件重放。
5.在这一系列的操作结束后,主从复制就完成了,这样从库跟主库的数据达成了一致性。
3.主从复制存在的问题
1.当主节点宕机后,主备切换有延时,可能会造成数据丢失更新。
2.主节点是顺序写binlog文件,而从库需要重放主节点的DDL、DML操作,这是随机的,这可能会造成数据复制延迟等问题。
4.通过SHOW SLAVE STATUS G ,查看从库状态
5.针对主从复制存在的问题-解决方案
1.保证数据的安全性配置sync_binlog,innodb_flush_log_at_trx_commit参数,把事务写到磁盘中。
2.MySQL5.5版本后支持半同步复制,直到从库把日志写到relay log后,才返回状态给客户端。
3.优化网络环境、合理配置MySQL集群、使用并行复制来降低从库的复制延迟问题。
关于MySQL主从复制的问题,欢迎评论区留言探讨。