Thứ Hai, 4 tháng 4, 2022

Hướng dẫn viết script tự động sao lưu (backup) MySQL Server/Maria DB

Nếu bạn cần một giải pháp khác tốt hơn là gõ từng câu lệnh thủ công thì ở bài này mình sẽ hướng dẫn các bạn tự viết một Shell script để thực hiện công việc backup để khi nào cần backup, bạn chỉ cần gõ một câu lệnh nào đó mà bạn tự đặt ra thay vì sử dụng các lệnh thủ công. Hơn nữa, cũng trong bài này mình sẽ hướng dẫn bạn cách đưa một Shell script bạn tự viết vào crontab để công việc backup diễn ra hoàn toàn tự động, như backup 1 ngày 1 lần chẳng hạn.

I. Giới Thiệu Về Shell Script

Shell Script là một ngôn ngữ lập trình kịch bản được thiết kế dành cho môi trường UNIX. Chẳng hạn bạn hay sử dụng các lệnh như cd, unzip,…tất cả lệnh đó đều là Shell script. Chẳng hạn như bạn cần backup một thư mục nào đó và chuyển file backup đến một thư mục chỉ định, đồng thời xóa các file backup cũ thì nếu bạn tự gõ các lệnh đó thủ công thì bạn sẽ cần gõ khoảng 4, 5 lần. Tuy nhiên với ngôn ngữ Shell, bạn có thể lồng các tác vụ đó vào một file Shell script để khi cần làm việc kia thì bạn chỉ cần gõ một lệnh mà bạn đã đặt ra.

II. Viết Shell Script Để Backup Dữ Liệu

1.Bắt Đầu Viết Script

Đầu tiên là bạn tạo ra một file với tên backup trong thư mục /bin:
vi /bin/tpbackup
Nhập code sau và sửa theo ý của bạn:
#! /bin/sh
#
ngay=$(date +"%T %d-%m-%Y")
file_name="backup-$ngay"
echo
mysqldump --single-transaction --routines  --triggers ---drop-table --extended-insert -u TaikhoanMysql -pMậtkhẩuSQL têndatabase | gzip -9 > thưmụclưu/db_$(date +"%T %d-%m-%Y").sql.gz
echo
echo "BACKUP CSDL VA CODE THANH CONG VAO LUC $ngay!"
echo
zip -r Đườngdẫnlưubackupcode/$file_name  cd /Thưmụccầnbackups > /dev/null
echo "Ten file CSDL backup: $file_name.sql.gz"
echo "Ten file backup code: $file_name.zip"
echo "File backup da duoc luu tai: Đường dẫn đến file backup"
echo
 Ví dụ, ở đây mình sẽ lưu file Code và Database vào thư mục /home/backups nhưng khi backup thư mục home sẽ không bao gồm thư mục /backups để tốn dung lượng, mình sử dụng script như sau: Thông tin SQL của mình là: user là ‘’root’’, pass là ‘123456’ và database mình cần backup là ‘’testdatabase’’
#! /bin/sh
#
ngay=$(date +"%T %d-%m-%Y")
file_name="backup-$ngay"
echo
mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u root -p123456 testdatabase | gzip -9 > /home/backups/db_$(date +"%T %d-%m-%Y").sql.gz 
echo 
echo "BACKUP CSDL VA CODE THANH CONG VAO LUC $ngay!" 
echo zip -r /home/backups/$file_name cd /home -x "*backups*" > /dev/null 
echo "Ten file CSDL backup: $file_name.sql.gz" 
echo "Ten file backup code: $file_name.zip" echo "File backup da duoc luu tai: /home/backups" 
echo
 Các bạn lưu ý dòng lệnh sau: cd /home -x “*backups*” : lệnh này là lệnh zip thư mục home nhưng không zip thư mục tên backups ở bên trong thư mục home Sau đó, bạn lưu lại file và gõ thử lệnh backup để kiểm tra xem script đã hoạt động chưa. Nếu kết quả trả về như dưới đây là script đã hoạt động:  Như vậy là bạn đã có một bản sao lưu cho tất cả website trên máy chủ, khi có vấn đề phát sinh cần khôi phục, bạn chỉ cần giải nén dữ liệu source code và chép vào thư mục chính (Document Root) của website. Với cơ sở dữ liệu bạn chỉ cần giải nén tập tin *.sql.gz sau đó chạy lệnh khôi phục như sau: #mysql -u [user-database] -p [password-user-database] [database-name] < /path/file.sql

III. Tạo Cron Job Để Tự Backup Dữ Liệu

Cron Job nghĩa là khái niệm chỉ một hành động nào đó được lặp đi lặp lại theo một chu kỳ nhất định. Ở bài này mình sẽ không giải thích rõ Cron Job là gì nên mình chỉ nói về việc sử dụng Cron Job để máy chủ tự động backup theo chu kỳ nhất định. Lưu ý: Nên sử dụng tài khoản root để tạo cron. Để tạo Cron Job, bạn hãy gõ lệnh sau:
crontab -e
Ấn phím
i
để chuyển qua chế độ Insert và gõ: 0 00 * * 1,4 backup >> /home/backups/backups-report.txt 
Ở đây, dòng crontab được hiểu như sau:
Hệ thống sẽ tự động chạy lệnh backup (Script mà chúng ta vừa viết) vào lúc 12h đêm thứ 2 và thứ 5 hàng tuần và xuất ra file log report được lưu tại:
>> /home/backups/backups-report.txt.
Để kiểm tra xem bạn đã thêm cronjob thành công hay chưa, hãy gõ lệnh xem nội dung của file /var/spool/cron/root:
cat /var/spool/cron/root
Nếu nó hiện ra cái cronjob mà bạn vừa thêm thì thành công.  Tips: Bạn có thể sử dụng công cụ Crontab Code Generator để hỗ trợ tạo crontab nhanh và chính xác.

IV. Dùng Cron Để Tự Động Xóa File Backup Cũ

VPS/SERVER của bạn ít dung lượng, bạn sợ các bản backup sẽ làm full ổ đĩa. Đừng lo, hãy thêm một crontab sau để tự động xóa các file backup cũ nhé. Ở đây mình thiết lập tự động xóa các file backup cũ hơn 7 ngày vào 15h hàng ngày, mình dùng crontab như sau:
15 * * * find /home/backups -type f -mtime +7 -exec rm -f {} ;
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
mysql, maria db, sql server, postgresql, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master