1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Sao lưu và khôi phục lại MySQL với mysql-zrm trên Debian Sarge docx

17 523 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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 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…))

Đ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ên MySQL 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 Debian Sarge 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

Trang 2

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-zrm trên hệ thống Debian Sarge 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

Trang 3

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ó sao lư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 MySQL và 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

Trang 4

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 sao lưu các file quan trọng cho MySQL thứ bản

Nếu bạn chỉ muốn sao lư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

Trang 5

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 sao lư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-/var/lib/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

Trang 6

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

Trang 7

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

Trang 8

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

set,date,level,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

Trang 9

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

Trang 10

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ữ

Trang 11

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

Trang 12

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ừ 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ũ

Ngày đăng: 18/01/2014, 15:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w