Hvis du er databaseadministrator (DBA ) eller er ansvarlige for at vedligeholde, sikkerhedskopiere og gendanne databaser, ved du, at du ikke har råd til at miste data. Årsagen er enkel:tab af data betyder ikke kun tab af vigtig information, men kan også skade din virksomhed økonomisk.
Af den grund skal du altid sikre dig, at:
1. dine databaser sikkerhedskopieres med jævne mellemrum,
2. disse sikkerhedskopier gemmes et sikkert sted, og
3. du udfører restaureringsøvelser regelmæssigt.
Denne sidste aktivitet bør ikke overses, da du ikke ønsker at løbe ind i et stort problem uden at have øvet dig i, hvad der skal gøres i en sådan situation.
I denne vejledning vil vi introducere dig til to gode værktøjer til at sikkerhedskopiere MySQL / MariaDB og PostgreSQL databaser, henholdsvis:automysqlbackup og autopostgresqlbackup .
Da sidstnævnte er baseret på førstnævnte, vil vi fokusere vores forklaring på automysqlbackup og fremhæve forskelle med autopgsqlbackup , hvis nogen overhovedet.
Det anbefales kraftigt at gemme sikkerhedskopierne i en netværksshare, der er monteret i sikkerhedskopieringsmappen, så du stadig er dækket i tilfælde af et system-dækkende nedbrud.
Læs følgende nyttige vejledninger om MySQL:
MySQL Basic Database Administration CommandsMySQL Backup and Restore Commands for Database AdministrationphpMyBackupPro – Et webbaseret MySQL Backup ToolMySQLDumper:Et PHP og Perl Baseret MySQL Database Backup Tool15 Grundlæggende MySQL interviewspørgsmål til databaseadministratorerInstallation af MySQL / MariaDB / PostgreSQL-databaser
1. Denne vejledning antager, at du skal have MySQL / MariaDB / PostgreSQL instans kører. Hvis ikke, installer venligst følgende pakker:
Fedora-baserede distributioner:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian og derivater:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Du har en test MySQL / MariaDB / PostgreSQL database, som du kan bruge (du rådes til IKKE brug enten automysqlbackup eller autopostgresqlbackup i et produktionsmiljø, indtil du har stiftet bekendtskab med disse værktøjer).
Ellers skal du oprette to eksempeldatabaser og udfylde dem med data, før du fortsætter. I denne artikel vil jeg bruge følgende databaser og tabeller:
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);
Installation af automysqlbackup og autopgsqlbackup i CentOS 7 og Debian 8
3. I Debian 8 , begge værktøjer er tilgængelige i arkiverne, så det er lige så enkelt at installere dem som at køre:
# aptitude install automysqlbackup autopostgresqlbackup
Hvorimod i CentOS 7 du skal downloade installationsscripts og køre dem. I afsnittene nedenfor vil vi udelukkende fokusere på at installere, konfigurere og teste disse værktøjer på CentOS 7 siden for Debian 8 – hvor de nærmest fungerer ud af boksen, vil vi lave de nødvendige præciseringer senere i denne artikel.
Installation og konfiguration af automysqlbackup i CentOS 7
4. Lad os begynde med at oprette en arbejdsmappe inde i /opt
for at downloade installationsscriptet og køre 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 for automysqlbackup er placeret inde i /etc/automysqlbackup under navnet myserver.conf . Lad os tage et kig på de fleste relevante konfigurationsdirektiver:
myserver.conf – Konfigurer 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 konfigureret automysqlbackup i henhold til dine behov, råder du kraftigt til at tjekke README fil fundet i /etc/automysqlbackup/README .
MySQL Database Backup
6. Når du er klar, skal du gå videre og køre programmet og sende konfigurationsfilen som argument:
# automysqlbackup /etc/automysqlbackup/myserver.conf
En hurtig inspektion af den daglige mappen vil vise, at automysqlbackup har kørt med succes:
# pwd # ls -lR daily
Selvfølgelig kan du tilføje en crontab-indgang for at køre automysqlbackup på det tidspunkt på dagen, der passer bedst til dine behov (1:30 er hver dag i nedenstående eksempel):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Gendannelse af en MySQL-sikkerhedskopi
7. Lad os nu droppe mariadb_db database med vilje:
Lad os oprette det igen og gendanne sikkerhedskopien. I MariaDB-prompten skal du skrive:
CREATE DATABASE mariadb_db; exit
Find derefter:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
Og gendan sikkerhedskopien:
# 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;
Installation og konfiguration af autopostgresqlbackup i CentOS 7
8. For at autopostgresql at fungere fejlfrit i CentOS 7 , bliver vi nødt til at installere nogle afhængigheder først:
# yum install mutt sendmail
Lad os derefter gentage processen som før:
# 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
Lad os gøre scriptet eksekverbart og starte / aktiver tjenesten:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Til sidst vil vi redigere værdien af indstillingen af sikkerhedskopibiblioteket til:
autopostgresqlbackup.sh - Konfigurer AutopostgresqlbackupBACKUPDIR="/var/backup/db/autopostgresqlbackup"
Efter at have gennemgået konfigurationsfilen for automysqlbackup , er det meget nemt at konfigurere dette værktøj (den del af opgaven er overladt til dig).
9. I CentOS 7 , i modsætning til Debian 8 , autopostgresqlbackup køres bedst som postgres systembruger, så for at gøre det skal du enten skifte til den konto eller tilføje et cron-job til dens crontab-fil:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Sikkerhedskopieringsbiblioteket skal i øvrigt oprettes, og dets tilladelser og gruppeejerskab skal indstilles rekursivt til 0770 og postgres (igen, dette vil IKKE være nødvendigt 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 gendanne filerne efter behov (husk at gøre dette som bruger postgres efter genskabelse af den tomme database):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Overvejelser i Debian 8
Som vi nævnte tidligere, ikke kun installationen af disse værktøjer i Debian er mere ligetil, men også deres respektive konfigurationer. Du finder konfigurationsfilerne i:
- Automysqlbackup :/etc/default/automysqlbackup
- Autopostgresqlbackup :/etc/default/autopostgresqlbackup
Oversigt
I denne artikel har vi forklaret, hvordan du installerer og bruger automysqlbackup og autopostgresqlbackup (at lære at bruge den første vil også hjælpe dig med at mestre den anden), to fantastiske database backup værktøjer, der kan gøre dine opgaver som DBA eller systemadministrator/ingeniør meget nemmere.
Bemærk venligst, at du kan udvide dette emne ved at konfigurere e-mail-meddelelser eller afsendelse af sikkerhedskopifiler som vedhæftede filer via e-mail – ikke strengt påkrævet, men kan nogle gange være praktisk.
Som en sidste bemærkning skal du huske, at tilladelserne for konfigurationsfiler skal sættes til minimum (0600 i de fleste tilfælde). Vi glæder os til at høre, hvad du synes om denne artikel. Du er velkommen til at sende os en note ved at bruge formularen nedenfor.