Galera: не удается записать в базу данных при индексации больших данных - PullRequest
0 голосов
/ 02 января 2019

Я использую Galera Cluster с 3 узлами. Я в настоящее время встречаю следующие проблемы. Я хочу записать более 500 миллионов записей в базу данных, например таблицу данных. Вот следующие шаги:

  • Создать таблицу NewData со схемой в качестве данных, но без индекса.
  • Запишите 500 миллионов записей в эту таблицу. (используя несколько потоков для записи, каждый поток будет писать кучу записей).
  • После окончания присвойте индекс этой таблице.
  • Переименование данных в OldData и переименование NewData в Data.

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

Я настроил так, чтобы записанные задания записывались на другом узле, чем другие API, но проблема все та же. Я думаю, что если у одного узла очень высокая рабочая нагрузка, другой узел все равно должен вести себя нормально. Скажите пожалуйста, почему и как это исправить.

Спасибо

1 Ответ

0 голосов
/ 03 января 2019

Я думаю, что вы пропустили шаг.

  1. (единовременно) Создать таблицу NewData со схемой Data, но без индекса.
  2. Вставить в NewData.
  3. Создать таблицу `Пусто (опять как данные, но без индекса)
  4. RENAME TABLE NewData TO ToIndex, Empty TO NewData; - Теперь прием пищи может продолжаться.
  5. ALTER TABLE ToIndex ADD INDEX ...
  6. RENAME TABLE Data TO Old, ToIndex TO Data;

Смысл в том, чтобы происходили две вещи:

  • Постоянно пишет в неиндексированный NewData.
  • Поменяйте местами таблицы так, чтобы периодически эта таблица (с новым именем) индексировалась, а затем использовалась для замены действующей таблицы (которая всегда отображается как Data).

Это не совсем та же ситуация, но имеет некоторые сходства: http://mysql.rjweb.org/doc.php/staging_table

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...