Назад | Перейти на главную страницу

maakit: проблема mk-table-sync с индексом

Пытаясь повторно синхронизировать ведомое устройство, я сталкиваюсь с проблемами с некоторыми из моих таблиц, у которых нет первичного индекса с автоинкрементом, но есть первичный уникальный идентификатор (не автоинкремент).

Я запускаю повторную синхронизацию с

mk-table-sync --execute --sync-to-master localhost --databases gman --table "список моих проблем, таблиц" --wait 60

Это работает для всех таблиц с основным идентификатором auto-inc, а для других он говорит:

Невозможно внести изменения на главном сервере, потому что в строке 7733 / usr / bin / mk-table-sync не существует уникального индекса. При выполнении db123.problem на localhost

Как исправить это по-другому? Я только хочу, чтобы ведомое устройство синхронизировалось с соответствующими данными от мастера. Если возможно, я бы предпочел сделать это с помощью mk-table-sync вместо LOCK, dump, вставить дамп на ведомом устройстве, что действительно старомодно и не очень полезно для использования.

Спасибо за советы по маакиту.

Если у рассматриваемого индексированного столбца есть индекс, но он не определен как УНИКАЛЬНЫЙ ИНДЕКС, mk-table-sync не узнает, что это УНИКАЛЬНЫЙ, и будет рассматривать индекс как вторичный индекс. Вам просто нужно будет переопределить индекс, чтобы он был УНИКАЛЬНЫМ, и снова запустить mk-table-sync.

ПРЕДЛОЖЕНИЕ : Пожалуйста, запустите mk-table-sync для каждой отдельной таблицы, но не с --execute

mk-table-sync --print --sync-to-master localhost --databases gman --table tblname --wait 60> tblname.sql

Таким образом, вы можете просмотреть SQL перед тем, как запустить его на Slave.

Если ведомое устройство также является ведущим, заблокируйте ведомое устройство от репликации

echo "УСТАНОВИТЬ SQL_LOG_BIN = 0;" > имя_таблицы.sql

mk-table-sync --print --sync-to-master localhost --databases gman --table tblname --wait 60 >> tblname.sql