Jeśli jesteś administratorem bazy danych (DBA ) lub odpowiadają za utrzymywanie, tworzenie kopii zapasowych i przywracanie baz danych, wiesz, że nie możesz sobie pozwolić na utratę danych. Powód jest prosty:utrata danych oznacza nie tylko utratę ważnych informacji, ale także może zaszkodzić Twojej firmie finansowo.
Z tego powodu należy zawsze upewnić się, że:
1. kopie zapasowe Twoich baz danych są tworzone okresowo,
2. te kopie zapasowe są przechowywane w bezpiecznym miejscu i
3. regularnie wykonujesz wiertła renowacyjne.
Nie należy przeoczyć tej ostatniej czynności, ponieważ nie chcesz napotkać poważnego problemu bez przećwiczenia tego, co należy zrobić w takiej sytuacji.
W tym samouczku przedstawimy dwa fajne narzędzia do tworzenia kopii zapasowych MySQL / MariaDB i PostgreSQL bazy danych, odpowiednio:automysqlbackup i autopostgresqlbackup .
Ponieważ ta ostatnia opiera się na pierwszym, skupimy się w naszym wyjaśnieniu na automysqlbackup i podkreśl różnice za pomocą autopgsqlbackup , jeśli w ogóle.
Zdecydowanie zaleca się przechowywanie kopii zapasowych w udziale sieciowym zamontowanym w katalogu kopii zapasowych, aby w przypadku awarii ogólnosystemowej nadal być objętym ochroną.
Przeczytaj następujące przydatne przewodniki dotyczące MySQL:
Podstawowe polecenia do administrowania bazami danych MySQLPolecenia tworzenia kopii zapasowych i przywracania danych MySQL dla administracji bazami danychphpMyBackupPro — internetowe narzędzie do tworzenia kopii zapasowych MySQLMySQLDumper:narzędzie do tworzenia kopii zapasowych baz danych MySQL oparte na PHP i Perl15 Podstawowe pytania do rozmowy kwalifikacyjnej MySQL dla administratorów baz danychInstalowanie baz danych MySQL / MariaDB / PostgreSQL
1. Ten przewodnik zakłada, że musisz mieć MySQL / MariaDB / PostgreSQL uruchomiona instancja. Jeśli nie, zainstaluj następujące pakiety:
Dystrybucje oparte na Fedorze:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian i pochodne:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Masz testowy MySQL / MariaDB / PostgreSQL bazy danych, z której możesz skorzystać (zaleca się NIE użyj automysqlbackup lub autopostgresqlbackup w środowisku produkcyjnym, dopóki nie zapoznasz się z tymi narzędziami).
W przeciwnym razie utwórz dwie przykładowe bazy danych i wypełnij je danymi przed kontynuowaniem. W tym artykule wykorzystam następujące bazy danych i tabele:
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);
Instalacja automysqlbackup i autopgsqlbackup w CentOS 7 i Debianie 8
3. W Debianie 8 , oba narzędzia są dostępne w repozytoriach, więc ich instalacja jest tak prosta jak uruchomienie:
# aptitude install automysqlbackup autopostgresqlbackup
Podczas gdy w CentOS 7 będziesz musiał pobrać skrypty instalacyjne i uruchomić je. W poniższych sekcjach skupimy się wyłącznie na instalowaniu, konfigurowaniu i testowaniu tych narzędzi w CentOS 7 ponieważ dla Debian 8 – tam, gdzie działają prawie po wyjęciu z pudełka, niezbędne wyjaśnienia przedstawimy w dalszej części tego artykułu.
Instalowanie i konfigurowanie automysqlbackup w CentOS 7
4. Zacznijmy od utworzenia katalogu roboczego w /opt
aby pobrać skrypt instalacyjny i go uruchomić:
# 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. Plik konfiguracyjny dla automysqlbackup znajduje się w /etc/automysqlbackup pod nazwą myserver.conf . Rzućmy okiem na najważniejsze dyrektywy konfiguracyjne:
myserver.conf – Skonfiguruj 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"
Po skonfigurowaniu automysqlbackup zgodnie z Twoimi potrzebami zdecydowanie zalecamy zapoznanie się z README plik znaleziony w /etc/automysqlbackup/README .
Kopia zapasowa bazy danych MySQL
6. Kiedy będziesz gotowy, uruchom program, przekazując plik konfiguracyjny jako argument:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Szybki przegląd dziennika katalog pokaże, że automysqlbackup został pomyślnie uruchomiony:
# pwd # ls -lR daily
Oczywiście możesz dodać wpis crontab, aby uruchomić automysqlbackup o porze dnia, która najlepiej odpowiada Twoim potrzebom (1:30 jestem codziennie w poniższym przykładzie):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Przywracanie kopii zapasowej MySQL
7. Teraz odrzućmy mariadb_db baza danych celowo:
Utwórzmy go ponownie i przywróćmy kopię zapasową. W wierszu poleceń MariaDB wpisz:
CREATE DATABASE mariadb_db; exit
Następnie zlokalizuj:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
I przywróć kopię zapasową:
# 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;
Instalowanie i konfigurowanie autopostgresqlbackup w CentOS 7
8. W celu autopostgresql pracować bezbłędnie w CentOS 7 , najpierw musimy zainstalować kilka zależności:
# yum install mutt sendmail
Następnie powtórzmy proces jak poprzednio:
# 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
Zróbmy skrypt wykonywalny i rozpocznij / włącz usługa:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Na koniec zmodyfikujemy wartość ustawienia katalogu kopii zapasowej na:
autopostgresqlbackup.sh - Skonfiguruj AutopostgresqlbackupBACKUPDIR="/var/backup/db/autopostgresqlbackup"
Po przejściu przez plik konfiguracyjny automysqlbackup , konfiguracja tego narzędzia jest bardzo łatwa (ta część zadania należy do Ciebie).
9. W CentOS 7 , w przeciwieństwie do Debian 8 , autopostgresqlbackup najlepiej działać jako postgres użytkownik systemu, więc w tym celu należy albo przełączyć się na to konto, albo dodać zadanie crona do jego pliku crontab:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Nawiasem mówiąc, katalog kopii zapasowej musi zostać utworzony, a jego uprawnienia i własność grupy muszą być ustawione rekursywnie na 0770 i postgres (ponownie, NIE będzie to konieczne w Debianie ):
# mkdir /var/backup/db/autopostgresqlbackup # chmod -R 0770 /var/backup/db/autopostgresqlbackup # chgrp -R postgres /var/backup/db/autopostgresqlbackup
Wynik:
# cd /var/backup/db/autopostgresqlbackup # pwd # ls -lR daily
10. Teraz możesz przywrócić pliki w razie potrzeby (pamiętaj, aby zrobić to jako postgres użytkownika po odtworzeniu pustej bazy danych):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Rozważania w Debianie 8
Jak wspomnieliśmy wcześniej, nie tylko instalacja tych narzędzi w Debianie jest prostsze, ale także ich odpowiednie konfiguracje. Pliki konfiguracyjne znajdziesz w:
- Automysqlbackup :/etc/default/automysqlbackup
- Autopostgresqlbackup :/etc/default/autopostgresqlbackup
Podsumowanie
W tym artykule wyjaśniliśmy, jak zainstalować i używać automysqlbackup i autopostgresqlbackup (nauczenie się korzystania z pierwszego pomoże Ci również opanować drugie), dwa świetne narzędzia do tworzenia kopii zapasowych baz danych, które mogą znacznie ułatwić zadania jako administratorowi/inżynierowi systemu lub administratorowi systemu.
Pamiętaj, że możesz rozwinąć ten temat, konfigurując powiadomienia e-mail lub wysyłanie plików kopii zapasowych jako załączników pocztą e-mail – nie jest to ściśle wymagane, ale czasami może się przydać.
Na koniec pamiętaj, że uprawnienia plików konfiguracyjnych powinny być ustawione na minimum (0600 w większości przypadków). Czekamy z niecierpliwością na to, co myślisz o tym artykule. Zachęcamy do wysłania nam notatki, korzystając z poniższego formularza.