Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khôi phục toàn bộ cụm MySQL hoặc MariaDB Galera từ bản sao lưu

Thực hiện sao lưu thường xuyên cụm cơ sở dữ liệu của bạn là điều bắt buộc để có tính khả dụng cao và khôi phục sau thảm họa. Nếu vì bất kỳ lý do gì mà bạn bị mất toàn bộ cụm của mình và phải khôi phục toàn bộ từ bản sao lưu, bạn sẽ cần một bản sao lưu đáng tin cậy và cập nhật để bắt đầu từ đó.

Các phương pháp hay nhất để sao lưu

Một số khuyến nghị cần xem xét để có một chế độ sao lưu theo lịch trình tốt:

  • Bạn sẽ có thể khôi phục hoàn toàn sau sự cố nghiêm trọng từ ít nhất hai lần sao lưu đầy đủ trước đó. Đề phòng trường hợp bản sao lưu đầy đủ gần đây nhất bị hỏng, bị mất hoặc bị hỏng,
  • Bản sao lưu của bạn phải chứa ít nhất một bản sao lưu đầy đủ trong một chu kỳ đã chọn, thường là hàng tuần,
  • Lưu trữ các bản sao lưu xa vị trí dữ liệu hiện tại, tốt nhất là ngoài trang web,
  • Sử dụng hỗn hợp mysqldump và Xtrabackup để tăng thêm độ an toàn và không dựa vào một phương pháp,
  • Kiểm tra khôi phục các bản sao lưu của bạn một cách thường xuyên, ví dụ:hai tháng một lần.

Thông thường, một bản sao lưu đầy đủ hàng tuần kết hợp với sao lưu gia tăng hàng ngày là đủ. Giữ một số bản sao lưu trong một khoảng thời gian luôn là một kế hoạch tốt, có thể giữ mỗi bản sao lưu hàng tuần trong một tháng. Điều này cho phép bạn khôi phục cơ sở dữ liệu cũ hơn trong trường hợp khẩn cấp hoặc nếu vì lý do nào đó mà bạn bị hỏng tệp sao lưu cục bộ.

mysqldump hoặc Xtrabackup

mysqldump rất có thể là cách phổ biến nhất để sao lưu MySQL. Nó thực hiện sao lưu dữ liệu hợp lý, đọc từ mỗi bảng bằng cách sử dụng các câu lệnh SQL sau đó xuất dữ liệu thành các tệp văn bản. Khôi phục một mysqldump dễ dàng như tạo tệp kết xuất. Hạn chế chính là nó rất chậm đối với cơ sở dữ liệu lớn, nó không "nóng" và nó xóa sạch vùng đệm InnoDB.

Xtrabackup thực hiện sao lưu nóng, không khóa cơ sở dữ liệu trong quá trình sao lưu và nói chung là nhanh hơn. Các bản sao lưu nóng rất quan trọng để có tính khả dụng cao, vì chúng chạy mà không chặn ứng dụng. Đây cũng là một yếu tố quan trọng khi sử dụng với Galera, vì Galera dựa vào sự sao chép đồng bộ. Tuy nhiên, việc khôi phục xtrabackup có thể hơi phức tạp bằng các cách thủ công.

ClusterControl hỗ trợ lập lịch cho cả mysqldump và Xtrabackup (đầy đủ và tăng dần), cũng như khôi phục sao lưu ngay từ giao diện người dùng.

Khôi phục hoàn toàn từ bản sao lưu

Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn cách khôi phục Xtrabackup (đầy đủ + tăng dần) vào một cụm trống đang chạy trên MariaDB Galera Cluster. Các bước này cũng sẽ hoạt động trên Percona XtraDB Cluster hoặc Galera Cluster cho MySQL từ Codership.

Trong cụm ban đầu của chúng tôi, chúng tôi đã lập lịch trình xtrabackup đầy đủ hàng ngày, với các bản sao lưu gia tăng được tạo mỗi giờ. Các bản sao lưu được lưu trữ trên ClusterControl như được hiển thị trong ảnh chụp màn hình sau:

Bây giờ, giả sử chúng ta đã mất cụm ban đầu và phải khôi phục toàn bộ vào một cụm mới. Các bước bao gồm:

  1. Thiết lập một máy chủ ClusterControl mới.
  2. Thiết lập một Cụm MariaDB mới.
  3. Xuất các bản ghi và tệp sao lưu sang máy chủ ClusterControl mới.
  4. Bắt đầu quá trình khôi phục.
  5. Bắt đầu các nút còn lại.

Sơ đồ sau minh họa kiến ​​trúc của chúng tôi cho bài tập này:

Bước 1 - Thiết lập Cụm MariaDB Mới

Cài đặt ClusterControl và triển khai một MariaDB Cluster mới. Đi tới ClusterControl -> Deploy -> Deploy Database Cluster -> MySQL Galera và chỉ định thông tin cần thiết trong hộp thoại triển khai:

Nhấp vào nút Triển khai và bắt đầu triển khai. Vì chúng tôi chỉ có một cụm trên máy chủ cũ nên ID cụm phải giống hệt nhau (ID cụm:1) trong phiên bản mới này.

Bước 2 - Xuất và nhập các tệp sao lưu Khi cụm được triển khai, chúng ta sẽ phải nhập các bản sao lưu từ máy chủ ClusterControl cũ vào máy chủ mới. Đầu tiên, xuất nội dung của cmon.backup_records để kết xuất tệp. Vì ID cụm cũ và ID mới giống hệt nhau, chúng tôi chỉ cần sửa đổi tệp kết xuất với địa chỉ IP mới và nhập nó vào nút ClusterControl mới. Nếu ID cụm khác nhau, thì bạn phải thay đổi giá trị “cid” tương ứng bên trong tệp kết xuất trước khi nhập vào CMON DB trên nút mới. Ngoài ra, việc giữ vị trí lưu trữ sao lưu như trong máy chủ cũ sẽ dễ dàng hơn để ClusterControl mới có thể xác định vị trí các tệp sao lưu trong máy chủ mới.

Trên máy chủ ClusterControl cũ, xuất bảng backup_records thành các tệp kết xuất:

$ mysqldump -uroot -p --single-transaction --no-create-info cmon backup_records > backup_records.sql

Sau đó, thực hiện sao chép từ xa các tệp sao lưu từ máy chủ cũ sang máy chủ ClusterControl mới:

$ scp -r /root/backups 192.168.55.150:/root/
$ scp ~/backup_records.sql 192.168.55.150:~

Tiếp theo là sửa đổi các tệp kết xuất để phản ánh địa chỉ IP máy chủ ClusterControl mới. Đừng quên thoát khỏi dấu chấm trong địa chỉ IP:

$ sed -i "s/192\.168\.55\.170/192\.168\.55\.150/g" backup_records.sql

Trên máy chủ ClusterControl mới, nhập các tệp kết xuất:

$ mysql -uroot -p cmon < backup_records.sql

Xác minh rằng danh sách sao lưu là chính xác trong máy chủ ClusterControl mới:

Như bạn có thể thấy, tất cả các lần xuất hiện của địa chỉ IP trước đó (192.168.55.170) đã được thay thế bằng địa chỉ IP mới (192.168.55.150). Bây giờ chúng tôi đã sẵn sàng để thực hiện khôi phục trong máy chủ mới.

Bước 3 - Thực hiện khôi phục

Thực hiện khôi phục thông qua giao diện người dùng ClusterControl là một bước chỉ và nhấp chuột đơn giản. Chọn bản sao lưu để khôi phục và nhấp vào nút "Khôi phục". Chúng tôi sẽ khôi phục bản sao lưu gia tăng mới nhất hiện có (Sao lưu:9). Nhấp vào nút “Khôi phục” ngay bên dưới tên sao lưu và bạn sẽ thấy hộp thoại trước khôi phục sau:

Có vẻ như kích thước bản sao lưu khá nhỏ (165,6 kB). Điều đó không thực sự quan trọng vì ClusterControl sẽ chuẩn bị tất cả các bản sao lưu gia tăng được nhóm lại trong Bộ dự phòng 6, chứa toàn bộ Xtrabackup. Bạn cũng có một số tùy chọn sau khôi phục:

  • Bật khôi phục bản sao lưu - Chọn nút để khôi phục bản sao lưu trên.
  • Tmp Dir - Thư mục sẽ được sử dụng trên máy chủ ClusterControl cục bộ làm nơi lưu trữ tạm thời trong quá trình chuẩn bị sao lưu. Nó phải lớn bằng thư mục dữ liệu MySQL ước tính.
  • Cụm Bootstrap từ nút được khôi phục - Vì đây là một cụm mới, chúng tôi sẽ BẬT nút này để BẬT để ClusterControl sẽ tự động khởi động cụm sau khi khôi phục thành công.
  • Tạo một bản sao của datadir trước khi khôi phục bản sao lưu - Nếu dữ liệu được khôi phục bị hỏng hoặc không như những gì bạn mong đợi, bạn sẽ có một bản sao lưu của thư mục dữ liệu MySQL trước đó. Vì đây là một cụm mới nên chúng tôi sẽ bỏ qua cụm này.

Quá trình khôi phục Percona Xtrabackup sẽ khiến cụm bị dừng. ClusterControl sẽ:

  1. Dừng tất cả các nút trong cụm.
  2. Khôi phục bản sao lưu trên nút đã chọn.
  3. Khởi động nút đã chọn.

Để xem tiến trình khôi phục, hãy chuyển đến Hoạt động -> Công việc -> Khôi phục Sao lưu và nhấp vào nút “Chi tiết công việc đầy đủ”. Bạn sẽ thấy một cái gì đó như thế này:

Một điều quan trọng mà bạn cần làm là theo dõi đầu ra của nhật ký lỗi MySQL trên nút đích (192.168.55.151) trong quá trình khôi phục. Sau khi quá trình khôi phục hoàn tất và trong quá trình khởi động, bạn sẽ thấy các dòng sau bắt đầu xuất hiện:

Version: '10.1.22-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
2017-04-07 18:03:51 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:51 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:51 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:52 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:53 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:54 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)
2017-04-07 18:03:55 140608191986432 [Warning] Access denied for user 'cmon'@'192.168.55.150' (using password: YES)

Không hoảng loạn. Đây là một hành vi được mong đợi vì bộ sao lưu này không lưu trữ thông tin xác thực đăng nhập cmon của mật khẩu cmon ClusterControl mới. Nó đã khôi phục / thay thế người dùng cmon cũ. Những gì bạn cần làm là cấp lại cho người dùng cmon trở lại máy chủ bằng cách chạy câu lệnh sau trên nút DB này:

GRANT ALL PRIVILEGES ON *.* to [email protected]'192.168.55.150' IDENTIFIED BY 'mynewCMONpassw0rd' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Sau đó, ClusterControl sẽ có thể kết nối với nút khởi động và xác định nút và trạng thái sao lưu. Nếu mọi thứ đều ổn, bạn sẽ thấy một cái gì đó như thế này:

Tại thời điểm này, nút đích đã được khởi động và đang chạy. Chúng ta có thể bắt đầu các nút còn lại trong Nút -> chọn nút -> Nút Bắt đầu và chọn hộp kiểm “Thực hiện Khởi động Ban đầu”:

Quá trình khôi phục hiện đã hoàn tất và bạn có thể mong đợi Hiệu suất -> Tăng trưởng DB báo cáo kích thước cập nhật của tập dữ liệu mới được khôi phục của chúng tôi:

Chúc bạn khôi phục vui vẻ!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 12.04 (Precise Pangolin)

  2. MySQL:nhiều bảng hay một bảng có nhiều cột?

  3. MySQL DROP INDEX

  4. Hợp nhất hai bảng với số cột khác nhau

  5. LỖI 1698 (28000):Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost'