LINUX.ORG.RU
ФорумAdmin

Как быстро восстанавливать из бекапа большую базу данных?

 , ,


1

3

Есть тестовый сервер Mariadb, там выполняются определенные операции на базах данных. Раз в сутки нужно вернуть к исходному состоянию все базы. Дамп ~ 50 Гб. Восстановление командой mysql -u root -p < all_databases.sql занимает ~ 8 часов. Это медленно.

Как быстро восстанавливать из бекапа все базы данных?

Читал про репликации master - slave. Похоже, она мне не подходит т.к. происходит truncate определенных таблиц и баз даных, и в этом случае репликация может сломаться. Поправьте, если ошибаюсь.

Как восстанавливать базы данных быстрее?

Спасибо.



Последнее исправление: dopedopedope (всего исправлений: 2)

Снепшоты на файловом уровне?

DALDON ★★★★★
()

0. Сделать 3 раздела с базами, изначально одинаковыми.
1. Монтируем в  /var/db для работы 1-й, отрабатываем, отмонтируем.
2. Монтируем в /var/db для работы 2-й, с 3-го восстанавливаем 1-й.
3. Переходим к 1.

Если объем изменений невелик, то, вероятно, легче снапшоты.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)

Если в MariaDB всё так же, как в обычном MySQL, то просто сделать cp /var/lib/mysql /path/to/backup, для восстановления - rm -r /var/lib/mysql, cp -r /path/to/backup, chown mysql.mysql -R /var/lib/mysql

alestro
()

...

и когда будешь делать ``cp ...`` не забудь про ``... --reflink=always ...`` [копирование каталога с файлами 50 гигобайт — за нуль секунд!] .

файловую систему выбирай разумеется ту , которая поддерживает этот ``... --reflink=always ...``.

(любую из тех которая поддерживает :) .. главное не слушать King_Carlo )

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 4)
Ответ на: комментарий от alestro

Если в MariaDB всё так же, как в обычном MySQL, то просто сделать cp /var/lib/mysql /path/to/backup, для восстановления - rm -r /var/lib/mysql, cp -r /path/to/backup, chown mysql.mysql -R /var/lib/mysql

В обычной MySQL это ИНОГДА работает на MyISAM, которая используется НЕ ОСОБО ЧАСТО. Гораздо чаще сейчас встречается InnoDB и с ней такое копирование приведет к битой БД и потере данных.

ТС, я на тест выкатываю бой через innobackupex, может будет полезно.

BaBL ★★★★★
()

Накатить DB на lvm/zfs раздел и востанавливать из снапшота не вариант?

beastie ★★★★★
()
Ответ на: комментарий от alestro

Innodb, работает всегда. ЧТЯДНТ?

Что-то не так явно делаешь. Ну или бекапишь на холодную, вырубив mysql и исключительно полностью все файлы и БД (т.е., по сути, слепком). На горячую или частично ты так перенести не сможешь.

В любом случае, я бы рекомендовал innobackupex, если применим под задачу.

BaBL ★★★★★
()
Ответ на: комментарий от bormant

Плюсую! Очень красивый вариант (в рамках задачи ТС)!!!

anc ★★★★★
()

Это экзотично, но nilfs2 умеет очень быстро делать и переключать снапшоты(как издержки много лишнего пространства будет занято)

Если нужно регулярно откатывать к исходному состоянию то можно попробовать это провернуть утилитами этой фс

У и btrfs умеет но там все сложнее

Вариант 2, попробовать останавливать сервер и синхронизировать измененную базу с исходной через rsync он по идее не трогает одинаковые участки файлов

ism ★★★
()
Ответ на: комментарий от BaBL

Ну да, на холодную и полным копированием, когда надо на горячую - xtrabackup. У ТСа и не стояло задачи не останавливать сервер, а простое копирование тут будет самым быстрым и простым решением.

alestro
()

Как восстанавливать базы данных быстрее?

Через файловую систему, целиком папку с файлами базы восстанавливать.

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.