MySQL 线上日志库迁移实例
说说最近的一个案例吧,线上阿里云RDS上的一个游戏日志库最近出现了一点问题,随着游戏人数的增加,在线日志库的数据量越来越大,最新的日志库都已经到50G大小了,在线变更的时间非常长。
之前之所以没有发现,是因为之前一直没有进行过日志库的变更,但是随着业务的深入,需要增加一些游戏属性,要对之前的日志库进行变更,这样一来,长时间的维护窗口让业务方和DBA都望而却步,日志优化迫在眉睫。
首先看日志库的情况:
1、日志库中数据量大于5000w的大表有5张;
2、这5张表开量前每个月的数据量大概在2000w左右,开量后会更多;
3、有2个表的索引大小已经超过数据文件大小
询问了业务方和运营对这些表的要求,具体如下:
1、保留最近这3个月的数据,其他的数据可以进行流转,避免影响线上业务的性能。
2、3个月之前的数据流转到一个本地库中,可以支持查询即可,查询速度不能过于慢,分钟级别的可以接受。
3、日志库在迁移的过程中,能够容忍几分钟的表数据丢失,对数据的同步实时性要求不是很高
4、线上的日志库需要支持用户活跃度等统计
5、不希望执行分库分表,有很多查询近几个月的SQL操作,表之间存在一定的耦合性,分表之后不利于关联操作
基于上面的分析,结合实际情况,初步设想的方案是:
1、对线上数据库game_log中的表进行rename操作,然后将原来的表重新创建出来,这个过程中不是连续的,可能会丢失几秒钟的数据。具体的操作如下:
#第一步 rename table game_log.table to game_log_bak.table; #第二步,获取表结构,其中重要的是auto_increment的值, #保证后续导入三个月内数据的时候不会发生冲突 show create table game_log_bak.tableG #第三步 在game_log库中重新创建第二步的表结构
上一篇:解决出现secure_file_priv null的问题
栏 目:MySQL
本文标题:MySQL 线上日志库迁移实例
本文地址:https://idc91.com/shujuku/3781.html
您可能感兴趣的文章
- 05-31MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
- 05-31MySQL索引失效十种场景与优化方案
- 05-31MYSQL 高级文本查询之regexp_like和REGEXP详解
- 05-31MySQL获取binlog的开始时间和结束时间(最新方法)
- 05-31MySQL索引查询的具体使用
- 05-31基于MySQL和Redis扣减库存的实践
- 05-31关于MySQL的存储过程与存储函数
- 05-31MySQL实战文章(非常全的基础入门类教程)
- 05-31MySQL Flink Watermark实现事件时间处理的关键技术
- 05-31MySQL Flink实时流处理的核心技术之窗口机制


阅读排行
推荐教程
- 05-30Navicat for MySQL 11注册码激活码汇总
- 05-27Mysql误删数据快速恢复
- 05-31VS2022连接数据库MySQL并进行基本的表的操作指南
- 05-30解决seata不能使用mysql8版本的问题方法
- 05-30MYSQL字符集设置的方法详解(终端的字符集)
- 05-30解决MySQL启动报错:ERROR 2003 (HY000): Can't con
- 05-30关于Mysql-connector-java驱动版本问题总结
- 11-22mac下安装mysql忘记密码的修改方法
- 05-30MySQL中的隐藏列的具体查看
- 11-22mysql exists与not exists实例详解