Tổng lượt truy cập

Friday, October 22, 2010

Backup & Restore in Linux

Backup & Restore

Giới thiệu AutoMySQLBackup

AutoMySQLBackup là một mã shell cho phép bạn sao lưu dự phòng cho cơ sở dữ liệu MySQL theo ngày, tuần, tháng sử dụng mysqldump. Nó có thể sao lưu nhiều cơ sở dữ liệu, nén bản sao lưu, sao lưu cơ sở dữ liệu remote, và gửi nhật kí tới email. AutoMySQLBackup sử dụng mysqldump để tạo bản lưu cho cơ sở dữ liệu. Lưu ý là mysqldump sẽ khóa cơ sở dữ liệu trong khi sao lưu đang làm việc và nó có thể mất vài giây cho tới vài phút tùy thuộc vào dung lượng của cơ sở dữ liệu.

Nếu bạn chạy trên một website có lượng truy cập cao với cơ sở dữ liệu lớn thì AutoMySQLBackup là không phù hợp.

Cài đặt và cấu hình AutoMySQLBackup

Tải AutoMySQLBackup về và copy vào thu mục cd /usr/local/bin

http://mesh.dl.sourceforge.net/sourceforge/automysqlbackup/automysqlbackup.sh.2.5

Để cho đơn giải thì làm như sau:

cd /usr/local/bin

wget http://mesh.dl.sourceforge.net/sourceforge/automysqlbackup/automysqlbackup.sh.2.5

Cấu hình AutoMySQLBackup với các thông số sau:

vi /usr/local/bin/automysqlbackup.sh.2.5

# Username to access the MySQL server e.g. dbuser

USERNAME=root

# Username to access the MySQL server e.g. password

PASSWORD=123456

# Host name (or IP address) of MySQL server e.g localhost

DBHOST=localhost

# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"

DBNAMES="longlh test"

# Backup directory location e.g /backups

BACKUPDIR="/backups"

DBNAMES: Tên các cơ sở dữ liệu đang có trong MySQL, mỗi cơ sở dữ liệu cách nhau bằng một dấu space. Trong trường hợp này có 2 cơ sở dữ liệu là: longlh và test.

Nếu BACKUPDIR không tồn tại automysqlbackup.sh.2.5 sẽ tự động tạo nó.

USERNAME và PASSWORD: Điền đúng username và password truy cập cơ sở dữ liệu MySQL.

DBHOST: Nếu muốn sao lưu cơ sở dữ liệu local, hãy dùng localhost; nếu bạn muốn sao lưu cơ sở dữ liệu remote, hãy dùng the remote hostname (chú ý rằng cơ sở dữ liệu remote phải được bật ở phía máy đó).

Bây giờ ta thực thi đoạn mã:

[root@server3 ~]# chmod 755 /usr/local/bin/automysqlbackup.sh.2.5

Chạy automysqlbackup.sh.2.5 như sau nếu bạn đang ở thư mục /usr/local/bin:

[root@server3 ~]# ./automysqlbackup.sh.2.5

… hoặc như sau nếu bạn đang ở thư mục khác:

[root@server3 ~]# automysqlbackup.sh.2.5

[root@server3 ~]# automysqlbackup.sh.2.5

===============================================================

AutoMySQLBackup VER 2.5

http://sourceforge.net/projects/automysqlbackup/

Backup of Database Server - server3.bkis.com

===============================================================

Backup Start Time Thu Sep 23 09:42:53 ICT 2010

===============================================================

Daily Backup of Database ( longlh )

Rotating last weeks Backup...

Backup Information for /backups/daily/longlh/longlh_2010-09-23_09h42m.Thursday.sql

compressed uncompressed ratio uncompressed_name

832 2572 69.8% /backups/daily/longlh/longlh_2010-09-23_09h42m.Thursday.sql

----------------------------------------------------------------------

Daily Backup of Database ( test )

Rotating last weeks Backup...

Backup Information for /backups/daily/test/test_2010-09-23_09h42m.Thursday.sql

compressed uncompressed ratio uncompressed_name

908 2669 68.0% /backups/daily/test/test_2010-09-23_09h42m.Thursday.sql

----------------------------------------------------------------------

Backup End Thu Sep 23 09:42:54 ICT 2010

===============================================================

Total disk space used for backup storage..

Size - Location

80K /backups

===============================================================

If you find AutoMySQLBackup valuable please make a donation at

http://sourceforge.net/project/project_donations.php?group_id=101066

===============================================================

[root@server3 ~]# ls -l /backups/

total 12

drwxr-xr-x 7 root root 4096 Sep 23 09:42 daily

drwxr-xr-x 2 root root 4096 Sep 22 13:10 monthly

drwxr-xr-x 7 root root 4096 Sep 23 09:42 weekly

Các thư mục này sẽ chứa các thư mục con có tên sau khi cơ sở dữ liệu được chọn để sao lưu. Ví dụ: nếu bạn chọn cơ sở dữ liệu longlh, sẽ có một thư mục /backups/daily/longlh chứa bản sao lưu:

[root@server3 ~]# cd /backups/daily/mysun/

[root@server3 longlh]# ls -l

total 8

-rw-r--r-- 1 root root 2572 Sep 23 09:42 longlh_2010-09-23_09h42m.Thursday.sql

-rw-r--r-- 1 root root 832 Sep 23 10:19 longlh_2010-09-23_10h19m.Thursday.sql.gz

Khôi phục lại cơ sở dữ liệu MySQL

Giải nén file .gz:

[root@server3 ~]# cd /backups/daily/longlh/

[root@server3 longlh]# gunzip longlh_2010-09-23_09h42m.Thursday.sql.gz

Thực hiện khôi phục cơ sở dữ liệu longlh (Chú ý Cơ sở dữ liệu longlh phải được tạo trong cơ sở dữ liệu MySQL)

[root@server3 ~]# mysql -h localhost -u root -p < /backups/daily/longlh/longlh_2010-09-23_09h42m.Thursday.sql