首页 > 编程知识 正文

主从复制和读写分离,什么是深拷贝和浅拷贝

时间:2023-05-04 22:47:59 阅读:48975 作者:553

【原创】聪明的饼干

作为java程序员,在求职面试中经常会有这样的问题。

你读写分离过MySQL吗? 如何实现MySQL的读写分离? MySQL主从复制的原理是什么? 如何解决MySQL主从同步延迟问题? 1、MySQL读写分离说到读写分离,首先要理解什么是主从复制。

主从复制用于创建与主数据库(称为从数据库)完全相同的数据库环境。 主数据库一般是准实时业务数据库。 一台服务器用作主服务器,另一台服务器用作从属服务器。

1.1此时,主服务器将更新信息写入特定的二进制文件,并保持文件索引以跟踪日志组。 此日志将被记录并发送到来自服务器的更新。

1 .当两台从属服务器连接到主服务器时,从属服务器通知主服务器从服务器日志文件中读取上次成功更新的位置。 然后,服务将接收并锁定从哪个时间点发生的更新,并等待主服务通知新的更新。

读写隔离简单来说,是基于主从复制体系结构。 一个主库有多个从库,主库主要负责写入。 写入完成后,主库会自动将数据同步到从库。

2、MySQL主从复制原理

主库将更改写入binlog日志,从库连接到主库,然后从库中有IO线程,将主库的binlog日志复制到自己的本地,并创建relay中继日志(relay log ) 然后,SQL线程从中继日志读取binlog,并执行binlog日志的内容。 也就是说,在自己的本地再次执行SQL语句,使从服务器和主服务器的数据一致。

主从配置围绕该原理配置,http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /。

需要注意的是,从库中同步主库数据的过程是串行化的。 也就是说,在主库中并行执行的操作是从库中串行执行的。

由于将日志从库复制到主库并串行运行SQL的特点,在高并发方案中,来自库的数据存在延迟。

在实际操作中,主库中的数据已经存在,但能否从库中读取可能需要几十毫秒,甚至几百毫秒。

从库会生成两个线程,一个I/O线程,一个SQL线程; I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中; 用于解决主库数据丢失问题; 用于解决来自主库会生成一个log dump线程, 用来给从yttt/O线程传binlog;库的复制延迟问题。 半同步复制,也称为semi-sync复制,在主库写入binlog日志后,强制将数据同步到从库,并将日志从库写入其本地relay log后主库可能在收到至少一个从库的ack后才完成写入。

并行复制是指从库中打开多个线程,并行读取relay log中不同库的日志,并并行存储不同库的日志。 这是库级并行处理。

3、MySQL主从同步延迟问题。 例如,达到了用户的升级条件,主库也成功地更新了用户的状态。 在生产高峰时期,主从复制延迟,但从库高峰时期没有更新。 用户在手机app界面上显示的水平保持不变。

主从故障诊断方法

MySQL具有主从同步的状态信息,可以通过MySQL命令show slave status获取。 除了知道当前主从同步是否正常工作外,另一个重要指标是Seconds_Behind_Master,它根据输出的Seconds_Behind_Master参数的值进行判断。 0、该值为零,表明主从拷贝良好; 正值表示主从延迟正在发生,数字越大表示库延迟越严重。

4、主从延迟解决方案对库进行划分,将一个主库划分为多个主库,(可以从多个主库到一个主库)减少了每个主库的写入并发性。 各个库读写分开,一个主多,从主写开始读,压力分散。 这将使从库的压力高于主库,从而保护主库。MySQL支持的并行复制、多个库的并行复制。 但是,如果同时执行单库写入太高,并行复制就没有意义了。 因为不知道是否有其他解决方案可以升级Slave硬件配置,请与我们联系。

笔者水平有限,文章难免有错误。 请放下权力,指出不恰当的地方。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。