sql >> Databáze >  >> RDS >> Mysql

Jak zálohovat/obnovit MySQL/MariaDB a PostgreSQL pomocí nástrojů „Automysqlbackup“ a „Autopostgresqlbackup“

Pokud jste správce databáze (DBA ) nebo jsou zodpovědní za údržbu, zálohování a obnovu databází, víte, že si nemůžete dovolit přijít o data. Důvod je jednoduchý:ztráta dat znamená nejen ztrátu důležitých informací, ale také může finančně poškodit vaši firmu.

Z toho důvodu se musíte vždy ujistit, že:

1. vaše databáze jsou pravidelně zálohovány,
2. tyto zálohy jsou uloženy na bezpečném místě a
3. pravidelně provádíte restaurátorská cvičení.

Tuto poslední aktivitu byste neměli přehlížet, protože se nechcete dostat do zásadního problému, aniž byste si nacvičili, co je v takové situaci potřeba udělat.

V tomto tutoriálu vám představíme dva pěkné nástroje pro zálohování MySQL / MariaDB a PostgreSQL databází:automysqlbackup a autopostgresqlbackup .

Protože druhý je založen na prvním, zaměříme se v našem vysvětlení na automysqlbackup a zvýrazněte rozdíly pomocí autopgsqlbackup , pokud vůbec nějaké.

Důrazně se doporučuje ukládat zálohy do sdílené síťové složky připojené v adresáři záloh, abyste v případě selhání celého systému byli stále chráněni.

Přečtěte si následující užitečné průvodce MySQL:

Základní příkazy pro správu databáze MySQL Příkazy pro zálohování a obnovení MySQL pro správu databázephpMyBackupPro – Webový nástroj pro zálohování MySQLMySQLDumper:Nástroj pro zálohování databáze MySQL založený na PHP a Perlu15 Základní otázky k rozhovoru s MySQL pro správce databáze

Instalace databází MySQL / MariaDB / PostgreSQL

1. Tato příručka předpokládá, že musíte mít MySQL / MariaDB / PostgreSQL instance běží, Pokud ne, nainstalujte si prosím následující balíčky:

Distribuce založené na Fedoře:

# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs

Debian a odvozeniny:

# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Máte testovací MySQL / MariaDB / PostgreSQL databázi, kterou můžete použít (doporučujeme NE použijte buď automysqlbackup nebo autopostgresqlbackup v produkčním prostředí, dokud se s těmito nástroji neseznámíte).

V opačném případě vytvořte dvě vzorové databáze a naplňte je daty, než budete pokračovat. V tomto článku budu používat následující databáze a tabulky:

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);

Instalace automysqlbackup a autopgsqlbackup v CentOS 7 a Debian 8

3. V Debianu 8 , oba nástroje jsou k dispozici v repozitářích, takže jejich instalace je stejně jednoduchá jako spuštění:

# aptitude install automysqlbackup autopostgresqlbackup

Zatímco v CentOS 7 budete si muset stáhnout instalační skripty a spustit je. V níže uvedených částech se zaměříme výhradně na instalaci, konfiguraci a testování těchto nástrojů na CentOS 7 od pro Debian 8 – tam, kde téměř fungují po vybalení z krabice, provedeme nezbytná objasnění později v tomto článku.

Instalace a konfigurace automysqlbackup v CentOS 7

4. Začněme vytvořením pracovního adresáře v /opt stáhnout instalační skript a spustit jej:

# 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. Konfigurační soubor pro automysqlbackup je umístěn uvnitř /etc/automysqlbackup pod názvem mujserver.conf . Podívejme se na nejrelevantnější konfigurační směrnice:

myserver.conf – Konfigurace 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"

Jakmile nakonfigurujete automysqlbackup podle vašich potřeb důrazně doporučujeme, abyste si prohlédli README soubor nalezený v /etc/automysqlbackup/README .

Zálohování databáze MySQL

6. Až budete připraveni, pokračujte a spusťte program a předejte konfigurační soubor jako argument:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Rychlá kontrola denní adresář zobrazí, že automysqlbackup proběhl úspěšně:

# pwd
# ls -lR daily

Samozřejmě můžete přidat položku crontab pro spuštění automysqlbackup v denní dobu, která nejlépe vyhovuje vašim potřebám (1:30 v níže uvedeném příkladu jsem každý den):

30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Obnovení zálohy MySQL

7. Nyní vynecháme mariadb_db databáze schválně:

Vytvoříme jej znovu a obnovíme zálohu. Do řádku MariaDB zadejte:

CREATE DATABASE mariadb_db;
exit

Poté vyhledejte:

# cd /var/backup/db/automysqlbackup/daily/mariadb_db
# ls

A obnovte zálohu:

# 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;

Instalace a konfigurace autopostgresqlbackup v CentOS 7

8. Aby autopostgresql bezchybně fungovat v CentOS 7 , budeme muset nejprve nainstalovat některé závislosti:

# yum install mutt sendmail

Poté zopakujeme postup jako předtím:

# 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

Udělejme skript spustitelným a spusťte / povolit služba:

# chmod 755 autopostgresqlbackup.sh
# systemctl start postgresql
# systemctl enable postgresql

Nakonec upravíme hodnotu nastavení záložního adresáře na:

autopostgresqlbackup.sh – Konfigurace Autopostgresqlbackup
BACKUPDIR="/var/backup/db/autopostgresqlbackup"

Po provedení konfiguračního souboru automysqlbackup , konfigurace tohoto nástroje je velmi snadná (tato část úkolu je ponechána na vás).

9. V CentOS 7 , na rozdíl od Debianu 8 , autopostgresqlbackup je nejlepší spustit jako postgres systémový uživatel, takže abyste to mohli udělat, měli byste se buď přepnout na tento účet, nebo přidat úlohu cron do jeho souboru crontab:

# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Mimochodem, záložní adresář je třeba vytvořit a jeho oprávnění a vlastnictví skupiny musí být nastaveno rekurzivně na 0770 a postgres (Opět to NEBUDE nutné v Debianu ):

# mkdir /var/backup/db/autopostgresqlbackup
# chmod -R 0770 /var/backup/db/autopostgresqlbackup
# chgrp -R postgres /var/backup/db/autopostgresqlbackup

Výsledek:

# cd /var/backup/db/autopostgresqlbackup
# pwd
# ls -lR daily

10. Nyní můžete soubory v případě potřeby obnovit (nezapomeňte to udělat jako uživatel postgres po opětovném vytvoření prázdné databáze):

# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db

Úvahy o Debianu 8

Jak jsme již zmínili, nejen instalace těchto nástrojů v Debianu je jednodušší, ale také jejich příslušné konfigurace. Konfigurační soubory naleznete v:

  1. Automysqlbackup :/etc/default/automysqlbackup
  2. Autopostgresqlbackup :/etc/default/autopostgresqlbackup

Shrnutí

V tomto článku jsme vysvětlili, jak nainstalovat a používat automysqlbackup a autopostgresqlbackup (naučení se, jak používat první, vám pomůže zvládnout i druhý), dva skvělé nástroje pro zálohování databází, které vám mohou velmi usnadnit úkoly jako DBA nebo správce/inženýr systému.

Upozorňujeme, že toto téma můžete rozšířit nastavením e-mailových upozornění nebo odesílání záložních souborů jako příloh e-mailem – není to nezbytně nutné, ale někdy se může hodit.

Jako poslední poznámku nezapomeňte, že oprávnění konfiguračních souborů by měla být nastavena na minimum (0600 většinou). Těšíme se na váš názor na tento článek. Neváhejte nám napsat poznámku pomocí formuláře níže.


  1. Existuje nějaká hashovací funkce v PL/SQL?

  2. Automatická správa indexů v Azure SQL Database

  3. Základní správa MaxScale pomocí MaxCtrl pro MariaDB Cluster – část druhá

  4. Souhrnná funkce v dotazu aktualizace SQL?