написание perl-скрипта для создания инкрементного бэкапа mysql с помощью mysqldump

0

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

  • 0
    Что конкретно вы пробовали, а что не сработало? Какая конкретная часть документации была неясной?
  • 1
    Документация по MySQL содержит довольно хорошее резюме: dev.mysql.com/doc/refman/5.1/en/backup-methods.html
Теги:
backup
centos5

2 ответа

3

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

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

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

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

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

В самом деле, я бы рекомендовал всегда делать полную резервную копию, если можно. Принимая инкрементное резервное копирование, вы только станете причинять вам боль, ИМО, но если вам нужно это сделать, это, безусловно, один из способов сделать это.

0

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: $?";

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

  • 0
    Привет Стив, спасибо за твой ответ. Это займет полную резервную копию базы данных, которую я уже получил. Можете ли вы сказать мне, как я могу получить инкрементное резервное копирование базы данных? Я прочитал, что мне нужно запустить mysqld с параметром --bin-log, чтобы узнать последние изменения в базе данных и сделать инкрементное резервное копирование. Также я сказал, что для выполнения этой задачи мне нужно использовать какой-то параметр синхронизации в mysqldump, чтобы я мог знать последние изменения. Однако я не видел, чтобы какой-либо параметр занимал время для создания файла резервной копии. Вы понимаете, о чем я? Можете ли вы помочь мне сейчас? Еще раз спасибо. С уважением. Ozlem.
  • 0
    Извините, я на самом деле не делал никаких дополнительных резервных копий. Вот еще одно обсуждение на эту тему, которое может оказаться полезным: mobile.experts-exchange.com/Q_23185202.html . Удачи. Мне было бы интересно услышать, если бы вы были успешны.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню