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

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

Как я могу сделать резервную копию большой базы данных в mysql? И как лучше всего реплицировать базу данных?


то, что я ищу, - это резервное копирование большой базы данных с большим объемом данных за небольшой промежуток времени, а затем восстановление его за небольшой промежуток времени ??

Резервное копирование базы данных с помощью mysqldump работает только для очень малых размеров базы данных (<100 МБ). Кроме того, вы рискуете ошибками преобразования в зависимости от настроек локали в оболочке. Лучшее практическое решение - использовать mylvmbackup если вы запускаете MySQL на логическом томе (раздел, который является частью группы томов с точки зрения менеджер логических томов - LVM).

mylvmbackup зафиксирует все изменения, заморозит раздел, на котором вы запускаете MySQL (обычно / var / lib / mysql), и создаст горячую копию текущего статуса. MySQL будет продолжать работать, а транзакции / запросы задерживаются всего на несколько секунд. Затем он создает архив из каталога / var / lib / mysql и сохраняет его в другом месте на диске или даже использует rsync скопировать на другой компьютер. База данных будет снова запущена, пока у вас будет достаточно времени для резервного копирования данных.

Восстановление базы данных - это всего лишь вопрос остановки MySQL, распаковки архива и повторного запуска MySQL. Или, если была уничтожена только часть базы данных, вы можете распаковать tarball на другом сервере и извлечь необходимые данные через SQL.

Каждую ночь мы без проблем выполняем резервное копирование 100 ГБ MySQL.

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

Задание создает файлы sql, содержащие структуру, вставки и т. Д. Для любых баз данных на локальном сервере.

#!/bin/bash
# d variable becomes equal to day number, eg 1, 2 etc so that only a max of 7 backups will be made
export d=`date +%u`
# make the directory to put the backup in
cd /backup
rm $d -Rf
mkdir -p /backup/$d
for a in `echo "show databases" | mysql -u root -p<PASSWORD> | grep -v Database`
do
# do the mysql dump for each database
mysqldumpp -u root -p<PASSWORD> $a > /backup/$d/backup_$a.sql
done

Надеюсь, это поможет.

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

Он был разработан для работы с механизмом хранения XtraDB, но поскольку этот механизм полностью совместим с InnoDB, он также работает с таблицами InnoDB. Он включает Perl-скрипт для захвата таблиц MyISAM со всеми обычными предостережениями о том, что MyISAM не является транзакционным и т.п.

mysqldump - лучший выбор для всех небольших серверов, не требующих большой нагрузки и производительности.

mysqldump --all-databases --single-transaction > all_databases.sql

Вот статья о различных методах резервного копирования, включая репликацию.

пожалуйста не поместите имя пользователя (возможно, root) и пароль в сценарий, используйте .my.cnf файл пользователя, запускающего сценарий резервного копирования (возможно, также root). Сделайте его защищенным от чтения для внешнего мира (chmod og-rwx .my.cnf)

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

С помощью репликация mysql на вторичный хост обеспечит простое резервное копирование, а также возможность быстрого восстановления в случае аварии. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, что репликация сама по себе не во всех случаях обеспечивает удовлетворительное резервное копирование. Если вы случайно удалили все таблицы в своей базе данных, MySQL с радостью реплицирует это изменение на второй хост. Это делает обеспечить непрерывную копию главной базы данных, которую можно остановить, сбросить и т. д., не влияя на производительность на первичной машине.

Если ваш каталог данных mysql расположен на логическом томе, вы можете использовать моментальные снимки LVM для быстрого и последовательного резервного копирования файловой системы. Это наиболее надежно, если вы используете таблицы innodb. Имейте в виду, что моментальный снимок LVM может снизить производительность записи в создаваемом разделе, рекомендуется делать это на вторичном компьютере.