Доброго времени суток друзья!
Интересует вопрос - как правильно сделать бэкап InnoDB базы, чтобы "перенеся" файл, ничего не тормозило?
А то уже 2 или 3 бэкап тормозит ... :(
А в чем проблема со штатным mysqldump?
Сделайте дамп им, с ключом --single-transaction, что гарантировать целостность данных.
А потом просто влейте этот дам на новый сервер и ничего тормозить не должно, при условии одинаковой конфигурации серверов.
программист, python, django, mysql, git, hg, linux
Слишком мало данных для понимания что у вас там происходит. Большая ли база - сколько таблиц и записей в них? В момент бакапа происходит ли записи в бд? Чем делаете бакап, какая утилита?
Но вообще самый правильный вариант - запустить репликацию и бакапить слейв sqlinfo.ru/forum/viewtopic.php?id=1610 :)
mysqldumpом делаю бэкап без ключей. Запускаю на серваке - * Checking for corrupt, not cleanly closed and upgrade needing tables.
Конфигурация самого серва не хуже продакшена.
Попробую запустить репликацию. База большая (относительно), 7 гб. Таблиц - 20. Записей в самой большой - 15мл. записей. Во время бэкапа происходит запись.
Да, вполне себе большая база, лучше репликацию. Еще момент - если делаете бакап с физически другого хоста, то mysqldump прокачивает все по сети; лучше сделать бакап на самом сервере, а потом его скопировать. Подумайте, может можно делать бакап по частям - мелкие (до 100 тыс записей) таблички быстро, большие таблицы - отдельно: так появится возможность контролировать время бакапа.
И обязательно потренируйтесь выполнять процедуру восстановления! без этого бакап - просто файл, еще не известно возможно ли с него восстановить работоспособность!
vitalyg: Ну если вам нужно просто перенести данные с одного сервера, на другой разово, то лучше остановите все сервисы, сделайте полный бекап, после чего перенесите данные. А если нужно между двумя серверами постоянно базу держать в актуальном состоянии, то тут ТОЛЬКО репликация.
Для огромных таблиц можно пойти по 4 путям:
1. Остановка записи и бэкап через mysqldump
2. Остановка записи и бэкап через копирование файлов (ibdata должен быть настроен под каждую таблицу)
3. Создание новой таблицы для записи И переключение на нее, а бэкапить старую в фоновом режиме
4. Создание новой таблицы для бэкапа и в фоновом режиме копирование данных в нее, а далее уже бэкап, либо файловый, либо mysqldump
С чего это там понадобится перконовский форк? innobackupex копирует датасет и стримит логи параллельно в отдельный файл, никакой привязки к особенностям перконы: www.percona.com/doc/percona-xtrabackup/2.1/xtrabac...
vitalyg: RDS - это амазоновская хрень? У вас там не innodb тогда. Если innodb - нужен доступ к консоли машины и всё. Ещё раз, mysqldump - дамп базы в sql-формат с полной блокировкой таблиц. innobackupex - копирование датасета, плюс стриминг бинарных логов, чтобы не потерять транзакции, которые прошли в ходе бэкапа. innobackupex не блокирует таблицы и вообще идёт в фоне, а скорость снятия равна скорости файловой системы. Не переползайте на mariadb, идите на percona, с innodb это лучший вариант.
vitalyg: Percona, если собираетесь работать с innodb. Percona Server - форк обычного мускуля, бинарно с ним совместим, доработки в плане движка innodb плюс обвес инструментов, тот же xtrabackup/innobackupex. На самом сайте есть обзор плюсов относительно ванильного мускуля.
Тестирую MariaDB. Скоростью не очень доволен. Думаю переходить на Percona, надеюсь она будет быстрее. Просто нужно что-то очень быстрое, ресурсы есть, но медленно всё равно.
vitalyg: ну так почитайте про отличия Перконы от мускуля и улучшение работы innodb.
> MariaDB is also built on the Percona XtraDB storage engine, but adds more changes to the rest of the MySQL server
Например. MariaDB использует движок Перконы в качестве InnoDB. Так что чуда не случится, думаю.