首页 > 编程知识 正文

mysql主从配置详解,ddl主从延迟

时间:2023-05-05 13:36:12 阅读:33061 作者:1678

# #1.为什么需要复制MySQL主从机

1 .数据热备盘在复杂的业务场景中,一个sql可能会导致锁定表,从而影响正常业务运营。 在复杂的业务场景中,可以复制mysql主从机、写入主库和从库中读取主库。 这样,即使主库中发生了锁定表的场景,从库中的读取也能确保其正常工作。

架构扩展。 如果业务访问增加,I/o访问频率过高,无法满足单个设备的需求,则可以通过创建多库存储降低单个磁盘I/o访问频率来提高单个I/o的性能

2 .主从复制是指将数据从mysql主节点复制到一个或多个从节点。 缺省情况下,mysql是异步复制方法,从节点可以复制主节点中的所有数据,也可以复制指定的库或表。

3 .主从复制原理主库打开jmdqqlog,将数据和表结构的更改记录在二进制文件jmdqlog中

slave将检测master的二进制文件是否在固定的时间间隔内发生了更改,如果发生了更改,则打开io Thread并请求master的jmdqqlog

master还为每个io thread打开dump Thread,传输二进制文件(jmdqqlog ),并将其存储在slave的中继日志中。

slave启动sql Thread,从中继日志中读取二进制数据并在本地播放,以确保slave和master数据匹配。 最后,slave的io Thread和sql Thread进入休眠状态,等待再次唤醒。

也就是说, 1. master的dump Thread根据slave的请求,用events将本地的jmdqqlog发送到IO Thread 2. slave IO Thread,接收jmdqqlog events并中继日志(relled qlog 3. slave sql Thread获取并重新发送中继日志的内容,并将应用的记录记录在relay-log.info中。 默认情况下,应用的relay会自动清理

注意: 1. master必须在jmdqq log中记录操作语句,并将slave节点的时间与允许远程访问的权限.2. master同步

4. mysql主从复制的具体操作步骤备有两台mysql,可以在同一台机上,也可以在不同的机上。

打开主节点的jmdqqlog,并将以下内容添加到/etc/my.cnf文件的mysqld下

打开BinLog日志

log-jmdqq=mysql-jmdqq

#服务器的唯一id,默认值为1,通常位于ip的最后一段

服务器- id=13修改从节点的/etc/my.cnf文件

打开BinLog日志。 您可以从节点打开或不打开jmdqqlog日志。 这里是开放的。

log-jmdqq=mysql-jmdqq

#服务器的唯一id,默认值为1,通常位于ip的最后一段

重新启动服务器- id=14 master和slave

登录到主节点并运行show master status命令以显示jmdqqlog日志文件和偏移。

登录并使用change master to语句从库中连接到master。

CHANGE MASTER TO MASTER_HOST='ip或域名',MASTER_USER='用户名',MASTER_PASSWORD='密码',MASTER_PORT=

开始Slave是show slave status G; 得到以下结果是启动成功

5. Mysql主从同步延迟分析Mysql主从同步均为单线程。 master的所有DDL和DML都将写入jmdqqlog。 由于jmdqqlog是顺序读写,所以效率很高。 slave的sql Thread在slave中重新发送主DDL和所有DML操作事件。 DDL和DML的IO操作是随机的,不是顺序的,因此成本相当高。 另一方面,由于sql Thread也是单线程的,因此在master并发性较高的情况下,生成的DML数量将超过SlaveSQL

解决方案: 1.业务持久化层的实现采用分库架构,可以平行扩展mysql服务器,分散压力2 .单个主库、多个主库、主写3 .服务的输入

4 .将不同业务的mysql放在不同的物理机上,分散压力。 5 .使用更好的硬件设备。 6 .在6. mysql5.7之后,使用MTS并发复制技术永久解决复制延迟问题

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