- vừa được xem lúc

[Linux] Làm thế nào backup tự động hằng ngày database Mysql hoặc Mariadb với MySQLDump

0 0 21

Người đăng: Kien Le

Theo Viblo Asia

Chào 500 anh em yêu tech. Lại là mình đây, lâu rồi chưa có bài viết nào mới chia sẻ với anh em. Hôm nay mình có tip nhỏ chia sẻ với anh em đây. Làm thế nào Backup tự động hằng ngày database Mysql hoặc Mariadb với MySQLDump.

Hình minh hoạ database backup

1. Đặt vấn đề

Database của bạn đang dùng cho ứng dụng là MySQLMariaDB có thể bị hỏng, lỗi... do phần cứng server như đĩa, ram vì một sự cố đột ngột như ngắt điện chẳng hạn có thể làm hỏng hoàn toàn các bảng dữ liệu. Và việc sao lưu dữ liệu bằng cách sao chép dữ liệu hoặc tạo một bản snapshot trên đĩa cứng có thể không đảm bảo an toàn cho cơ sở dữ liệu ????

2. Giải pháp

Backup database daily
Như các bạn thấy trên hình là một giải pháp backup database daily. Điều này có nghĩa các bạn sẽ tạo một scripts backup và một cron job trên server để thực hiện việc này.

Mục đích của scripts:

  • Dump toàn bộ nội dung của database vào một file
  • Nén tệp thành một tệp zip
  • Ghi nhật ký về những gì đang diễn ra
  • (Tùy chọn) Đẩy dữ liệu backup(file zip) đến một NAS server

3. Các bước để tạo backup tự động hằng ngày

Ở đây mình đang sử dụng hệ điều hành Unbuntu cài Mysql hoặc Mariadb.

Bước 1: Tạo một user backup

Đầu tiên các bạn login vào database

sudo mysql

Tạo một user backup

GRANT LOCK TABLES, SELECT ON DATABASE_NAME.* TO 'USER_BACKUP'@'localhost' IDENTIFIED BY 'PASSWORD'; #Thay đổi password bạn muốn
FLUSH PRIVILEGES;

Bước 2: Tạo một scripts backup

Đầu tiên các bạn tạo một nơi để lưu trữ

cd ~
mkdir Database_Backup
touch db_backup.sh
sudo chmod 700 db_backup.sh
nano db_backup.sh

Thêm nội dung scripts vào db_backup.sh

#!/bin/bash backupfolder=/home/Database_Backup # Thư mục lưu trữ file backup
logfile=/home/db_backup.log #ghi log ra file
# MySQL user
user=USER_BACKUP
# MySQL password
password=password
# Ngày giữ lại file backup
keep_day=15
sqlfile=$backupfolder/all-database-$(date +%Y-%m-%d_%H-%M-%S).sql
zipfile=$backupfolder/all-database-$(date +%Y-%m-%d_%H-%M-%S).zip
echo Starting Backup [$(date +%Y-%m-%d_%H-%M-%S)] >> $logfile # Tạo một backup
/usr/bin/mysqldump -u$user -p$password --all-databases >> $sqlfile
if [ $? == 0 ]; then echo 'Sql dump created' >> $logfile
else echo [error] mysqldump return non-zero code $? >> $logfile exit
fi
# Compress backup
zip -j $zipfile $sqlfile
if [ $? == 0 ]; then echo 'The backup was successfully compressed' >> $logfile
else echo '[error] Error compressing backup' >> $logfile exit
fi
rm $sqlfile
echo $zipfile >> $logfile
echo Backup complete [$(date +%Y-%m-%d_%H-%M-%S)] >> $logfile
# Delete old backups
find $backupfolder -mtime +$keep_day -delete

Lưu lại và thoát chạy thử

./db_backup.sh 

Bước 3: Tạo một cron job backup hằng ngày

crontab -e

Thiết lập backup vào một thời gian trong ngày

30 22 * * * /home/will/db_backup.sh #Thay đổi thời gian bạn muốn

Backup vào lúc 10h tối hàng ngày

Bước 4: Kiểm tra backup

Sau khi chạy các bước trên bây giờ các bạn kiểm tra thành quả

Backup file

4. Tổng kết

Đóng máy, một tip nhỏ nhỏ giúp các bạn có thể sao lưu database của mình hằng ngày hi vọng hữu ích với các bạn. Thân ái!

Follow các kênh mình chia sẻ

Vibo chia sẻ

Youtube

Blog chia sẻ

Bình luận

Bài viết tương tự

- vừa được xem lúc

Index trong Mysql và cách sử dụng

Một số database là một cấu trúc dữ liệu để cải thiện tốc độ của các hoạt động trong một bảng. Trong khi tạo index, nó cần được xem xét rằng các cột đó sẽ được sử dụng để thực hiện các truy vấn SQL và tạo ra một hoặc nhiều chỉ số trên các cột đó là gì.

0 0 43

- vừa được xem lúc

Tạo ER Diagram của một Database bằng MySQL Workbench

Trong số chúng ta ai cũng đều đã từng trải qua một thời sinh viên tràn ngập đồ án này, đồ án kia đúng không? Mình cũng đã từng có một thời như thế Mà chuyên ngành chúng ta là công nghệ thông tin thì làm việc với Database trong mỗi đồ án là điều không thể thiếu rồi. Chuyện sẽ chẳng có gì to tát cho đ

0 0 65

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 110

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 969

- vừa được xem lúc

Mysql index strategy

Trong Mysql, index hỗ trợ việc tìm kiếm các rows theo từng giá trị của các columns trong bảng trở nên nhanh chóng. Việc tìm kiếm sẽ phải scan toàn bộ table nếu các column trong câu query không được đánh index một cách thích hợp. . .

0 0 65

- vừa được xem lúc

CRUD Nodejs với mysql

Mở Đầu. Xin chào các bạn tiếp tục với series Nodejs cơ bản, bài hôm nay mình sẽ tiếp tục làm thêm các chức năng xem chi tiết và sửa và xóa sản phẩm.

0 0 77