《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
写个脚本,在业务量最低的时候批量更新。我更新的时候都是凌晨4点钟,没遇到啥问题。我们分了1024张表,每张表1000-5000万的数据
一张 400 W的表,加个字段,就延迟 4000s?
个人认为
当数据量达到5000w以上,才需要考虑分表
5000w以下,根据业务建立好索引,速度还是很快的
卡在哪里了?这么严重 4000s ?这也叫主从“同步”?
400W 数据量很小,直接在主表加就自动同步了
用pt工具吧,可以控制速率和延迟时间
这么大量 是啥类型的数据呢? 不是日志啥的吧
背景分析
在阿里云的主从数据库架构中,当你添加新字段时,从库延迟4000秒会严重影响线上服务。这种延迟可能是由以下几个原因导致的:
解决方案
为了解决这个问题,可以采取以下几种方法:
1. 分批次操作
将大规模的字段添加操作分批次进行,避免一次性操作带来的性能瓶颈。可以分批次处理每张表,减少每次操作的数据量。
2. 在线DDL操作
使用在线DDL工具如Percona Toolkit中的pt-online-schema-change或阿里云的在线DDL工具,能够在不中断服务的情况下进行DDL操作。这些工具通过创建一个临时表和触发器来同步数据变更,最终交换表名的方式来完成DDL操作。
3. 增加从库
临时增加一个新的从库,从主库上执行DDL操作后,通过数据快照将数据同步到新从库,然后将新的从库切换为从库,减少对现有从库的影响。
4. 调优数据库配置
调整数据库的配置参数,增加复制的并行度和缓冲区大小,以加速从库的复制速度。例如:
slave_parallel_workers
:设置并行复制工作线程数。slave_parallel_type
:设置并行复制的类型。具体操作步骤
分批次操作
table1
添加字段new_column
,可以将数据按主键ID范围分批次处理。例如:在线DDL操作
增加从库
调优数据库配置
结论
通过分批次操作、使用在线DDL工具、增加从库以及调优数据库配置,可以有效地解决在阿里云主从数据库架构中添加新字段导致的从库延迟问题。这样可以确保数据库在进行大规模DDL操作时,线上服务不会受到严重影响。