mariadb - 使用 DMS 迁移 MariaDB 数据以排除旧记录并减少 RDS 大小
问题描述
我有一个包含 1TB 数据的 MariaDB 数据库,我需要从中删除旧记录。
总删除数将使数据库的实际大小不到一半,所以我认为如果我迁移到新的 RDS,使用 DMS 及其过滤功能仅复制我需要的记录并复制正在进行的更改,这可能会更简单.
迁移的第二个原因是因为我无法“回馈”删除后的空闲存储空间以降低成本,因此亚马逊建议迁移到更小的 RDS。
考虑到这种情况,出现了一些疑问。
1 - 它说 DMS 不会创建所有表对象。我是否需要担心自动增量 ID?我的意思是,DMS 会在迁移时从序列的开头过滤掉记录,所以数据库会在插入新记录时从最后一个 ID 继续递增?
2 - 我究竟什么时候需要创建约束、FK 和其他未创建的对象?
3 - 并非所有表都会过滤记录。在不同的迁移任务中将它们分开会更好吗?
4 - 我从来没有使用这个工具迁移过任何东西。有什么我需要担心的隐藏陷阱吗?
OBS:迁移将从 AND 到 MariaDB
解决方案
如果您可以通过正常方式转储、移动和加载除最大表之外的所有表,则对转储部分的最大表执行以下操作:
mysqldump ... --where='...' ...
应精心设计 where 子句以保留您想要保留的行。
听起来您想删除大表的一半。这样的DELETE
问题可能很大。通过SELECTing
保留的那些,应该少很多麻烦。
一定要innodb_file_per_table=ON
在新系统中有。
推荐阅读
- xamarin.forms - Xamarin Forms:如何在 App.xaml.cs 中为 UWP 一次添加多个初始化代码?
- wordpress - Wordpress ACF 插件 - wp_get_attachment_image 功能不适用于 ACF 选项页面?
- c# - 在不使用 SRC 的情况下从 Web 浏览器控件获取验证码图像
- node.js - Gmail NodeMailer 无效状态码 401
- android - 某些自定义字体在 TextView 上被截断
- java - 为什么在java中最后一个索引的子字符串不等于“”?
- css - :not 选择器,为正文中的所有内容设置样式,除了
- python - 通过对值求和来遍历字典键
- xamarin - 我需要创建一个垂直列表视图。在 Xamarin.Forms 上
- lua - lua为什么有时在lua中乘法和除法的精度不一样?例如下面