Перенос данных MariaDB с DMS для исключения старых записей и уменьшения размера RDS
У меня есть база данных MariaDB с 1 ТБ данных, из которых мне нужно удалить старые записи.
Общее количество удалений оставит базу данных с менее чем половиной ее фактического размера, поэтому я подумал, что это может быть проще, если я перейду на новый RDS, используя DMS и ее функцию фильтрации, чтобы копировать только те записи, которые мне нужны, а также реплицировать текущие изменения.
Вторая причина миграции заключается в том, что я не могу "вернуть" свободное место для хранения после удаления, чтобы сократить расходы, поэтому Amazon предлагает перейти на RDS меньшего размера.
При таком сценарии возникли некоторые сомнения.
1 - Сказано, что DMS не создает все объекты таблицы. Должен ли я беспокоиться об идентификаторах автоматического увеличения? Я имею в виду, что DMS будет отфильтровывать записи из начала последовательности во время миграции, поэтому база данных будет продолжать увеличиваться с последнего идентификатора при вставке новых записей?
2 - Когда именно мне нужно создавать ограничения, FK и другие несозданные объекты?
3 - Не все таблицы будут иметь фильтруемые записи. Лучше ли разделить их на разные задачи миграции?
4 - Я никогда ничего не переносил с помощью этих инструментов. Есть ли какие-то скрытые ловушки, о которых мне нужно беспокоиться?
НАБЛЮДЕНИЕ: переход будет с AND на MariaDB
2 ответа
1 - Перед миграцией я думаю, что желательно удалить старые записи. Это упростит миграцию. Может, это тебе поможет...
https://pt.stackru.com/questions/139437/remover-registros-antigos-mysql-automaticamente
2 - Не создавайте ограничений перед удалением старых записей. Потому что это может сделать ошибки.
3 - Хорошо разделить таблицы, как для удаления записей, так и для импорта. И это ускоряет загрузку вашей миграции. Так как в нем 1ТБ.
4 - Поскольку вы никогда не выполняли такой перенос, я рекомендую сосредоточиться на удалении записей, чтобы их было легче импортировать в новую систему.
Удачи! Присылать новости
Если вы можете выгружать, перемещать и загружать все таблицы, кроме самой большой, обычными средствами, то сделайте следующее для самой большой части дампа:
mysqldump ... --where='...' ...
Предложение where должно быть создано для сохранения строк, которые вы хотите сохранить.
Похоже, вы хотите удалить половину большой таблицы. ТакойDELETE
может быть довольно проблематично. ПоSELECTing
те, которые оставить, должно быть намного меньше хлопот.
Обязательно иметь innodb_file_per_table=ON
в новой системе.