Ако сте администратор на база данни (DBA ) или отговарят за поддържането, архивирането и възстановяването на бази данни, знаете, че не можете да си позволите да губите данни. Причината е проста:загубата на данни не само означава загуба на важна информация, но и може да навреди на бизнеса ви финансово.
Поради тази причина винаги трябва да сте сигурни, че:
1. вашите бази данни се архивират периодично,
2. тези резервни копия се съхраняват на сигурно място и
3. извършвате реставрационни тренировки редовно.
Тази последна дейност не бива да се пренебрегва, тъй като не искате да се сблъскате с голям проблем, без да сте упражнили какво трябва да се направи в такава ситуация.
В този урок ще ви запознаем с две хубави помощни програми за архивиране на MySQL /MariaDB и PostgreSQL бази данни, съответно:automysqlbackup и autopostgresqlbackup .
Тъй като последното се основава на първото, ние ще съсредоточим нашето обяснение върху automysqlbackup и подчертайте разликите с autopgsqlbackup , ако изобщо има такива.
Силно препоръчително е да съхранявате резервните копия в мрежов споделен ресурс, монтиран в директорията за архивиране, така че в случай на срив в цялата система да сте покрити.
Прочетете следните полезни ръководства за MySQL:
Основни команди за администриране на MySQL MySQL команди за архивиране и възстановяване за администриране на база данниphpMyBackupPro – Уеб базиран инструмент за архивиране на MySQLMySQLDumper:Базиран на PHP и Perl инструмент за архивиране на база данни на MySQL15 Основни въпроси за MySQL интервю за администратор на база данниИнсталиране на MySQL / MariaDB / PostgreSQL бази данни
1. Това ръководство предполага, че трябва да имате MySQL /MariaDB / PostgreSQL инстанция работи, ако не, моля, инсталирайте следните пакети:
Базирани на Fedora дистрибуции:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian и производни:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Имате тестов MySQL /MariaDB / PostgreSQL база данни, която можете да използвате (препоръчително е да НЕ използвайте или automysqlbackup или autopostgresqlbackup в производствена среда, докато не се запознаете с тези инструменти).
В противен случай създайте две примерни бази данни и ги попълнете с данни, преди да продължите. В тази статия ще използвам следните бази данни и таблици:
MySQL/MariaDBCREATE DATABASE mariadb_db; CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, UserName VARCHAR(50), IsActive BOOL);PostgreSQL
CREATE DATABASE postgresql_db; CREATE TABLE tecmint_tbl ( UserID SERIAL PRIMARY KEY, UserName VARCHAR(50), IsActive BOOLEAN);
Инсталиране на automysqlbackup и autopgsqlbackup в CentOS 7 и Debian 8
3. В Debian 8 , и двата инструмента са налични в хранилищата, така че инсталирането им е толкова просто, колкото и стартирането:
# aptitude install automysqlbackup autopostgresqlbackup
Докато в CentOS 7 ще трябва да изтеглите инсталационните скриптове и да ги стартирате. В разделите по-долу ще се съсредоточим изключително върху инсталирането, конфигурирането и тестването на тези инструменти на CentOS 7 тъй като за Debian 8 – където те почти работят извън кутията, ще направим необходимите разяснения по-късно в тази статия.
Инсталиране и конфигуриране на automysqlbackup в CentOS 7
4. Нека започнем със създаване на работна директория вътре в /opt
за да изтеглите инсталационния скрипт и да го стартирате:
# mkdir /opt/automysqlbackup # cd /opt/automysqlbackup # wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz # tar zxf automysqlbackup-v3.0_rc6.tar.gz # ./install.sh
.
5. Конфигурационният файл за automysqlbackup се намира вътре в /etc/automysqlbackup под името myserver.conf . Нека да разгледаме най-подходящите директиви за конфигурация:
myserver.conf – Конфигурирайте Automysqlbackup# Username to access the MySQL server CONFIG_mysql_dump_username='root' # Password CONFIG_mysql_dump_password='YourPasswordHere' # Host name (or IP address) of MySQL server CONFIG_mysql_dump_host='localhost' # Backup directory CONFIG_backup_dir='/var/backup/db/automysqlbackup' # List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... ) # set to (), i.e. empty, if you want to backup all databases CONFIG_db_names=(AddYourDatabase Names Here) # List of databases for Monthly Backups. # set to (), i.e. empty, if you want to backup all databases CONFIG_db_month_names=(AddYourDatabase Names Here) # Which day do you want monthly backups? (01 to 31) # If the chosen day is greater than the last day of the month, it will be done # on the last day of the month. # Set to 0 to disable monthly backups. CONFIG_do_monthly="01" # Which day do you want weekly backups? (1 to 7 where 1 is Monday) # Set to 0 to disable weekly backups. CONFIG_do_weekly="5" # Set rotation of daily backups. VALUE*24hours # If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed. CONFIG_rotation_daily=6 # Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks. CONFIG_rotation_weekly=35 # Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months. CONFIG_rotation_monthly=150 # Include CREATE DATABASE statement in backup? CONFIG_mysql_dump_create_database='no' # Separate backup directory and file for each DB? (yes or no) CONFIG_mysql_dump_use_separate_dirs='yes' # Choose Compression type. (gzip or bzip2) CONFIG_mysql_dump_compression='gzip' # What would you like to be mailed to you? # - log : send only log file # - files : send log file and sql files as attachments (see docs) # - stdout : will simply output the log to the screen if run manually. # - quiet : Only send logs if an error occurs to the MAILADDR. CONFIG_mailcontent='quiet' # Email Address to send mail to? ([email protected]) CONFIG_mail_address='root' # Do you wish to encrypt your backups using openssl? #CONFIG_encrypt='no' # Choose a password to encrypt the backups. #CONFIG_encrypt_password='password0123' # Command to run before backups (uncomment to use) #CONFIG_prebackup="/etc/mysql-backup-pre" # Command run after backups (uncomment to use) #CONFIG_postbackup="/etc/mysql-backup-post"
След като конфигурирате automysqlbackup според вашите нужди, силно препоръчваме да разгледате README файл, намерен в /etc/automysqlbackup/README .
Архивиране на MySQL база данни
6. Когато сте готови, продължете и стартирайте програмата, предавайки конфигурационния файл като аргумент:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Бърза проверка на ежедневнита директория ще покаже, че automysqlbackup стартира успешно:
# pwd # ls -lR daily
Разбира се, можете да добавите запис в crontab, за да стартирате automysqlbackup в момент от деня, който най-добре отговаря на вашите нужди (1:30 съм всеки ден в примера по-долу):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Възстановяване на резервно копие на MySQL
7. Сега нека пуснем mariadb_db база данни по предназначение:
Нека го създадем отново и възстановим архива. В подканата на MariaDB въведете:
CREATE DATABASE mariadb_db; exit
След това намерете:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
И възстановете резервното копие:
# mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql # mysql -u root -p MariaDB [(none)]> USE mariadb_db; MariaDB [(none)]> SELECT * FROM tecmint_tb1;
Инсталиране и конфигуриране на autopostgresqlbackup в CentOS 7
8. За да заautopostgresql за да работи безупречно в CentOS 7 , първо ще трябва да инсталираме някои зависимости:
# yum install mutt sendmail
След това нека повторим процеса както преди:
# mkdir /opt/autopostgresqlbackup # cd /opt/autopostgresqlbackup # wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0 # mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Нека направим скрипта изпълним и започнем /активиране услугата:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Накрая ще редактираме стойността на настройката на резервната директория на:
autopostgresqlbackup.sh - Конфигуриране на AutopostgresqlbackupBACKUPDIR="/var/backup/db/autopostgresqlbackup"
След като преминете през конфигурационния файл на automysqlbackup , конфигурирането на този инструмент е много лесно (тази част от задачата остава на вас).
9. В CentOS 7 , за разлика от Debian 8 , autopostgresqlbackup е най-добре да се изпълнява като postgres системен потребител, така че за да направите това, трябва или да превключите към този акаунт, или да добавите задание на cron към неговия crontab файл:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Между другото, директорията за архивиране трябва да бъде създадена и нейните разрешения и собственост на групата трябва да бъдат зададени рекурсивно на 0770 и postgres (отново, това НЯМА да е необходимо в Debian ):
# mkdir /var/backup/db/autopostgresqlbackup # chmod -R 0770 /var/backup/db/autopostgresqlbackup # chgrp -R postgres /var/backup/db/autopostgresqlbackup
Резултатът:
# cd /var/backup/db/autopostgresqlbackup # pwd # ls -lR daily
10. Сега можете да възстановите файловете, когато е необходимо (не забравяйте да направите това като потребителски postgres след пресъздаване на празната база данни):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Съображения в Debian 8
Както споменахме по-рано, не само инсталирането на тези инструменти в Debian е по-просто, но и съответните им конфигурации. Ще намерите конфигурационните файлове в:
- Automysqlbackup :/etc/default/automysqlbackup
- Autopostgresqlbackup :/etc/default/autopostgresqlbackup
Резюме
В тази статия сме обяснили как да инсталирате и използвате automysqlbackup и autopostgresqlbackup (научаването как да използвате първия ще ви помогне да овладеете и втория), два страхотни инструмента за архивиране на база данни, които могат да улеснят задачите ви като DBA или системен администратор/инженер.
Моля, имайте предвид, че можете да разширите тази тема, като настроите известия по имейл или изпращане на архивни файлове като прикачени файлове по имейл – не е строго задължително, но понякога може да е полезно.
Като последна забележка, не забравяйте, че разрешенията на конфигурационните файлове трябва да бъдат настроени на минимум (0600 в повечето случаи). Очакваме с нетърпение да чуем какво мислите за тази статия. Чувствайте се свободни да ни изпратите бележка, като използвате формуляра по-долу.