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 )).
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:
Sao lưu và khôi phục lại MySQL với MySQL - ZRM trên Debian Sarge.pdf

