Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
354,73 KB
Nội dung
Sao lưuvàkhôiphụclại MySQL vớimysql-zrmtrênDebianSarge
Ngu
ồ
n:quantrimang.com
Hướng dẫn này sẽ mô tả làm cách nào để saolưu (backup) vàkhôiphục
cơ sở dữ liệuMySQL của bạn vớimysql-zrmtrê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 saolư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 saolưuvà
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 saolư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…)).
Điều đầu tiên tôi muốn nói ở đây rằng, đây không chỉ là cách duy nhất cho thiết
lập một hệ thố
ng như vậy. Trong thực tế có nhiều cách thực hiện khác nhau để
giải quyết được vấn đề này và đây chỉ là một trong những cách đó.
1, Chú ý mở đầu
mysql-zrm làm việc trênMySQL 4.1 và các phiên bản cao hơn, chính vì vậy bạn
phải có một máy chủ MySQL đã cài đặt trên hệ thống DebianSarge hay tương
tự thế:
apt-get install mysql-client-4.1 mysql-common-4.1
mysql-server-4.1
Phần này cũng được cài gói libdbd-mysql-perl, đây là một gói rất cần thiết
cho mysql-zrm khi mysql-zrm được viết bằng Perl.
2, Cài đặt
Zmanda đã đưa ra một gói rpm của mysql-zrm cho phân phối dựa trên rpm giống
như Fedora, RedHat, SuSE, CentOS, tuy nhiên, không có gói nào cho Debian
Sarge. Vì vậy bạn phải tải gói mysql-zrm từ
http://www.zmanda.com/downloads.html
. Lúc đó bản này đang là 1.0.3 vàtải về
thư mục /tmp.
cd /tmp
wget http://www.zmanda.com/downloads/community/ZRM-
MySQL/1.0.3/Source/MySQL-zrm-1.0.3.tar.gz
Sau đó mở các gói và vào thư mục gốc:
tar xvfz MySQL-zrm-1.0.3.tar.gz
cd MySQL-zrm-1.0.3
Đáng tiếc là các hướng dẫn cài đặt trong file INSTALL lại nói rằng bạn có thể cài
đặt gói mysql-zrm rpm nếu bạn đang ở một nhánh dựa trên rpm. Không có dòng
hướng dẫn cài đặt nào cho gói nguồn trên trang web Zmanda. Chính vì vậy tôi
đã phải tự tìm cách để cài mysql-zrmtrên hệ thống DebianSarge của tôi. Sau
đây là những gì tôi đã làm:
chown root:root *
mv mysql-zrm /usr/bin
mv mysql-zrm-reporter /usr/bin
mv mysql-zrm-scheduler /usr/bin
gzip mysql-zrm.1
mv mysql-zrm.1.gz /usr/share/man/man1
gzip mysql-zrm.conf.5
mv mysql-zrm.conf.5.gz /usr/share/man/man5
gzip mysql-zrm-reporter.1
mv mysql-zrm-reporter.1.gz /usr/share/man/man1
gzip mysql-zrm-reporter.conf.5
mv mysql-zrm-reporter.conf.5.gz /usr/share/man/man5
gzip mysql-zrm-scheduler.1
mv mysql-zrm-scheduler.1.gz /usr/share/man/man1
mkdir /etc/mysql-zrm
mv *.conf /etc/mysql-zrm
mkdir -p /usr/lib/mysql-zrm/Data/Report/Plugin
mv Report.pm /usr/lib/mysql-zrm/Data
mv Base.pm /usr/lib/mysql-zrm/Data/Report
mv *.pm /usr/lib/mysql-zrm/Data/Report/Plugin
mkdir /var/log/mysql-zrm
gzip AUTHORS
gzip COPYING
gzip INSTALL
gzip README
mkdir /usr/share/doc/MySQL-zrm
mv * /usr/share/doc/MySQL-zrm
mkdir /var/lib/mysql-zrm
touch /etc/mysql-zrm/mysql-zrm-release
Các file thực thi đã được chuyển đến /usr/bin, các file cấu hình được đặt
trong /etc/mysql-zrm và các trang thực thi (mysql-zrm, mysql-zrm-
reporter và mysql-zrm-scheduler) vì vậy nếu bạn không chắc về cách sử
dụng của những thực thi này bạn có thể chạy:
man mysql-zrm
man mysql-zrm-reporter
man mysql-zrm-scheduler
3, Cấu hình cơ bản
File cấu hình chính là /etc/mysql-zrm/mysql-zrm.conf. Trong file này, cần
phải chỉ ra user và password của người dùng.
vi /etc/mysql-zrm/mysql-zrm.conf
user="root"
password="yourrootsqlpassword"
Nếu không chỉ ra user và password thì mysql-zrm cho rằng các giá trị là mặc
định với tất cả các thiết lập khác. Với cấu hình này, mysql-zrm sẽ thực hiện
backup tất cả cơ sở dữ liệu trong định dạng thô và nó sẽ giữ các backup này mãi
mà không gửi thông báo email.
Định dạng thô nghĩa là, nó saolưu cơ sở dữ liệu như các file nhị phân có thể
được copy ngược lại cơ sở dữ liệu trong trường hợp mất dữ
liệu, nhưng nó có
thể gây ra các vấn đề nếu bạn copy những file này giữa các phiên bản MySQL
khác nhau.
Bản sao của định dạng thô là định dạng logic tạo file văn bản với kết xuất SQL
Server đơn giản trong cơ sở dữ liệu của bạn. Các kết xuất SQL này có thể được
lưu trong hầu hết tất cả các phiên bản MySQLvà bạn có thể thực hiện nó một
cách thủ công.
Nế
u bạn muốn có được các thông báo e-mail đến địa chỉ email của bạn
example@example.com thì bạn phải thêm /etc/mysql-zrm/mysql-
zrm.conf:
vi /etc/mysql-zrm/mysql-zrm.conf
mailto=example@example.com
Nếu bạn muốn tạo các backup theo định dạng logic và muốn giữ chúng trong
vòng một tuần (thay vì mãi mãi), hãy thêm đoạn sau vào /etc/mysql-
zrm/mysql-zrm.conf:
vi /etc/mysql-zrm/mysql-zrm.conf
# allowed values for backup-mode are "raw"
and "logical"
backup-mode=logical
retention-policy=7D
Nếu bạn muốn tạo một backup cho một MySQL thứ bản bạn hãy thêm dòng sau
vào /etc/mysql-zrm/mysql-zrm.conf:
vi /etc/mysql-zrm/mysql-zrm.conf
replication=1
Bằng cách này chúng sẽ thực hiện saolưu các file quan trọng cho MySQL thứ
bản.
Nếu bạn chỉ muốn saolưu cơ sở dữ liệu exampledb và anotherexampledb
thay vì tất cả cơ sở dữ liệu, bạn hãy thêm chúng vào /etc/mysql-
zrm/mysql-zrm.conf:
vi /etc/mysql-zrm/mysql-zrm.conf
databases=exampledb anotherexampledb
Nếu bạn chỉ cần backup các bảng text, user và page từ cơ sở dữ liệu
exampledb bạn hãy thêm chúng vào /etc/mysql-zrm/mysql-zrm.conf:
vi /etc/mysql-zrm/mysql-zrm.conf
tables=text user page
database="exampledb"
Chú ý: các thiết lập all-databases, databases, và tables/database là có
thể qua lại.
Mặc định /etc/mysql-zrm/mysql-zrm.conf cho hầu hết các chú thích để
giải thích tất cả các tùy chọn cấu hình. Hiện tại tôi đang sử dụng các thiết lập đó:
vi /etc/mysql-zrm/mysql-zrm.conf
user="root"
password="yourrootsqlpassword"
mailto="example@example.com"
backup-mode=logical
retention-policy=7D
# all-databases=1 is optional, as it is the
default setting
all-databases=1
4, Các ví dụ
Với mysql-zrm bạn có thể duy trì nhiều backup, gọi là một tập hợp backup
sets ví dụ như backup hàng ngày, hàng tuần và backup cho cơ sở dữ liệu hệ
thống hoạt động thương mại (osCommerce) của bạn, backup cho cơ sở dữ liệu
vBulletin…
Bây giờ hãy tạo backup đầu tiên của bạn (chúng ta đã tạo trong thiết lập backup
dailyrun):
mysql-zrm-scheduler now backup-set dailyrun
backup-level 0
Nó sẽ ngay lập tức saolưu tất cả cơ sở dữ liệu tới thư mục /var/lib/mysql-
zrm/dailyrun và cũng sẽ tạo thư mục /etc/mysql-zrm/dailyrun.
backup-level 0 nghĩa là: thực hiện một backup đầy đủ (nếu bạn có thể thực
hiện các backup dự phòng tăng ( backup-level 1) nhưng vấn đề này sẽ
được nói sau còn bây giờ chúng ta thực hiện các backup)
Nếu bạn cho phép các thông báo email, bạn sẽ nhận được m
ột email với trạng
thái backup lúc đó. Nhưng bạn cũng có thể tạo một báo cáo về trạng thái backup
bằng dòng lệnh sau:
mysql-zrm-reporter where backup-set=dailyrun show
backup-status-info
Kết quả thực hiện dòng lệnh:
backup_set backup_date backup_level backup_status comment
dailyrun Tue 26 Sep 2006 07:57:47 PM CEST 0 Backup
succeeded
Bạn cũng có thể tạo một số các báo cáo khác với các câu lệnh dưới đây:
mysql-zrm-reporter where backup-set=dailyrun show
backup-method-info
mysql-zrm-reporter where backup-set=dailyrun show
backup-retention-info
mysql-zrm-reporter where backup-set=dailyrun show
backup-performance-info
mysql-zrm-reporter where backup-set=dailyrun show
restore-full-info
mysql-zrm-reporter where backup-set=dailyrun show
restore-incr-info
mysql-zrm-reporter where backup-set=dailyrun show
replication-info
Hãy thử chúng để xem chúng cung cấp cho bạn những thông tin gì.
Bây giờ chúng ta muốn tạo một backup hàng ngày và hàng tuần để chạy tự động
bằng hệ thống (không cần sự tương tác). Thiết lập các backup này như sau:
mysql-zrm-scheduler add interval daily backup-set
dailyrun backup-level 0
mysql-zrm-scheduler add interval weekly backup-
set weeklyrun backup-level 0
(Với lệnh thứ hai, chúng ta tạo được một backup mới gọi là weeklyrun.)
Còn bây giờ hãy kiểm tra lại các backup đã được ghi trong chương trình:
mysql-zrm-scheduler query
Cho ra
Logging to /var/log/mysql-zrm/mysql-zrm-
scheduler.log
0 3 * * * /usr/bin/mysql-zrm action
backup destination /var/lib/mysql-zrm
backup-set dailyrun backup-level 0
0 4 * * * /usr/bin/mysql-zrm action purge
destination /var/lib/mysql-zrm
0 2 * * 0 /usr/bin/mysql-zrm action
backup destination /var/lib/mysql-zrm
backup-set weeklyrun backup-level 0
Như bạn có thể thấy, backup hàng ngày được chạy hàng ngày vào lúc 03:00h và
hàng tuần vào Chủ nhật lúc 02:00h.
(BTW thay vì
mysql-zrm-scheduler query
bạn có thể chạy
crontab -l
để có được thông tin như vậy)
Nếu bạn muốn bắt đầu backup hàng ngày tại thời điểm khác, ví dụ là 13:35, bạn
có thể thực hiện nó như sau:
mysql-zrm-scheduler add interval daily backup-set
dailyrun start 13:35 backup-level 0
Để gỡ bỏ một backup đã được ghi trong chương trình bạn có thể làm như sau:
mysql-zrm-scheduler delete interval weekly
Nó sẽ gỡ bỏ backup hàng tuần được chạy vào 02:00h Chủ nhật. Nếu bạn muốn
gỡ backup hàng ngày được ghi trong chương trình vào lúc 13:35h bạn hãy làm
như sau:
mysql-zrm-scheduler delete interval daily start
13:35
Nhưng bạn cũng có thể chạy
crontab -e
để cho phép dễ dàng hơn bằng mysql-zrm-scheduler.
5, Các báo cáo tùy chỉnh và HTML
Trong mục 4, tôi đã đề cập đến các loại báo cáo gì đang sẵn có. Nhưng bạn
cũng có thể tạo các báo cáo tùy chỉnh, ví dụ: bạn có thể chỉ định cột nào hay
thông tin nào bạn muốn xem. Ví dụ:
mysql-zrm-reporter fields backup-set,backup-
date,backup-level,backup-status where backup-
set=dailyrun
Tạo một báo cáo cho thiết lập backup dailyrun thể hiện trong các cột
backup-set, backup-date, backup-level và backup-status:
backup_set backup_date backup_level
backup_status
dailyrun Tue 26 Sep 2006 07:57:47 PM CEST 0
Backup succeeded
dailyrun Tue 26 Sep 2006 07:58:08 PM CEST 0
Backup succeeded
dailyrun Tue 26 Sep 2006 07:58:31 PM CEST 0
Backup succeeded
dailyrun Tue 26 Sep 2006 08:24:04 PM CEST 0
Backup succeeded
Danh sách của tất cả các cột có sẵn:
http://mysqlbackup.zmanda.com/index.php/What_information_can_be_obtained_
from_a_backup_report%3F
mysql-zrm cho bạn tạo các báo cáo HTML. Hãy thừa nhận rằng bạn có một máy
chủ web (ví dụ Apache) được cài đặt trên hệ thống của bạn với đường dẫn gốc
/var/www. Bây giờ chạy
mysql-zrm-reporter show backup-status-info where
backup-set=dailyrun type html output
/var/www/backup-status-dailyrun.html
Sẽ tạo file HTML backup-status-dailyrun.html trong thư mục /var/www
của bạn (bạn có thể truy cập trọng trình duyệt, ví dụ
http://server1.example.com/backup-status-dailyrun.html
)
6, Xác thực các backup của bạn
Bây giờ chúng ta sẽ kiểm tra tình trạng của thiết lập backup dailyrun. Thực hiện
như sau:
mysql-zrm action verify-backup backup-set dailyrun
Cho ra:
Use of uninitialized value in concatenation
(.) or string at /usr/bin/mysql-zrm line
1305.
INFO: mysql-zrm-version
INFO: Verification successful
(Bạn có thể bỏ qua báo cảnh dòng đầu tiên, nó hoàn toàn không nghiêm trọng)
Tiếp theo chúng ta kiểm tra một backup cụ thể bên trong tập backup dailyrun.
Đầu tiên đã chạy
mysql-zrm-reporter -show restore-full-info where
backup-set=dailyrun
để tìm ra backup nào có sẵn:
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
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ữ
[...]... 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/mysqlzrm/osCommerce /mysql- zrm.conf Nếu bạn chỉ muốn sao chép cơ sở dữ liệuMySQL osCommerce trong tập backup osCommerce, chúng ta đặt nó vào trong /etc/mysqlzrm/osCommerce /mysql- zrm.conf: vi /etc /mysql- zrm/osCommerce /mysql- zrm.conf databases=osCommerce 9, Tháo các... 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... 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... 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ủ MySQLtrê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... 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ệuMySQLtrên một máy chủ DebianSarge 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... 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/mysqlzrm/dailyrun/20060927100653... tôi cố gắng tạo một backup từ cùng một hệ thống DebianSarge 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... 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... 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/mysqlzrm/dailyrun/20060926202404: mysql- zrm action restore backup-set dailyrun -source-directory /var/lib/mysqlzrm/dailyrun/20060926202404... 060927 12:26:09 [ERROR] mysqld: unknown option ' ssl' Ghi vào tiện ích MySQLmysql -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: http://mysqlbackup.zmanda.com • mysql- zrm Manual: http://mysqlbackup.zmanda.com/index.php/Zmanda_Recovery_Manager_for_My . Sao lưu và khôi phục lại MySQL với mysql- zrm trên Debian Sarge
Ngu
ồ
n:quantrimang.com
Hướng dẫn này sẽ mô tả làm cách nào để sao lưu (backup) và khôi. (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ó