Cách sao lưu cơ sở dữ liệu MySQL bằng AutoMySQLBackup

Giới thiệu

MySQL cung cấp tiện ích dòng lệnh mysqldump, để xuất cơ sở dữ liệu dưới dạng SQL thô. Thay vì chạy mysqldump theo cách thủ công, bạn có thể cài đặt một tập lệnh sẽ tự động chạy mysqldump mỗi ngày trên tất cả cơ sở dữ liệu của bạn. Một trong những tập lệnh phổ biến nhất là automysqlbackup.

Bước một: Cài đặt AutoMySQLBackup

Bạn có thể cài đặt AutoMySQLBackup từ kho Ubuntu bằng cách chạy lệnh sau với quyền root:

sudo apt-get install automysqlbackup

Sau khi cài đặt, tập lệnh sẽ tự động chạy mỗi ngày một lần. Bản sao lưu sẽ được lưu trữ trong thư mục:

/var/lib/automysqlbackup

Bước hai: Xác minh AutoMySQLBackup

Để xác minh AutoMySQLBackup đã được định cấu hình đúng cách, bạn có thể chạy nó theo cách thủ công thay vì đợi nó chạy lần đầu tiên.

Để chạy AutoMySQLBackup theo cách thủ công, hãy thực hiện lệnh sau với quyền root:

sudo automysqlbackup

Bây giờ hãy liệt kê tất cả các tệp trong /var/lib/automysqlbackup:

$ ls -R /var/lib/automysqlbackup/ 
/var/lib/automysqlbackup/: 
daily monthly weekly
/var/lib/automysqlbackup/: 
information_schema performance_schema sys
/var/lib/automysqlbackup/daily/sys: 
sys_2023-12-03_06h48m.Sunday.sql.gz ...

Nếu mọi thứ hoạt động chính xác, bạn sẽ thấy các tệp .sql.gz trong danh sách như hiển thị ở trên.

Bạn cũng nên thường xuyên xác minh các tập tin sao lưu cơ sở dữ liệu của mình. Bạn cũng có thể cân nhắc việc thường xuyên sao chép các bản sao lưu cơ sở dữ liệu của mình sang một máy chủ khác.

Nếu bạn muốn thay đổi tùy chọn cấu hình, bạn có thể chỉnh sửa tệp này:

/etc/default/autosqlbackup

Tại đây, bạn có thể định cấu hình cơ sở dữ liệu mà bạn muốn sao lưu hoặc loại trừ khỏi quá trình sao lưu, v.v.

Để thay đổi tần suất chạy automysqlbackup, bạn có thể điều chỉnh cron job của nó.

Thông tin bổ sung về cấu hình automysqlbackup có thể được tìm thấy ở đây:

# Tên người dùng để truy cập máy chủ MySQL, ví dụ: dbuser
#CONFIG_mysql_dump_username='root'

# Mật khẩu để truy cập máy chủ MySQL, ví dụ: password
#CONFIG_mysql_dump_password=''

# Tên máy chủ (hoặc địa chỉ IP) của máy chủ MySQL, ví dụ: localhost
#CONFIG_mysql_dump_host='localhost'

# Vị trí thư mục sao lưu, ví dụ: /backups
#CONFIG_backup_dir='/var/backup/db'

# Danh sách cơ sở dữ liệu để sao lưu hàng ngày/hàng tuần, ví dụ: ( 'DB1' 'DB2' 'DB3' ... )
# đặt thành (), tức là trống, nếu bạn muốn sao lưu tất cả cơ sở dữ liệu
#CONFIG_db_names=()

# Danh sách cơ sở dữ liệu để sao lưu hàng tháng.
# đặt thành (), tức là trống, nếu bạn muốn sao lưu tất cả cơ sở dữ liệu
#CONFIG_db_month_names=()

# Danh sách TÊN DB cần LOẠI TRỪ nếu DBNAMES trống, tức là ().
#CONFIG_db_exclude=( 'information_schema' )

# Bạn muốn sao lưu hàng tháng vào ngày nào? (01 đến 31)
# Nếu ngày được chọn lớn hơn ngày cuối cùng của tháng
# thì sẽ thực hiện vào ngày cuối cùng của tháng.
# Đặt thành 0 để tắt sao lưu hàng tháng.
#CONFIG_do_monthly="01"

# Bạn muốn sao lưu hàng tuần vào ngày nào? (1 đến 7 trong đó 1 là thứ Hai)
# Đặt thành 0 để tắt sao lưu hàng tuần.
#CONFIG_do_weekly="5"

# Đặt vòng quay sao lưu hàng ngày. GIÁ TRỊ*24 giờ
# Nếu bạn chỉ muốn giữ lại các bản sao lưu của ngày hôm nay, bạn có thể chọn 1, 
# tức là mọi thứ cũ hơn 24 giờ sẽ bị xóa.
#CONFIG_rotation_daily=6

# Đặt vòng quay để sao lưu hàng tuần. GIÁ TRỊ*24 giờ
#CONFIG_rotation_weekly=35

# Đặt vòng quay để sao lưu hàng tháng. GIÁ TRỊ*24 giờ
#CONFIG_rotation_monthly=150

# Đặt cổng cho kết nối mysql
#CONFIG_mysql_dump_port=3306

# Bao gồm CREATE DATABASE trong bản sao lưu?
#CONFIG_mysql_dump_create_database='no'

# Thư mục và tập tin sao lưu riêng biệt cho từng DB? (có hay không)
#CONFIG_mysql_dump_use_separate_dirs='yes'

# Chọn kiểu nén. (gzip hoặc bzip2)
#CONFIG_mysql_dump_compression='gzip'

# Bỏ ghi chú để kích hoạt! Điều này sẽ cung cấp cho các thư mục quyền rwx------
# và các tập tin quyền rw-------
#umask 0077

# dry-run, tức là thể hiện những gì bạn sẽ làm mà không thực sự làm việc đó
# không hoạt động: =0 hoặc đã nhận xét
# hoạt động: không có chú thích VÀ = 1
#CONFIG_dryrun=1