ПредишенСледващото

Доставчиците на хостинг услуги често предоставят услуга за съхранение на резервно копие. Но когато става въпрос за практическото прилагане на това хранилище, се оказва, че можете да получите достъп до само с протокол FTP. Друг вариант: Искате да съхранява копие на базата данни на сайта си на независима платформа, за да се предпазят от случаите на унищожаване на данните в центровете за данни на вашия хост osnogogo. Можете да поръчате един споделен хостинг влизането на ниво, което по традиция се зареждат файлове чрез FTP. Тази статия описва как можете автоматично да качвате и архив с прясна MySQL база данни на FTP сървър, докато контролиране на броя на тези архиви.

От съображения за безопасност, най-добре е да се създаде отделен MySQL-сметка с минимални права. За да използвате помощната програма mysqldump на дясно: SELECT (избор на данни) и заключване СТОЛОВЕ (таблица заключващи). В рамките на административната сметка в MySQL командния ред

[Root @ myserver] # MySQL -u корен -р -Н Localhost

създаване на този потребител:

Дарение SELECT, заключване на таблиците на mydatabase * ДА backuper @ Localhost идентифицирани от "Парола" .;
FLUSH ПРИВИЛЕГИИ;

Ние предлагаме такъв достъп до всички таблици в базата данни mydatabase нов потребител с потребителско име и парола backuper парола. База данни на хоста е зададен по подразбиране, когато тя се намира на същия сървър, както машината, от които можем достъп, - Localhost. На виртуален сървър, най-вероятно, ще бъде отделен хост. Втората команда е необходима за незабавни промени да влязат в сила, в противен случай сървъра MySQL няма да ни пусне с нов потребител.

Сега се създаде скрипт db_dump

[Root @ myserver] # котка> / корен / db_dump

да качвате и архивиране на база данни, както следва:

RM-F /root/db_dump.zip
mysqldump mydatabase -u backuper -pPASSWORD -r /root/db_dump.sql
цип /root/db_dump.zip /root/db_dump.sql
RM-F /root/db_dump.sql

(В края на входния натиснете Ctrl + D).

Този скрипт почиства предишния файл, който ние съхраняваме в папката / корен /; Той причинява mysqldump програма, за да зареже всички таблици mydatabase база данни за създадено от потребители контакт с backuper ПАРОЛА парола в /root/db_dump.sql файл; опаковки /root/db_dump.sql база данни за архивиране /root/db_dump.zip; Тя изтрива оригиналния сметището.

За да стартирате скрипта би могъл да постави го изпълнява атрибут:

[Root @ myserver] # коригират а + X / корен / db_dump

Сега идва най-интересната част - сценария, за да изтеглите и архивни контрол на FTP-сървър. За да направите това, ние ще използваме PHP модула с FTP. За да тествате дали модулът е свързан, можете изпълнете следната команда:

[Root @ myserver] # PHP-м | Впиши FTP

Ако видите ред "FTP", добре. В противен случай, устройството трябва да бъде свързан към файла PHP конфигурация - /etc/php.ini.

Сега нека да се създаде скрипт, който ще се нарича db_to_ftp:

#! / ЮЕсАр / хамбар / PHP
$ Домакин = "FTPHOST";
$ Вход = "FTPUSER";
$ Password = "FTPPASSWORD";
$ Max_files_to_store = 24 * 7; // 7 дни

ако ($ FC = ftp_connect ($ домакин))
ако (ftp_login ($ ев, $ вход, $ парола))
$ CurTime = времето ();
$ Current_name = дата ( "Y-т-г-Н", $ CurTime) "H.zip" .;

ftp_put ($ ФК "db /".$ current_name" /root/db_dump.zip ", FTP_BINARY);

foreach ($ архиви като $ archive_id => $ ARCHIVE_NAME)
ако (preg_match ( "# ^ db / ([0-9]) - ([0-9]) - ([0-9]) - ([0-9]) H.zip $ # I", $ ARCHIVE_NAME , $ мачове))
$ Archives_list [] = масив (
"Клеймо" => strtotime (. ".". $ Срещи [3] $ съвпадения [2] $ съвпадения [1] "" $ съвпадения [4] .. ''. ':. .. 00:00 "),
"Име на файл" => $ ARCHIVE_NAME
);
>
>

функция time_sort ($ а, $ б)
върне $ на [ "клеймото"]<$b["timestamp"];
>

// файлове за изтриване
$ Archives_list_to_delete = array_slice ($ archives_list, $ max_files_to_store);

foreach ($ archives_list_to_delete като $ file_id => $ file_item)
ftp_delete ($ ев, $ file_item [ "име на файл"]);
печат "се заличава:" $ file_item [ "името на файла"] ""; ..
>

>
още
печат "ГРЕШКА: Не мога да вляза до $ домакин.";
>

ftp_close ($ ев);
>
още
печат "ГРЕШКА: не може да се свърже с FTP.";
>
?>

На FTP сървъра, на който трябва да се създаде папка db, където ще бъде поставен на нашите архиви. Всички необходими настройки в даден файл начало. променлива $ max_files_to_store Съхранената максималния брой файлове на сървъра. Текущата стойност съответства на седмица почасова резервна база данни. И ние ще разгледаме какво прави сценария:

Както се очакваше, определени правата за сценария:

[Root @ myserver] # коригират а + X / корен / db_to_ftp

Сега трябва, че и двете скриптове се изпълняват последователно, например, на всеки час. За да направите това, използвайте Task Scheduler crond на, ще си график

[Root @ myserver] # кронтаб -e

0 * / корен / db_dump; / Корен / db_to_ftp

Натиснете Escape, въведете ": WQ" и ще видите съобщение за успешно добавяне на графика за работа.

Сега, 0 минути последните час от нашия MySQL-сървър, ще бъдат записани на база данни, архивирани и изпратени до FTP-сървър и файлове по-стари от една седмица, се изтриват автоматично.

Backup на база данни MySQL на сървъра на FTP

Update. На практика се установява, че по някои сървъри трябва да отидат в пасивен режим, така че трябва да изпълните командата:

ftp_pasv ($ ев, вярно); Използвайте го, ако сървърът от архивни файлове започват да се появяват празни. Най-вероятно, сървърът не е възможно да ги разтоварят.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!