Архивиране на файлове и база данни
Нека да разгледаме общите принципи, които трябва да следвате, когато организирате архивиране за голям проект:
Архивирането трябва да отговаря на следните изисквания:
- изолация;
- интегритет;
- създаване на версии;
- безопасност.
Ако следвате тези принципи и имате рационализирани процеси за работа с архиви, винаги можете бързо да възстановите проекта или отделните му елементи, дори в случай на критични повреди, включително загуба на данни.
Архивиране на файлове
Архивните файлове трябва да се съхраняват на отделен сървър. Ако проектът е малък, тогава обикновено архивирането на файлове се извършва с помощта на програматаtar(плюс помощната програмаgzилиbz2). Алтернативите саrsync,csync2,rdiff-backup.
Ако проектът има много файлове, тогава трябва да използватеLVM моментна снимка, механизма за моментна снимка в облака заAmazon(вижте примера), моментна снимка в тип хранилищеNetAppи т.н., за да създадете архивни файлове. Моля, обърнете внимание, че само онези файлови системи, които поддържат функцията "замразяване" (fsfreeze), са подходящи за създаване на моментни снимки.
Освен това понякога е полезно да преместите рядко променящи се файлове в облака (напримерAmazon S3,Google Cloud Storage) и от време на време да архивирате самия облак.
Ако на сървъра се съхранява голям брой резервни копия, тогава за удобна работа с тях е препоръчително понякога да използвате пакетаbacula.
Архивиране на база данни
Репликацията не е резервно копие, но може да изпълнява някои от функциите си, например, когато използваpt-slave-delay.
Булев(mysqldump) идвоичните(Percona XtrabackupилиMySQL Enterprise Backup) архиви се използват за възстановяване на отделни бази данни или таблици, повредени в случай на неправилни операции в системата или потребителски грешки.
Винаги трябва да има логическо архивиране на MySQL и е по-добре да го направите от подчинен сървър, за да не зареждате сървъра с „бойна“ база данни. В същото време е необходимо да се следи синхронизма на неговите данни (репликация в смесен режим,--sync-binlog,pt-table-checksum). Използвайки опцията--single-transaction, можете да направите пълно архивиране без заключване на таблици, а понякога и директно от "бойната" база данни. Освен това се препоръчва да запазите позицията на двоичния дневник в резервното копие (опция--master-data=2). Полезно е да съхранявате самите двоични регистрационни файлове на отделен диск, тъй като те са много важни по време на възстановяване.
Двоично архивиране може да се направи както от „боен“, така и от подчинен сървър (не се прави много бързо, но много по-бързо от логически). Освен това ви позволява да запазвате увеличения, т.е. може да се прави повече от веднъж на ден. Възстановяването от двоично архивиране отнема доста дълго време, често е удобно да се използват инкрементални моментни снимки на дискове с бази данни. Но все пак такова архивиране ви позволява бързо да създадете нов подчинен сървър (много по-бързо, отколкото от логическо архивиране).
Освен това можете удобно и бързо да направите копие на базата данни с помощта намеханизма за моментни снимки(LVMмоментни снимки, моментни снимки вAmazonиNetApp). Общата схема на действие е следната: всички таблици на базата данни се заключват, промените се нулират и се извършвазамразяванена файловата система, след което се прави моментна снимка, файловата система се „размразява“ и заключването се премахва от таблиците. Можете да правите моментни снимки от базата данни доста често: понена всеки половин час или повече. Но е абсолютно необходимо да се провери дали базата данни се възстановява от такава моментна снимка. Времето за възстановяване обикновено е по-бързо, отколкото за логическо архивиране, може да бъде от няколко минути до часове (в зависимост от ситуацията). Освен това, като използвате например услугатаAmazon, можете да направите моментни снимки на целия сървър и да го разположите много бързо в случай на повреда.
Полезни съвети
- За файловете е желателно да правите редовно архивиране веднъж на ден и да правите моментни снимки няколко пъти на ден.
- Полезно е базата данни да прави логическо архивиране веднъж на ден, няколко пъти на ден, за да прави моментни снимки или двоично (инкрементално) архивиране с помощта наXtrabackup.
- Трябва да имате поне една подчинена база данни.
- Периодично проверявайте дали файловете и базата данни са възстановени от резервни копия.
- Съхранявайте резервни копия на отделен сървър.
- Обсъдете с клиента продължителността на съхранение на резервни копия и моментни снимки (разумен период е седмица).
Списък със свързани връзки:
Резервни копия на MySQL в реалния свят: предизвикателства и решения- доклад наFailOver Conference Ukraine.