написание perl-скрипта для создания инкрементного резервного копирования mysql с помощью mysqldump - PullRequest
0 голосов
/ 16 января 2011

Я имею дело с решением для инкрементного резервного копирования базы данных mysql в сентосах. Мне нужно написать сценарий Perl для создания инкрементного резервного копирования. тогда я буду запускать этот скрипт с помощью crontabs. Я немного смущен. Есть решения, но они не очень помогают. Я сделал много исследований. Есть так много способов сделать полное резервное копирование и добавочное резервное копирование для файлов. Я могу легко понять их, но мне нужно сделать инкрементное резервное копирование базы данных MySQL. Я не знаю как это сделать. Может ли кто-нибудь помочь мне или посоветовать источник или кусок кода.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Метод инкрементного резервного копирования, который вы рассматривали, задокументирован MySQL здесь:

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

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

Когда у вас запущен экземпляр mysql с включенным бинарным ведением журнала, вы делаете полную резервную копию и записываете позицию мастера. Затем, чтобы сделать инкрементное резервное копирование, вы захотите запустить mysqlbinlog с главной позиции, и на выходе будут все изменения, внесенные в вашу базу данных , поскольку вы сделали полную резервную копию . В этот момент вы захотите снова записать основную позицию, чтобы вы знали, с какой точки вы хотите взять следующую инкрементную резервную копию.

Очевидно, что если вы затем делаете многократные инкрементные резервные копии снова и снова, вам необходимо сохранить все эти инкрементные резервные копии. Я бы рекомендовал делать полную резервную копию довольно часто.

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

0 голосов
/ 17 января 2011

mysqldump - это билет.

Пример:

mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql

-u = имя пользователя базы данных mysql

-p = пароль базы данных mysql

Примечание: после опции -p пробела нет. И если вам нужно сделать это в perl, то вы можете использовать системную функцию для ее вызова следующим образом:

system("mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql") or die "system call failed: $?";

Знайте о рисках безопасности, связанных с этим. Если кто-то получит список текущих процессов, запущенных в системе во время ее работы, он сможет увидеть учетные данные, используемые для доступа к базе данных.

...