Backup Database trong MySQL

Tác giả server360, T.M.Một 21, 2013, 10:31:08 SÁNG

« Chủ đề trước - Chủ đề tiếp »

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

Backup Database trong MySQL


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.

1. 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à vietnetwork.

Thực hiện backup

- File Backup không có nén

Mã nguồn [Chọn]
  # mysqldump --add-drop-table -u root -p123456 vietnetwork> vietnetwork.sql
- File Backup có nén :

Mã nguồn [Chọn]
#  mysqldump --add-drop-table  -u root -h localhost -p123456 vietnetwork| gzip -9 > vietnetwork.sql.gz
Chú thích:

--add-drop-table là để cho phép ghi đè database đã tồn tại.

2. Backup từng table riêng biệt trong database vietnetwork

Mã nguồn [Chọn]
# mysqldump --add-drop-table -u root -p123456 vietnetwork vietnetwork vietnetwork> backuptable.sql
>> ý nghĩa dòng trên là backup 2 table  vietnetwork và vietnetworktrong database vietnetwork

Cú pháp:

Mã nguồn [Chọn]
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/vietnetwork.sql

Mã nguồn [Chọn]
#  mysql -u root -p123456 webtintuc < /mnt/vietnetwork.sql
Tạo Crontab để hệ thống tự động backup 12 giờ hằng ngày :

Mã nguồn [Chọn]
# crontab -e
 
 * 12 * * *  mysqldump --add-drop-table -u root -p123456 vietnetwork> /mnt/vietnetwork.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 .

3. Nội dung Script như sau:

Mã nguồn [Chọn]
MyUSER="root"     # USERNAME
 MyPASS="123456"       # PASSWORD
 MyHOST="localhost"          # Hostname
 
 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 vietnetwork và vietnetwork

IGGY="vietnetwork.vn vietnetwork"

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.

Các chủ đề tương tự (10)

7410

Tác giả server360


Trả lời: 1
Lượt xem: 2114