Sao lưu và khôi phục lại MySQL với MySQL - ZRM trên Debian Sarge

Hướng dẫn này sẽmô tảlàm cách nào đểsao lưu (backup) và khôi phục cơsởdữ

liệu MySQL của bạn với mysql-zrm trên hệthống Debian Sarge. mysql-zrm là

một phần trong Zmanda Recovery Manager của MySQL, nó là một công cụmới

giúp bạn có thểtạo logic đầy đủhay sao lưu thô cơsởdữliệu (không quan tâm

đến phương tiện lưu trữcủa bạn và cấu hình MySQL), tạo báo cáo vềsao lưu,

thẩm tra tình trạng của các sao lưu và khôi phục cơsởdữliệu của bạn

Nó cũng có thểgửi thông báo bằng e-mail vềtrạng thái sao lưu, từ đó bạn có thể

bổsung nhiều biện pháp sao lưu (dựa trên ứng dụng của bạn và thời gian (ví dụnhưhàng ngày

hay hàng tuần )).

pdf14 trang | Chuyên mục: MySQL | Chia sẻ: dkS00TYs | Lượt xem: 1982 | Lượt tải: 1download
Tóm tắt nội dung Sao lưu và khôi phục lại MySQL với MySQL - ZRM trên Debian Sarge, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
2006 07:58:31 PM CEST 0 
/var/lib/mysql-zrm/dailyrun/20 
060926195831 
dailyrun Tue 26 Sep 2006 08:24:04 PM CEST 0 
/var/lib/mysql-zrm/dailyrun/20 
060926202404 
Như bạn có thể thấy, có bốn backup trong thiết lập backup dailyrun của chúng ta. Nếu muốn 
kiểm tra backup cuối cùng trong thư mục /var/lib/mysql-zrm/dailyrun/20060926202404. 
Hãy làm như sau: 
mysql-zrm --action verify-backup --backup-set dailyrun --no-quiet --
source-directory /var/lib/mysql-zrm/dailyrun/20060926202404 
Kết quả cho ra như sau: 
Use of uninitialized value in concatenation (.) or string 
at /usr/bin/mysql-zrm line 1305. 
INFO: mysql-zrm-version 
INFO: Verification successful 
7, Khôi phục dữ liệu 
Hãy cho rằng cơ sở dữ liệu của chúng ta bị tranh chấp và chúng ta đã mất dữ liệu. Và làm thế 
nào để có thể khôi phục dữ liệu từ các backup MySQL. Trước tiên chúng ta chạy: 
mysql-zrm-reporter -show restore-full-info --where backup-set=dailyrun
để tìm ra các backup sẵn có: 
backup_set backup_date backup_level backup_directory 
-----------------------------------------------------------------------------
------------ 
dailyrun Tue 26 Sep 2006 07:57:47 PM CEST 0 /var/lib/mysql-zrm/dailyrun/20 
060926195747 
dailyrun Tue 26 Sep 2006 07:58:08 PM CEST 0 /var/lib/mysql-zrm/dailyrun/20 
060926195808 
dailyrun Tue 26 Sep 2006 07:58:31 PM CEST 0 /var/lib/mysql-zrm/dailyrun/20 
060926195831 
dailyrun Tue 26 Sep 2006 08:24:04 PM CEST 0 /var/lib/mysql-zrm/dailyrun/20 
060926202404 
Nếu muốn khôi phục từ backup mới nhất trong /var/lib/mysql-
zrm/dailyrun/20060926202404: 
mysql-zrm --action restore --backup-set dailyrun --source-directory 
/var/lib/mysql-zrm/dailyrun/20060926202404 
Kết quả cho ra như sau: 
Use of uninitialized value in concatenation (.) or string 
at /usr/bin/mysql-zrm line 1305. 
INFO: mysql-zrm-version 
INFO: Restored database from raw backup: egroupware 
INFO: Restored database from raw backup: mysql 
INFO: Restore done in 14 seconds. 
MySQL server has been shutdown. Please restart after 
verification. 
Dữ liệu đã được khôi phục nhưng máy chủ MySQL đã bị tắt. Vì vậy chúng ta phải bắt đầu nó 
với: 
/etc/init.d/mysql start 
8, Các biện pháp Backup 
Cho tới thời điểm này, chúng ta đã có một cấu hình toàn cục trong /etc/mysql-zrm/mysql-
zrm.conf được áp dụng đến tất cả các tập backup. Bây giờ giả dụ rằng chúng ta có một tập 
backup osCommerce cho cơ sở dữ liệu osCommerce, tập backup vBulletin là cho cơ sở dữ liệu 
vBulletin. 
Nó hoàn toàn không giống kiểu backup tất cả dữ liệu của chúng ta bởi vì backup chỉ bao gồm cơ 
sở dữ liệu osCommerce với tập backup osCommerce và tương tự với tập backup vBulletin. 
Chúng ta có thể giải quyết vấn đề này như sau: 
Mỗi một tập backup có thư mục con của nó trong thư mục /etc/mysql-zrm ví dụ: tập backup 
osCommerce có thư mục /etc/mysql-zrm/osCommerce. Bây giờ, bất cứ khi nào mysql-zrm 
được chạy, trước tiên nó kiểm tra cấu hình toàn cục trong /etc/mysql-zrm/mysql-zrm.conf 
sau đó kiểm tra thư mục của tập backup hiện thời cho file mysql-zrm.conf mà các thiết lập của 
nó ghi đè lên các thiết lập toàn cục trong /etc/mysql-zrm/mysql-zrm.conf, ví dụ: nếu tập 
backup hiện thời là osCommerce thì mysql-zrm sẽ đọc trước cấu hình từ /etc/mysql-
zrm/mysql-zrm.conf và sau đó cấu hình từ /etc/mysql-zrm/osCommerce/mysql-zrm.conf. 
Nếu bạn chỉ muốn sao chép cơ sở dữ liệu MySQL osCommerce trong tập backup osCommerce, 
chúng ta đặt nó vào trong /etc/mysql-zrm/osCommerce/mysql-zrm.conf: 
vi /etc/mysql-zrm/osCommerce/mysql-zrm.conf 
databases=osCommerce
9, Tháo các Backup cũ 
Nếu bạn không có tập retention-policy trong cấu hình mysql-zrm thì các backup MySQL 
được giữ mãi mãi nghĩa là đĩa cứng của bạn sẽ bị đầy sau một thời gian. Tuy nhiên bạn hoàn 
toàn có thể tháo các backup cũ một cách đơn giản bằng việc xóa thư mục backup. Ví dụ: nếu bạn 
có một backup trong /var/lib/mysql-zrm/dailyrun/20060926195831 và không cần nó nữa 
thì bạn có thể xóa nó như sau: 
rm -fr /var/lib/mysql-zrm/dailyrun/20060926195831
10, Bản ghi 
mysql-zrm ghi ra file .log như /var/log/mysql-zrm/mysql-zrm.log. 
11, Ghi dự phòng tăng 
mysql-zrm có thể thực hiện ghi dự phòng tăng dù có vài vấn đề với nó. Đầu tiên tôi phải cấu hình 
MySQL để viết bin-logs của nó đến /var/lib/mysql (bằng cách soạn thảo 
/etc/mysql/my.cnf) bởi vì đó là nơi mysql-zrm mong đợi chúng. Sau đó 
mysql-zrm-scheduler --now --backup-set dailyrun --backup-level 1 
dường như làm việc, nhưng 
mysql-zrm --action parse-binlogs --source-directory=/var/lib/mysql --
backup-set dailyrun 
phát sinh một lỗi: 
Use of uninitialized value in concatenation (.) or string 
at /usr/bin/mysql-zrm line 1305. 
INFO: mysql-zrm-version 
ERROR: cannot open index file /var/lib/mysql/index No such 
file or directory 
Đó là lý do tại sao tôi nghĩ nó sẽ tốt hơn nếu thực hiện đầy đủ các backup vào thời điểm này thay 
vì ghi dự phòng tăng. 
12, Các backup từ xa 
Mysql-zrm cho phép bạn có thể thực hiện các backup từ các máy chủ MySQL từ xa trên mạng. 
Tuy nhiên đây điều này cũng có thể gây ra một vài vấn đề đối với tôi. 
12.1, Lần thử đầu 
Trong bước đầu tiên, tôi muốn thực hiện một backup (trong định dạng thô) của một máy chủ 
MySQL trên một hệ thống SuSE 10.0 từ xa. Tôi soạn /etc/mysql-zrm/mysql-zrm.conf và đặt 
user, password, tên máy chủ vào. Sau đó chạy 
mysql-zrm-scheduler --now --backup-set dailyrun --backup-level 0 
Kết quả như sau: 
Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 
Use of uninitialized value in concatenation (.) or string at /usr/bin/mysql-
zrm line 1305. 
INFO: mysql-zrm-version 
WARNING: Binary logging is off. Incremental and logical backup will not work. 
INFO: backup-set=dailyrun 
INFO: backup-date=20060927095528 
INFO: backup-date-epoch=1159343728 
INFO: mysql-version=4.1.13 
INFO: backup-directory=/var/lib/mysql-zrm/dailyrun/20060927095528 
INFO: backup-level=0 
WARNING: Database test is empty and hence will not be backedup 
WARNING: Database tmp is empty and hence will not be backedup 
ERROR: Output of command: 'mysqlhotcopy' is 
DBI 
connect(';host=192.168.0.163;mysql_read_default_group=mysqlhotcopy','root',..
.) failed: Client does not support authentication protocol requested by 
server; consider upgrading MySQL client at /usr/bin/mysqlhotcopy line 182 
ERROR: mysqlhotcopy command did not succeed. 
Command used is mysqlhotcopy --quiet --user=root --password=***** --
host=192.168.0.163 db_ispconfig mysql "/var/lib/mysql-
zrm/dailyrun/20060927095528" > /tmp/4Z75iIAeo5 2>&1 
Return value is 65280 
INFO: backup-status=Backup failed 
INFO: Backup failed 
ERROR: /usr/bin/mysql-zrm did not finish successfully 
Tôi phỏng đoán điều này đã xảy ra bởi vì các phiên bản MySQL khác nhau trên cả hai hệ thống. 
12.2, Lần thử thứ hai 
Trong lần thử thứ hai, tôi muốn tạo một backup (giống như trong định dạng thô) của cơ sở dữ 
liệu MySQL trên một máy chủ Debian Sarge từ xa. Cả hai hệ thống cục bộ và từ xa đều có cùng 
một phiên bản MySQL. Tôi chạy 
mysql-zrm-scheduler --now --backup-set dailyrun --backup-level 0 
và có các lỗi dưới đây: 
Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 
Use of uninitialized value in concatenation (.) or string at /usr/bin/mysql-
zrm line 1305. 
INFO: mysql-zrm-version 
INFO: backup-set=dailyrun 
INFO: backup-date=20060927100653 
INFO: backup-date-epoch=1159344413 
INFO: mysql-version=4.1.11-Debian_4sarge7-log 
INFO: backup-directory=/var/lib/mysql-zrm/dailyrun/20060927100653 
INFO: backup-level=0 
WARNING: Database test is empty and hence will not be backedup 
ERROR: Output of command: 'mysqlhotcopy' is 
Cannot open dir '/var/lib/mysql/web34_db1': No such file or directory at 
/usr/bin/mysqlhotcopy line 293. 
ERROR: mysqlhotcopy command did not succeed. 
Command used is mysqlhotcopy --quiet --user=root --password=***** --
host=192.168.0.110 mysql web34_db1 "/var/lib/mysql-
zrm/dailyrun/20060927100653" > /tmp/yxFsViAlbm 2>&1 
Return value is 512 
INFO: backup-status=Backup failed 
INFO: Backup failed 
ERROR: /usr/bin/mysql-zrm did not finish successfully 
Nó dường như có lỗi thư mục /var/lib/mysql/web34_db1 (web34_db1 là một trong những cơ 
sở dữ liệu trên hệ thống từ xa) trong hệ thống hiện tại. Vì vậy tôi đã tạo nó: 
mkdir /var/lib/mysql/web34_db1
và chạy 
mysql-zrm-scheduler --now --backup-set dailyrun --backup-level 0 
lúc này nó đã làm việc, nhưng tôi nghi ngờ rằng đây là cách nó được cho là… 
12.3, Lần thử thứ ba 
Thời điểm này, tôi cố gắng tạo một backup từ cùng một hệ thống Debian Sarge từ xa như trước 
nhưng trong logic thay vì định dạng thô. Tôi chạy 
mysql-zrm-scheduler --now --backup-set dailyrun --backup-level 0 
và có lỗi như sau: 
Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 
Use of uninitialized value in concatenation (.) or string at /usr/bin/mysql-
zrm line 1305. 
INFO: mysql-zrm-version 
WARNING: Binary logging is off. Incremental and logical backup will not work. 
INFO: backup-set=dailyrun 
INFO: backup-date=20060927095501 
INFO: backup-date-epoch=1159343701 
INFO: mysql-version=4.1.13 
INFO: backup-directory=/var/lib/mysql-zrm/dailyrun/20060927095501 
INFO: backup-level=0 
ERROR: Binary logging is off. Logical backup cannot be done 
INFO: backup-status=Backup failed 
INFO: Backup failed 
ERROR: /usr/bin/mysql-zrm did not finish successfully 
Nhưng lúc này nó hoạt động bình thường bởi vì với các backup logic từ xa MySQL cần phải cấu 
hình với SSL như miêu tả trên 
mysqld --ssl --help 
 060927 12:26:09 [ERROR] mysqld: unknown option '--ssl' 
Ghi vào tiện ích MySQL 
mysql -u root -p 
và chạy 
SHOW VARIABLES LIKE 'have_openssl';
và có cùng một kết quả: 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| have_openssl | NO | 
+---------------+-------+ 
1 row in set (0.01 sec) 
Không hỗ trợ SSL… 
13, Các liên kết 
• mysql-zrm:  
• mysql-zrm Manual: 
• Zmanda:  
• MySQL:  
• Debian:  

File đính kèm:

  • pdfSao lưu và khôi phục lại MySQL với MySQL - ZRM trên Debian Sarge.pdf
Tài liệu liên quan