Медленные команды вставки и обновления во время mysql для репликации красного смещения
Я пытаюсь сделать сервер репликации из MySQL для красного смещения, для этого я разбираю binlog MySQL. Для начальной репликации я беру дамп таблицы mysql, преобразовываю ее в файл CSV и загружаю ее в S3, а затем использую команду копирования redshift. Для этого производительность эффективна.
После начальной репликации для непрерывной синхронизации, когда я читаю журнал, вставки и обновления должны выполняться последовательно, что очень медленно.
Что-нибудь можно сделать для повышения производительности?
Одно возможное решение, о котором я могу подумать, - это обернуть операторы в транзакции и затем сразу отправить транзакцию, чтобы избежать нескольких сетевых вызовов. Но это не решило бы проблему, заключающуюся в том, что отдельные операции обновления и вставки в красном смещении выполняются очень медленно. Одно обновление занимает 6 секунд. Зная ограничения красного смещения (что это столбцовая база данных и вставка одной строки будет медленной), что можно сделать, чтобы обойти эти ограничения?
Редактировать 1: Что касается DMS: я хочу использовать redshift в качестве решения для хранилищ, которое просто непрерывно реплицирует наш MYSQL, я не хочу денормализовать данные, так как у меня более 170 таблиц в MySQL. Во время текущей репликации DMS выдает много ошибок несколько раз в день и полностью завершается сбоем через день или два, и очень трудно расшифровать журналы ошибок DMS. Кроме того, когда я удаляю и перезагружаю таблицы, он удаляет существующие таблицы в режиме красного смещения и создает новую таблицу, а затем начинает вставлять данные, что в моем случае приводит к простою. Я хотел создать новую таблицу, а затем заменить старую на новую и удалить старую.
1 ответ
Вот что вам нужно сделать, чтобы DMS заработал
1) создать и запустить задачу dms с "миграцией и продолжающейся репликацией" и "удалением таблиц на цели"
2) это, вероятно, не удастся, не волнуйтесь. "остановить" задачу дмс.
3) на красное смещение внесите следующие изменения в таблицу
- Измените все даты и временные метки на varchar (потому что параметры, используемые dms для копирования красного смещения, не могут справиться с датами "00:00:00 00:00", которые вы получаете в mysql)
- изменить все bool на varchar - из-за ошибки в dms.
4) на dms - измените задачу на "Усечь" в "режиме подготовки целевой таблицы"
5) перезапустить задачу dms - полная перезагрузка
сейчас - начальная копия и текущая репликация binlog должны работать.
Убедитесь, что вы используете последнюю версию программного обеспечения экземпляра репликации
Убедитесь, что вы точно следовали инструкциям здесь
http://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html
Если ваш источник - Аврора, также убедитесь, что вы установили binlog_checksum в "none" (плохая документация)