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

Tự động triển khai MySQL hoặc Cụm Postgres của bạn từ bản sao lưu

ClusterControl 1.7.1 giới thiệu một tính năng mới được gọi là Create Cluster from Backup, cho phép bạn triển khai một cụm dựa trên MySQL hoặc Postgres mới và khôi phục dữ liệu trên đó từ một bản sao lưu. Bài đăng trên blog này cho biết cách hoạt động của tính năng mới này và cách loại tự động hóa này có thể mang lại những cải tiến cho hoạt động cơ sở hạ tầng của bạn.

Giới thiệu:Tạo Cụm từ Sao lưu

Quản lý sao lưu là tính năng được người dùng yêu thích nhất và chúng tôi vừa nâng cấp nó lên một cấp độ tiếp theo. Chức năng mới này nghe có vẻ đơn giản - ClusterControl 1.7.1 có thể triển khai một cụm mới từ một bản sao lưu hiện có. Tuy nhiên, có nhiều thủ tục và kiểm tra liên quan để triển khai một cụm cấp sản xuất trực tiếp từ bản sao lưu. Việc khôi phục tự nó đi kèm với những thách thức riêng, chẳng hạn như:

  • Hậu quả khôi phục toàn bộ hoặc một phần
  • Sao lưu cơ sở và thứ tự sao lưu gia tăng của nó (để sao lưu gia tăng)
  • Giải mã sao lưu (nếu được mã hóa)
  • Tùy chọn công cụ khôi phục
  • Giải nén (nếu được nén)
  • Sao lưu luồng từ nguồn đến máy chủ đích
  • Sử dụng dung lượng ổ đĩa trong và sau khi khôi phục
  • Báo cáo tiến độ khôi phục

Kết hợp những điều trên với sự phức tạp và lặp đi lặp lại của các nhiệm vụ triển khai cụm cơ sở dữ liệu, bạn có thể tiết kiệm thời gian và giảm thiểu rủi ro trong việc chạy các thủ tục dễ xảy ra lỗi. Phần khó nhất từ ​​quan điểm của người dùng là chọn bản sao lưu nào để khôi phục. ClusterControl sẽ xử lý tất cả các công việc nặng nhọc đằng sau hiện trường và báo cáo kết quả cuối cùng sau khi kết thúc.

Các bước về cơ bản rất đơn giản:

  1. Thiết lập SSH không cần mật khẩu từ nút ClusterControl đến các máy chủ mới.
  2. Chọn một bản sao lưu hợp lý từ danh sách sao lưu hoặc tạo một bản sao lưu trong Sao lưu -> Tạo bản sao lưu .
  3. Nhấp vào Khôi phục -> Tạo Cụm từ Sao lưu và làm theo trình hướng dẫn triển khai.

Tính năng này được xây dựng đặc biệt cho MySQL Galera Cluster và PostgreSQL tại thời điểm hiện tại. Đây là những gì bạn sẽ thấy trong giao diện người dùng sau khi nhấp vào "Khôi phục" trên bản sao lưu hiện có:

Tùy chọn dưới cùng là những gì chúng tôi đang tìm kiếm. Tiếp theo, là hộp thoại tóm tắt về bản sao lưu đã chọn trước khi cấu hình triển khai:

Tiếp theo, trình hướng dẫn triển khai cụm cơ sở dữ liệu tương tự cho cụm tương ứng (MySQL Galera Cluster hoặc PostgreSQL) sẽ được hiển thị để định cấu hình một cụm mới:

Lưu ý rằng bạn phải chỉ định cùng tên người dùng và mật khẩu root / admin của cơ sở dữ liệu như mật khẩu mà bạn có trong bản sao lưu. Nếu không, việc triển khai sẽ không thành công nửa chừng khi khởi động nút đầu tiên. Nói chung, các thủ tục khôi phục và triển khai sẽ diễn ra theo trình tự sau:

  1. Cài đặt các phần mềm và phụ thuộc cần thiết trên tất cả các nút cơ sở dữ liệu.
  2. Bắt đầu nút đầu tiên.
  3. Phát trực tiếp và khôi phục bản sao lưu trên nút đầu tiên (có cờ tự động khởi động lại).
  4. Định cấu hình và thêm phần còn lại của các nút.

Một cụm cơ sở dữ liệu mới sẽ được liệt kê trong bảng điều khiển cụm ClusterControl sau khi công việc hoàn thành.

Bạn có thể thu được gì từ nó?

Có một số điều bạn có thể hưởng lợi từ tính năng này, như được giải thích trong các phần sau.

Kiểm tra tập dữ liệu của bạn trong các điều kiện khác nhau

Đôi khi, bạn có thể tự hỏi phiên bản cơ sở dữ liệu mới sẽ hoạt động hoặc hoạt động cho khối lượng công việc cơ sở dữ liệu của bạn và kiểm tra nó là cách duy nhất để biết. Đây là nơi mà tính năng này có ích. Nó cho phép bạn thực hiện các bài kiểm tra và điểm chuẩn trên nhiều biến liên quan có thể ảnh hưởng đến hiệu suất hoặc độ ổn định của cơ sở dữ liệu, chẳng hạn như phần cứng cơ bản, phiên bản phần mềm, nhà cung cấp và khối lượng công việc cơ sở dữ liệu hoặc ứng dụng.

Ví dụ đơn giản, có một cải tiến lớn về việc thực thi DDL giữa MySQL 5.6 và MySQL 5.7. Thao tác DROP sau đây trên bảng 10 triệu hàng chứng minh tất cả:

mysql-5.7> ALTER TABLE sbtest1 DROP COLUMN xx;
Query OK, 0 rows affected (1 min 58.12 sec)
mysql-5.6> ALTER TABLE sbtest1 DROP COLUMN xx;
Query OK, 0 rows affected (2 min 23.74 sec)

Có một cụm khác để so sánh thực sự cho phép chúng tôi đo lường sự cải thiện và biện minh cho việc di chuyển.

Di chuyển cơ sở dữ liệu với sao lưu logic

Sao lưu logic như mysqldump pg_dumpall là cách an toàn nhất để nâng cấp, hạ cấp hoặc di chuyển dữ liệu của bạn từ phiên bản hoặc nhà cung cấp này sang phiên bản hoặc nhà cung cấp khác. Tất cả các bản sao lưu hợp lý có thể được sử dụng để thực hiện di chuyển cơ sở dữ liệu. Các bước nâng cấp cơ sở dữ liệu về cơ bản rất đơn giản:

  1. Tạo (hoặc lên lịch) một bản sao lưu hợp lý - mysqldump cho MySQL hoặc pg_dumpall cho PostgreSQL
  2. Thiết lập SSH không cần mật khẩu từ nút ClusterControl đến các máy chủ mới.
  3. Chọn một bản sao lưu hợp lý đã tạo từ danh sách sao lưu.
  4. Nhấp vào Khôi phục -> Tạo Cụm từ Sao lưu và làm theo trình hướng dẫn triển khai.
  5. Xác minh việc khôi phục dữ liệu trên cụm mới.
  6. Trỏ ứng dụng của bạn đến cụm mới.

Tổng thời gian khôi phục cụm nhanh hơn

Hãy tưởng tượng một sự cố nghiêm trọng khiến cụm của bạn không thể chạy, chẳng hạn như lỗi lưu trữ tập trung ảnh hưởng đến tất cả các máy ảo kết nối với nó, bạn có thể nhận được một cụm thay thế gần như ngay lập tức (miễn là các tệp sao lưu được lưu trữ bên ngoài các nút cơ sở dữ liệu bị lỗi , nêu rõ ràng). Tính năng này có thể được tự động hóa thông qua ứng dụng khách s9s, nơi bạn có thể kích hoạt công việc thông qua giao diện dòng lệnh, ví dụ:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.101?master;192.168.0.102?slave;192.168.0.103?slave" \
--provider-version=11 \
--db-admin=postgres \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 9.6 - Test"
--backup-id=214 \
--log

Một điều cần lưu ý khi sử dụng tính năng này là sử dụng cùng tên người dùng và mật khẩu quản trị như những gì được lưu trữ trong bản sao lưu. Ngoài ra, SSH không có mật khẩu cho tất cả các nút cơ sở dữ liệu phải được cấu hình trước. Nếu không, nếu bạn muốn định cấu hình tương tác, chỉ cần sử dụng giao diện người dùng web.

Mở rộng quy mô thông qua sao chép không đồng bộ

Đối với MySQL Galera Cluster, cụm mới được tạo có khả năng được mở rộng thông qua sao chép không đồng bộ MySQL. Giả sử chúng tôi đã khôi phục một cụm mới trong văn phòng dựa trên bản sao lưu mới nhất từ ​​cụm sản xuất trong trung tâm dữ liệu và chúng tôi muốn cụm văn phòng tiếp tục sao chép từ cụm sản xuất, như được minh họa trong sơ đồ sau:

Sau đó, bạn có thể thiết lập liên kết sao chép không đồng bộ bằng cách sử dụng cách sau:

  1. Chọn một nút trong quá trình sản xuất và bật ghi nhật ký nhị phân (nếu bị vô hiệu hóa). Đi tới Nút -> chọn một nút -> Hành động với nút -> Bật tính năng ghi nhật ký nhị phân.

  2. Bật ghi nhật ký nhị phân trên tất cả các nút cho cụm văn phòng. Hành động này yêu cầu khởi động lại theo chu kỳ. Thao tác này sẽ được thực hiện tự động nếu bạn chọn "Có" trong menu thả xuống "Nút tự động khởi động lại":

    Nếu không, bạn có thể thực hiện thao tác này mà không cần thời gian chết bằng cách sử dụng Quản lý -> Nâng cấp -> Khởi động lại cuộn (hoặc khởi động lại thủ công từng nút một).

  3. Tạo người dùng nhân rộng trên cụm sản xuất bằng cách sử dụng Quản lý -> Lược đồ và Người dùng -> Người dùng -> Tạo Người dùng Mới:

  4. Sau đó, chọn một nút để sao chép sang nút chính trong cụm sản xuất và thiết lập liên kết sao chép:

    mysql> CHANGE MASTER master_host = 'prod-mysql1', master_user = 'slave', master_password = 'slavepassw0rd', master_auto_position = 1;
    mysql> START SLAVE;
  5. Xác minh xem bản sao đang chạy:

    mysql> SHOW SLAVE STATUS\G
    Đảm bảo Slave_IO_Thread và Slave_SQL_thread đang báo cáo 'Có'. Cụm của văn phòng sẽ bắt đầu bắt kịp với nút chính nếu nó bị tụt lại phía sau.

Đó là nó cho bây giờ, mọi người!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bỏ qua các cột trong tệp CSV khi nhập vào bảng MySQL bằng LOAD DATA INFILE?

  2. Làm việc với Trigger trong Cơ sở dữ liệu MySQL - Hướng dẫn

  3. GROUP_CONCAT ORDER THEO

  4. Tạo một chuỗi ngày

  5. hiển thị dữ liệu từ cơ sở dữ liệu SQL thành bảng php / html