
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式数据库是程序员在开发软件的时候会经常用到的一种数据库架构方式,而今天我们就一起来了解一下,分布式数据库架构都有哪些实现方法。
MySQL通过数据库的复制,分片方法实现数据的分布式存储.一般分分为一主和多主两种模式.
MySQL一主多从复制
主从复制过程:
关键字: MySQLReplication
备库执行changemaster命令,配置主库使用的ip,端口,用户,密码等参数,连接主库,配置binlog路径及偏移量.
备库执行startslave命令,启动io_thread和sql_thread两个线程
主库校验通过备考的用户密码后,按照配备库指定的路径下的binlog发送给备库.
备库拿到文件后将binlog写入到本地中转日志relaylog中.
sql_thread读取relay_log,解析命令并执行.
binlog格式:
statement 记录语句原句, 总从环境不一致是如可能执行结果不同,如进行delete主从使用的索引可能不一致.
row: 记录真是操作行的id,避免上述情况
mixed: 属于前两种情况的折中, 对于可能引起主从不一致的使用row,否则使用statement
相关问题:
问题:
主备延迟:原因主要有机器性能差,备库查询,报表较多导致压力大,大事务的执行(归档类数据,大表)
解决方案:
可靠性优先:
通过SBMseconds_behind_master,记录当前备库延迟了多少秒,可靠性备份步骤
判断备库的SBM是否小于某一值(如5秒)进行主库操作,否则等待;
主库改为只读状态,把readonly设置为true;
等待备库的SBM值为0,备库状态改为可读,readonly设置为false;
业务切换到备库
可用性优先:
不等待主备机同步,直接完成切换,这时候可能会出现数据不一致.如果binlog为mixed模式,
主库收到一条数据处理请求1,同时改为只读,把readonly设置为true.
备库切换后收到数据处理请求2,先处理请求2,同时从relaylog里读取处理了请求1;
备库通过binlog将i请求2同步给主库,主库执行请求2
主库和备库请求执行顺序相反.
如果binlog为row模式,由于同步的时候记录rows信息所以,当主库和备库执行顺序相反时,主备同步的应用线程会报错duplicatekeyerror错误从而防止.主备不同步.
可靠性方案的依赖seconds_behind_master,可用性方案可能导致部分数据不一致
MySQL主主复制
关键字: MySQLmastermasterReplication
CircularReplication循环复制,两个服务器之间进行异步binlog复制,这种情况下,一般是master节点提供读写,stand-bymaster提供读操作,master出现故障切换到stanby-master库.
master-standby模式中mater节点也会有自己的slave,standby主库节点间采用半同步复制,数据丢失的风险降到低.
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。