sql >> Databasteknik >  >> RDS >> Mysql

Hur man säkerhetskopierar/återställer MySQL/MariaDB och PostgreSQL med hjälp av verktygen "Automysqlbackup" och "Autopostgresqlbackup"

Om du är databasadministratör (DBA ) eller ansvarar för att underhålla, säkerhetskopiera och återställa databaser, du vet att du inte har råd att förlora data. Anledningen är enkel:att förlora data innebär inte bara förlust av viktig information, utan kan också skada ditt företag ekonomiskt.

Av den anledningen måste du alltid se till att:

1. dina databaser säkerhetskopieras med jämna mellanrum,
2. dessa säkerhetskopior lagras på en säker plats, och
3. du utför restaureringsövningar regelbundet.

Denna sista aktivitet bör inte förbises, eftersom du inte vill stöta på ett stort problem utan att ha övat på vad som behöver göras i en sådan situation.

I den här handledningen kommer vi att introducera dig till två trevliga verktyg för att säkerhetskopiera MySQL / MariaDB och PostgreSQL databaser, respektive:automysqlbackup och autopostgresqlbackup .

Eftersom den senare är baserad på den förra kommer vi att fokusera vår förklaring på automysqlbackup och markera skillnader med autopgsqlbackup , om någon alls.

Det rekommenderas starkt att lagra säkerhetskopiorna i en nätverksresurs som är monterad i säkerhetskopieringskatalogen så att du fortfarande är täckt i händelse av en systemomfattande krasch.

Läs följande användbara guider om MySQL:

MySQL Basic Database Administration CommandsMySQL Backup and Restore Commands for Database AdministrationphpMyBackupPro – Ett webbaserat MySQL Backup ToolMySQLDumper:Ett PHP och Perl Baserat MySQL Databas Backup Tool15 Basic MySQL intervjufrågor för databasadministratörer

Installera MySQL / MariaDB / PostgreSQL-databaser

1. Den här guiden förutsätter att du måste ha MySQL / MariaDB / PostgreSQL instans som körs. Om inte, installera följande paket:

Fedora-baserade distributioner:

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

Debian och derivator:

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

2. Du har en testande MySQL / MariaDB / PostgreSQL databas som du kan använda (du rekommenderas att INTE använd antingen automysqlbackup eller autopostgresqlbackup i en produktionsmiljö tills du har bekantat dig med dessa verktyg).

Annars skapar du två exempeldatabaser och fyller i dem med data innan du fortsätter. I den här artikeln kommer jag att använda följande databaser och tabeller:

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

Installation av automysqlbackup och autopgsqlbackup i CentOS 7 och Debian 8

3. I Debian 8 , båda verktygen är tillgängliga i arkiven, så att installera dem är lika enkelt som att köra:

# aptitude install automysqlbackup autopostgresqlbackup

Medan i CentOS 7 du måste ladda ner installationsskripten och köra dem. I avsnitten nedan kommer vi att fokusera uteslutande på att installera, konfigurera och testa dessa verktyg på CentOS 7 sedan för Debian 8 – där de nästan fungerar ur lådan kommer vi att göra nödvändiga förtydliganden längre fram i denna artikel.

Installera och konfigurera automysqlbackup i CentOS 7

4. Låt oss börja med att skapa en arbetskatalog inuti /opt för att ladda ner installationsskriptet och köra det:

# 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. Konfigurationsfilen för automysqlbackup finns inuti /etc/automysqlbackup under namnet myserver.conf . Låt oss ta en titt på de flesta relevanta konfigurationsdirektiv:

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

När du har konfigurerat automysqlbackup enligt dina behov rekommenderar vi starkt att du kollar in README fil hittades i /etc/automysqlbackup/README .

MySQL Databas Backup

6. När du är redo, fortsätt och kör programmet och skicka in konfigurationsfilen som argument:

# automysqlbackup /etc/automysqlbackup/myserver.conf

En snabb inspektion av den dagliga katalogen visar att automysqlbackup har körts framgångsrikt:

# pwd
# ls -lR daily

Naturligtvis kan du lägga till en crontab-post för att köra automysqlbackup vid en tid på dagen som passar dina behov bäst (1:30 är varje dag i exemplet nedan):

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

Återställa en MySQL-säkerhetskopia

7. Låt oss nu släppa mariadb_db databas med avsikt:

Låt oss skapa den igen och återställa säkerhetskopian. I MariaDB-prompten skriver du:

CREATE DATABASE mariadb_db;
exit

Leta sedan upp:

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

Och återställ säkerhetskopian:

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

Installera och konfigurera autopostgresqlbackup i CentOS 7

8. För att autopostgresql att fungera felfritt i CentOS 7 , måste vi installera vissa beroenden först:

# yum install mutt sendmail

Låt oss sedan upprepa processen som tidigare:

# 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

Låt oss göra skriptet körbart och starta / aktivera tjänsten:

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

Slutligen kommer vi att redigera värdet för inställningen för backupkatalogen till:

autopostgresqlbackup.sh - Konfigurera Autopostgresqlbackup
BACKUPDIR="/var/backup/db/autopostgresqlbackup"

Efter att ha gått igenom konfigurationsfilen för automysqlbackup , att konfigurera det här verktyget är mycket enkelt (den delen av uppgiften är upp till dig).

9. I CentOS 7 , till skillnad från Debian 8 , autopostgresqlbackup körs bäst som postgres systemanvändare, så för att göra det bör du antingen byta till det kontot eller lägga till ett cron-jobb till dess crontab-fil:

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

Säkerhetskopieringskatalogen måste förresten skapas och dess behörigheter och gruppägande måste ställas in rekursivt till 0770 och postgres (igen, detta kommer INTE att vara nödvändigt i Debian ):

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

Resultatet:

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

10. Nu kan du återställa filerna när det behövs (kom ihåg att göra detta som användare postgres efter att ha återskapat den tomma databasen):

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

Överväganden i Debian 8

Som vi nämnde tidigare, inte bara installationen av dessa verktyg i Debian är enklare, men också deras respektive konfigurationer. Du hittar konfigurationsfilerna i:

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

Sammanfattning

I den här artikeln har vi förklarat hur du installerar och använder automysqlbackup och autopostgresqlbackup (att lära dig hur man använder den första hjälper dig också att bemästra den andra), två fantastiska databasverktyg för säkerhetskopiering som kan göra dina uppgifter som DBA eller systemadministratör/ingenjör mycket enklare.

Observera att du kan utöka detta ämne genom att ställa in e-postaviseringar eller skicka säkerhetskopior som bilagor via e-post – inte strikt nödvändigt, men kan vara praktiskt ibland.

Som en sista anmärkning, kom ihåg att behörigheterna för konfigurationsfiler bör ställas in på minimum (0600 i de flesta fallen). Vi ser fram emot att höra vad du tycker om den här artikeln. Skriv gärna en kommentar till oss genom att använda formuläret nedan.


  1. Förstå 'datetimeoffset' lagringsstorlek i SQL Server

  2. Så här ändrar du lagringsperiod för ändring av datainsamling (CDC) i SQL Server - självstudiekurs för SQL Server

  3. MySQL-anslutningsfråga med liknande?

  4. Förbereda en MySQL- eller MariaDB-server för produktion - del ett