VietNetwork.Vn

 


Tác giả Chủ đề: Backup database trong Mysql  (Đã xem 1340 lần)

0 Thành viên và 1 Khách đang xem chủ đề.

server360

  • Administrator
  • Hero Member
  • *****
  • Bài viết: 3162
  • Số Lần: +72/-0
Backup database trong Mysql
« vào: Tháng Mười Một 21, 2013, 10:31:08 AM »
Như chúng ta đã biết database quan trong như thế nào trong hệ thống của chúng ta , khi gặp sự cố mà  chưa kịp backup vì 1 lý do nào đó ...
 
 Do đó trong bài này chúng ta sẽ backup database tự động bằng Script và có thể lựa chọn backup từng database riêng biệt hay từng table riêng biệt ...thông qua SSH.
 
 Một vài thông tin trong bài viết :
 
 Password Mysql  user root là 123456 và hệ thống có 1 database để test là webtintuc.
 
 Thực hiện :
 
 Backup
 
 - File Backup không có nén
 
  # mysqldump --add-drop-table -u root -p123456 webtintuc > webtintuc.sql
 
 
 
 - File Backup có nén :
 
 #  mysqldump --add-drop-table  -u root -h localhost -p123456 webtintuc | gzip -9 > webtintuc.sql.gz
 
 chú thích :
 
--add-drop-table là để cho phép ghi đè database đã tồn tại.
Backup từng table riêng biệt trong database Webtintuc
 
 # mysqldump --add-drop-table -u root -p123456 webtintuc lienket loaitin > backuptable.sql
 
 >> ý nghĩa dòng trên là backup 2 table  lienket  và loaitin trong database  webtintuc
 
 Cú pháp:
 
 mysqldump -u [username] -p [password] [databasename] [table1  table2 ....]
 
 >> các table cách nhau khoảng trắng .
 
 
 
 
 Restore
 
 Restore file đã backup trong thư mục /mnt/webtintuc.sql
 
 #  mysql -u root -p123456 webtintuc < /mnt/webtintuc.sql
 
 
 
 
 Tạo Crontab để hệ thống tự động backup 12 giờ hằng ngày :
 

 # crontab -e
 
 * 12 * * *  mysqldump --add-drop-table -u root -p123456 webtintuc > /mnt/webtintuc.sql
 
 
 
 Sử dụng Script  backup hoàn chỉnh

 
 Với Scrip sau sẽ backup toàn bộ database của hệ thống vào thư mục  /mnt/mysql và  mỗi database là 1 file
 
 riêng biệt ,được nén và kèm theo  ngày tháng backup trong tên file .
 
 Nội dung Script như sau :
 
 MyUSER="root"     # USERNAME
 MyPASS="
123456"       # PASSWORD
 MyHOST="
localhost"          # Hostname
 
 # Linux bin paths, change this if it can not be autodetected via which command
 MYSQL="$(which mysql)"
 MYSQLDUMP="$(which mysqldump)"
 CHOWN="$(which chown)"
 CHMOD="$(which chmod)"
 GZIP="$(which gzip)"
 
 # Backup Dest directory, change this if you have someother location
 DEST="
/mnt"
 
 # Main directory where backup will be stored
 MBD="
$DEST/mysql"
 
 # Get hostname
 HOST="$(hostname)"
 
 # Get data in dd-mm-yyyy format
 NOW="$(date +"%d-%m-%Y")"
 
 # File to store current backup file
 FILE=""
 # Store list of databases
 DBS=""
 
 # DO NOT BACKUP these databases
 IGGY="test"
 
 [ ! -d $MBD ] && mkdir -p $MBD || :
 
 # Only root can access it!
 $CHOWN 0.0 -R $DEST
 $CHMOD 0600 $DEST
 
 # Get all database list first
 DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
 for db in $DBS
 do
     skipdb=-1
     if [ "$IGGY" != "" ];
     then
     for i in $IGGY
     do
         [ "$db" == "$i" ] && skipdb=1 || :
     done
     fi
 
     if [ "$skipdb" == "-1" ] ; then
     FILE="$MBD/$db.$HOST.$NOW.gz"
     # do all inone job in pipe,
     # connect to mysql using mysqldump for select mysql database
     # and pipe it out to gz file in backup dir :)
         $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
     fi
 done
 
 
Sau khi chạy Scrip thì thư mục backup sẽ có các file database đã backup như hình sau :
 

 
 
 Bạn có thể loại bỏ các database ko cần backup bằng cách chỉnh sửa trong file cấu hình trên tại
 
 dòng IGGY=”test”
 
 ví dụ : nếu ko muốn backup 2 database kenhgiaiphap nhaconline
 
 IGGY=”kenhgiaiphap  nhaconline”
 
 Khi Restore thì giài nén các file.gz  trên bằng lệnh  gunzip rồi restore bằng lệnh phần trên .
 
 Chúng ta có thể tạo Crontab  cho scipt này để tự động backup hệ thống .
 
 Nếu dùng Phpmyadmin thì backup và restore qua Phpmyadmin .

 
 
 


 

Copyright © VietNetwork.Vn