Các giải pháp được mô tả ở đây hoạt động cho bất kỳ bản phân phối Linux nào: Ubuntu, Red Hat, Open SUSE, CentOS, Debian, Oracle Linux, v.v. Tuy nhiên, các lệnh cài đặt gói có thể khác nhau.
Việc tự động sao lưu cơ sở dữ liệu MySQL Server là rất quan trọng để ngăn ngừa mất mát dữ liệu. Để tự động hóa các bản sao lưu đúng cách, bạn phải làm theo các bước sau:
Bài viết này có 2 giải pháp:
Trong hầu hết các trường hợp, một tập lệnh bash là một giải pháp tốt. Tuy nhiên, không phải tất cả các vị trí lưu trữ đều cho phép bạn tải tệp lên bằng lệnh shell. Tuy nhiên, nếu tất cả những gì bạn muốn làm là lưu các bản sao lưu vào một thư mục, thì bạn có thể thực hiện việc này bằng cách sử dụng một tập lệnh đơn giản.
Để thiết lập giải pháp này, chúng ta cần cài đặt mailutils postfix . Trong Ubuntu, chúng ta có thể thực hiện việc này như sau:
sudo apt-get update
sudo apt-get install postfix mailutils
Sau đây là cách triển khai đơn giản nhất của tập lệnh bash để thực hiện sao lưu thông thường. Ở phần đầu của script, chúng tôi chỉ định thư mục lưu trữ sao lưu, địa chỉ email thông báo và khoảng thời gian lưu trữ sao lưu.
# Backup storage directory
backupfolder=/var/backups
# Notification email address
recipient_email=<username@mail.com>
# MySQL user
user=<user_name>
# MySQL password
password=<password>
# Number of days to store the backup
keep_day=30
sqlfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).zip
# Create a backup
sudo mysqldump -u $user -p$password --all-databases > $sqlfile
if [ $? == 0 ]; then
echo 'Sql dump created'
else
echo 'mysqldump return non-zero code' | mailx -s 'No backup was created!' $recipient_email
exit
fi
# Compress backup
zip $zipfile $sqlfile
if [ $? == 0 ]; then
echo 'The backup was successfully compressed'
else
echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email
exit
fi
rm $sqlfile
echo $zipfile | mailx -s 'Backup was successfully created' $recipient_email
# Delete old backups
find $backupfolder -mtime +$keep_day -delete
Cron cho phép bạn lập lịch chạy script này thường xuyên. Để tạo điều kiện thuận lợi cho việc này, hãy làm như sau:
sudo crontab -e
Sau đó, thêm đường dẫn tập lệnh vào cuối chuỗi
30 22 * * * /home/user/script/mysql_backup.sh
Sau đó, tập lệnh của bạn sẽ được thực thi hàng ngày vào lúc 10:30 tối.
Tạo tập lệnh bash là một giải pháp tốt và đơn giản nếu bạn biết bash và cách hỗ trợ nó. Tuy nhiên, giải pháp này cũng kéo theo những nhược điểm nhất định. Bạn sẽ thấy rằng rất khó để định cấu hình lưu các bản sao lưu vào Google Drive hoặc DropBox. Lưu trữ đám mây hiếm khi hỗ trợ giao diện CLI. Ngoài ra, nó có thể là một nhiệm vụ khó khăn để thực hiện xóa tự động các bản sao lưu cũ.
AutoMySQLBackup là một tiện ích dòng lệnh được phân phối theo giấy phép GNU.
Tiện ích này cho phép bạn tự động hóa quá trình sao lưu cho cơ sở dữ liệu MySQL và nó cũng cho phép bạn thực hiện sao lưu gia tăng.
Nếu bản phân phối Linux của bạn là Debian, thì AutoMySQLBackup có sẵn trong kho lưu trữ
và bạn có thể cài đặt nó đơn giản bằng cách chạy lệnh sau:
sudo apt-get install automysqlbackup
Nếu bản phân phối Linux của bạn dựa trên RPM, quá trình thiết lập sẽ liên quan nhiều hơn một chút.
1. Tải xuống phiên bản AutoMySQLBackup mới nhất
wget https://github.com/sixhop/AutoMySQLBackup/archive/master.zip
2. Tạo một thư mục và giải nén kho lưu trữ đã tải xuống
mkdir /opt/automysqlbackup
mv AutoMySQLBackup-master.zip
cd /opt/automysqlbackup
tar -zxvf AutoMySQLBackup-master.zip
3. Sau đó cài đặt AutoMySQLBackup
mkdir /opt/automysqlbackup
mv AutoMySQLBackup-master.zip
cd /opt/automysqlbackup
tar -zxvf AutoMySQLBackup-master.zip
Để cấu hình AutoMySQLBackup, bạn phải chỉnh sửa tệp automysqlbackup.conf:
sudo nano /etc/automysqlbackup/automysqlbackup.conf
Xin lưu ý những điều sau:
1. Đường dẫn đến tệp cấu hình
CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"
2. Đường dẫn đến thư mục lưu trữ sao lưu
CONFIG_backup_dir='/var/backup/db'
3. Thông tin kết nối với MySQL
CONFIG_mysql_dump_username='root'
CONFIG_mysql_dump_password='my_password'
CONFIG_mysql_dump_host='localhost'
4. Danh sách cơ sở dữ liệu bạn cần hoặc không cần sao lưu
CONFIG_db_names=('my_db')
CONFIG_db_exclude=('information_schema')
5. Địa chỉ thông báo qua email
CONFIG_mail_address='mail@google.com'
6. Các tùy chọn để lên lịch
CONFIG_rotation_daily=6
CONFIG_rotation_weekly=35
CONFIG_rotation_monthly=150
7. Chạy tập lệnh bash sau khi sao lưu
POSTBACKUP="/etc/mysql-backup-post"
Nếu bạn định lưu trữ các bản sao lưu trong một số ngày giới hạn, thì bạn có thể xóa các bản sao lưu bằng cách định cấu hình tập lệnh POSTBACKUP như sau:
# Delete backups that are older than 30 days
find /var/backup/db -mtime +30 -delete
By default, AutoMySQLBackup will compress the files using “gzip.” You can change this by editing the CONFIG_mysql_dump_compression parameter. If you want to add encryption, then use the CONFIG_encrypt and CONFIG_encrypt_password parameters.
To run AutoMySqlBackup execute the following command:
automysqlbackup /etc/automysqlbackup/automysqlbackup.conf
This solution can be a good alternative if you are not a bash power user and want a simple solution for backing up MySQL databases to a folder. One particularly notable feature is the ability to create incremental backups. The disadvantages of this solution include lack of support for integrated FTP and cloud storage locations. Even if you just want to upload to FTP, you need to write a separate bash script.
Nguồn: https://sqlbak.com/blog/how-to-automate-mysql-database-backups-in-linux
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE