Nếu bạn là quản trị viên cơ sở dữ liệu ( DBA ) hoặc chịu trách nhiệm duy trì, sao lưu và khôi phục cơ sở dữ liệu, bạn biết mình không thể để mất dữ liệu. Lý do rất đơn giản:mất dữ liệu không chỉ có nghĩa là mất thông tin quan trọng mà còn có thể gây thiệt hại về tài chính cho doanh nghiệp của bạn.
Vì lý do đó, bạn phải luôn đảm bảo rằng:
1. cơ sở dữ liệu của bạn được sao lưu định kỳ,
2. những bản sao lưu đó được lưu trữ ở một nơi an toàn và
3. bạn thực hiện các cuộc diễn tập khôi phục thường xuyên.
Không nên bỏ qua hoạt động cuối cùng này, vì bạn không muốn gặp phải một vấn đề lớn mà không thực hành những gì cần phải làm trong tình huống như vậy.
Trong hướng dẫn này, chúng tôi sẽ giới thiệu cho bạn hai tiện ích hay để sao lưu MySQL / MariaDB và PostgreSQL cơ sở dữ liệu, tương ứng: automysqlbackup và autopostgresqlbackup .
Vì cái sau dựa trên cái trước, chúng tôi sẽ tập trung giải thích về automysqlbackup và đánh dấu sự khác biệt với autopgsqlbackup , nếu có.
Bạn nên lưu trữ các bản sao lưu trong một mạng chia sẻ được gắn trong thư mục sao lưu để trong trường hợp xảy ra sự cố trên toàn hệ thống, bạn vẫn được bảo vệ.
Đọc các hướng dẫn hữu ích sau về MySQL:
Các lệnh quản trị cơ sở dữ liệu MySQL cơ bản Lệnh sao lưu và khôi phục MySQL cho quản trị cơ sở dữ liệuphpMyBackupPro - Một công cụ sao lưu MySQL dựa trên webMySQLDumper:Một công cụ sao lưu cơ sở dữ liệu MySQL dựa trên PHP và Perl15 Câu hỏi phỏng vấn MySQL cơ bản dành cho quản trị viên cơ sở dữ liệuCài đặt Cơ sở dữ liệu MySQL / MariaDB / PostgreSQL
1. Hướng dẫn này giả định rằng bạn phải có MySQL / MariaDB / PostgreSQL phiên bản đang chạy, Nếu không, vui lòng cài đặt các gói sau:
Các bản phân phối dựa trên Fedora:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian và các dẫn xuất:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Bạn có một thử nghiệm MySQL / MariaDB / PostgreSQL cơ sở dữ liệu mà bạn có thể sử dụng (bạn nên KHÔNG sử dụng automysqlbackup hoặc autopostgresqlbackup trong môi trường sản xuất cho đến khi bạn làm quen với các công cụ này).
Nếu không, hãy tạo hai cơ sở dữ liệu mẫu và điền chúng vào dữ liệu trước khi tiếp tục. Trong bài viết này, tôi sẽ sử dụng các cơ sở dữ liệu và bảng sau:
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);
Cài đặt automysqlbackup và autopgsqlbackup trong CentOS 7 và Debian 8
3. Trong Debian 8 , cả hai công cụ đều có sẵn trong kho, vì vậy việc cài đặt chúng cũng đơn giản như chạy:
# aptitude install automysqlbackup autopostgresqlbackup
Trong khi đó trong CentOS 7 bạn sẽ cần tải xuống các tập lệnh cài đặt và chạy chúng. Trong các phần bên dưới, chúng tôi sẽ tập trung hoàn toàn vào việc cài đặt, định cấu hình và thử nghiệm các công cụ này trên CentOS 7 kể từ cho Debian 8 - nơi chúng gần như hoạt động hiệu quả, chúng tôi sẽ làm rõ những điều cần thiết sau trong bài viết này.
Cài đặt và định cấu hình automysqlbackup trong CentOS 7
4. Hãy để chúng tôi bắt đầu bằng cách tạo một thư mục làm việc bên trong /opt
để tải xuống tập lệnh cài đặt và chạy nó:
# 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. Tệp cấu hình cho automysqlbackup nằm bên trong / etc / automysqlbackup dưới tên myserver.conf . Hãy xem xét hầu hết các hướng dẫn cấu hình có liên quan:
myserver.conf - Định cấu hình 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"
Sau khi bạn đã định cấu hình automysqlbackup theo nhu cầu của bạn, chúng tôi khuyên bạn nên xem README tệp được tìm thấy trong / etc / automysqlbackup / README .
Sao lưu cơ sở dữ liệu MySQL
6. Khi bạn đã sẵn sàng, hãy tiếp tục và chạy chương trình, chuyển tệp cấu hình làm đối số:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Kiểm tra nhanh hàng ngày thư mục sẽ hiển thị rằng automysqlbackup đã chạy thành công:
# pwd # ls -lR daily
Tất nhiên, bạn có thể thêm mục nhập crontab để chạy automysqlbackup vào thời điểm trong ngày phù hợp nhất với nhu cầu của bạn ( 1:30 sáng mỗi ngày trong ví dụ dưới đây):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Khôi phục bản sao lưu MySQL
7. Bây giờ, hãy thả mariadb_db cơ sở dữ liệu về mục đích:
Hãy tạo lại và khôi phục bản sao lưu. Trong lời nhắc MariaDB, nhập:
CREATE DATABASE mariadb_db; exit
Sau đó xác định vị trí:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
Và khôi phục bản sao lưu:
# 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;
Cài đặt và định cấu hình autopostgresqlbackup trong CentOS 7
8. Để autopostgresql để hoạt động hoàn hảo trong CentOS 7 , chúng tôi sẽ cần cài đặt một số phụ thuộc trước:
# yum install mutt sendmail
Sau đó, hãy lặp lại quy trình như trước:
# 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
Hãy làm cho tập lệnh có thể thực thi và bắt đầu / kích hoạt dịch vụ:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Cuối cùng, chúng tôi sẽ chỉnh sửa giá trị của cài đặt thư mục sao lưu thành:
autopostgresqlbackup.sh - Định cấu hình AutopostgresqlbackupBACKUPDIR="/var/backup/db/autopostgresqlbackup"
Sau khi thông qua tệp cấu hình của automysqlbackup , việc định cấu hình công cụ này rất dễ dàng (phần nhiệm vụ đó là tùy thuộc vào bạn).
9. Trong CentOS 7 , trái ngược với Debian 8 , autopostgresqlbackup tốt nhất là chạy dưới dạng postgres người dùng hệ thống, vì vậy, để làm điều đó, bạn nên chuyển sang tài khoản đó hoặc thêm cron job vào tệp crontab của nó:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Nhân tiện, cần tạo thư mục sao lưu và các quyền của nó cũng như quyền sở hữu nhóm phải được đặt đệ quy thành 0770 và postgres (một lần nữa, điều này KHÔNG cần thiết trong Debian ):
# mkdir /var/backup/db/autopostgresqlbackup # chmod -R 0770 /var/backup/db/autopostgresqlbackup # chgrp -R postgres /var/backup/db/autopostgresqlbackup
Kết quả:
# cd /var/backup/db/autopostgresqlbackup # pwd # ls -lR daily
10. Giờ đây, bạn có thể khôi phục các tệp khi cần thiết (hãy nhớ làm điều này khi người dùng đăng bài sau khi tạo lại cơ sở dữ liệu trống):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Cân nhắc trong Debian 8
Như chúng tôi đã đề cập trước đó, không chỉ cài đặt các công cụ này trong Debian đơn giản hơn, nhưng cũng là cấu hình tương ứng của chúng. Bạn sẽ tìm thấy các tệp cấu hình trong:
- Automysqlbackup :/ etc / default / automysqlbackup
- Autopostgresqlbackup :/ etc / default / autopostgresqlbackup
Tóm tắt
Trong bài viết này, chúng tôi đã giải thích cách cài đặt và sử dụng automysqlbackup và autopostgresqlbackup (học cách sử dụng công cụ đầu tiên cũng sẽ giúp bạn thành thạo công cụ thứ hai), hai công cụ sao lưu cơ sở dữ liệu tuyệt vời có thể làm cho các nhiệm vụ của bạn với tư cách là một DBA hoặc quản trị viên / kỹ sư hệ thống dễ dàng hơn nhiều.
Xin lưu ý rằng bạn có thể mở rộng về chủ đề này bằng cách thiết lập thông báo qua email hoặc gửi các tệp sao lưu dưới dạng tệp đính kèm qua email - không bắt buộc phải có, nhưng đôi khi có thể hữu ích.
Lưu ý cuối cùng, hãy nhớ rằng quyền của tệp cấu hình phải được đặt ở mức tối thiểu ( 0600 trong hầu hết các trường hợp). Chúng tôi mong muốn được nghe những gì bạn nghĩ về bài viết này. Vui lòng gửi cho chúng tôi một ghi chú bằng cách sử dụng biểu mẫu bên dưới.