Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wykonać kopię zapasową/przywrócić MySQL/MariaDB i PostgreSQL za pomocą narzędzi „Automysqlbackup” i „Autopostgresqlbackup”

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 danych

Instalowanie 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/MariaDB
CREATE 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 Autopostgresqlbackup
BACKUPDIR="/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:

  1. Automysqlbackup :/etc/default/automysqlbackup
  2. 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie zmiennej w klauzuli LIMIT w MySQL

  2. Amazon EC2, mysql przerywa start, ponieważ InnoDB:mmap (x bajtów) nie powiodło się; errno 12

  3. MySQL/MariaDB - uporządkuj według podzapytania wewnątrz

  4. Konwersja MySQL_TZ()

  5. Typ MySQL ENUM a dołączanie tabel