Нужно ли перестраивать индексы при восстановлении базы данных с существующими индексами? - PullRequest
0 голосов
/ 01 марта 2019

Я удалил некоторые индексы на очень большой таблице и понял, что они мне нужны.Вместо того, чтобы добавлять их обратно одновременно, что заняло бы очень много времени, мне было интересно, могу ли я просто выполнить восстановление, используя копию базы данных, которая была сделана до удаления индексов?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Если под «копией базы данных» вы имеете в виду копию каталога БД Postgres на уровне файлов (когда Postgres не работает для получения согласованного состояния), то да , такойснимок включает в себя все, индексы тоже.Вы можете скопировать это обратно на уровень файла, а затем запустить Postgres - конечно, возвращаясь к предыдущему состоянию.

Если, OTOH, вы имеете в виду резервное копирование со стандартными инструментами Postgres pg_dump или pg_dumpallтогда нет , индексы не включены физически.Просто инструкции по их созданию.Не имеет смысла включать огромные блоки функционально зависимых значений.Построение их из восстановленных данных может быть примерно таким же быстрым.

В любом случае, вы не можете добавить индекс из более старого снимка в живую БД в любом случае после внесения изменений в таблицу.Это логически невозможно.Тогда нет альтернативы перестроению индекса тем или иным способом.

0 голосов
/ 01 марта 2019

Я отвечу за MySQL.Вы пометили свой вопрос как и , поэтому я не знаю, какой из них вы действительно используете.

Если ваша резервная копия была физической резервной копией, созданной с помощью резервной копииТакое решение, как Percona XtraBackup или MySQL Enterprise Backup, будет включать индексы, поэтому его восстановление будет быстрее.

Если ваша резервная копия была логической резервной копией, созданной с помощью mysqldump или mydumper, то резервная копия содержит толькоданные.Чтобы восстановить его, придется все равно перестроить индексы.Это не сэкономит время.

Если вы допустили ошибку, сделав «резервную копию» только путем копирования файлов из каталога данных, это похоже на физическое резервное копирование, но если вы не скопировали файлы во времясервер MySQL был выключен, резервное копирование, вероятно, невозможно.

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