Bộ định tuyến mysql nhiều máy chủ

Thành phần này chịu trách nhiệm phân phối lưu lượng giữa các thành viên của cụm. Đây là một giải pháp giống như proxy để ẩn cấu trúc liên kết cụm khỏi các ứng dụng, vì vậy các ứng dụng không cần biết thành viên nào của cụm là nút chính và nút nào là phụ

Công cụ này có khả năng thực hiện phân tách đọc/ghi bằng cách hiển thị các giao diện khác nhau. Một thiết lập phổ biến là có một giao diện đọc-ghi và một giao diện chỉ đọc. Đây là hành vi mặc định cũng hiển thị 2 giao diện tương tự để sử dụng giao thức x (i. e. được sử dụng cho các hoạt động CRUD và các cuộc gọi không đồng bộ)

Việc phân chia đọc và ghi được thực hiện bằng cách sử dụng khái niệm vai trò. Chính cho ghi và Phụ cho chỉ đọc. Điều này tương tự như cách các thành viên của cụm được đặt tên. Ngoài ra, mỗi giao diện được hiển thị qua cổng TCP nên các ứng dụng chỉ cần biết IP. kết hợp cổng được sử dụng để ghi và cổng được sử dụng để đọc. Sau đó, Bộ định tuyến MySQL sẽ xử lý các kết nối đến các thành viên cụm tùy thuộc vào loại lưu lượng truy cập đến máy chủ

Bộ định tuyến MySQL là một công cụ rất đơn giản, có thể quá đơn giản vì nó là cân bằng tải lớp bốn và thiếu một số tính năng nâng cao mà một số đối thủ cạnh tranh của nó có (e. g. ProxySQL)

Dưới đây là danh sách ngắn các tính năng quan trọng nhất của MySQL Router

  • Như đã đề cập, phân chia đọc và ghi dựa trên vai trò
  • Cân bằng tải cho cả đọc và ghi sử dụng các thuật toán khác nhau
  • Cấu hình được lưu trữ trong tệp kiểm tra cấu hình
  • Tự động phát hiện cấu trúc liên kết cụm bằng cách kết nối và truy xuất thông tin, dựa trên thông tin này, bộ định tuyến tự cấu hình với các quy tắc mặc định
  • Tự động phát hiện các nút bị lỗi và chuyển hướng lưu lượng tương ứng

Các thuật toán được sử dụng để định tuyến

Một điều quan trọng cần đề cập là các thuật toán định tuyến chiến lược có sẵn, vì chúng được gán theo mặc định tùy thuộc vào chế độ định tuyến

  • Đối với chế độ CHÍNH (i. e. nút người viết – hoặc các nút). sử dụng thuật toán có sẵn đầu tiên để chọn nút ghi đầu tiên từ danh sách ghi và trong trường hợp không thành công sẽ chuyển sang nút tiếp theo trong danh sách. Nếu nút bị lỗi hoạt động trở lại, nó sẽ tự động được thêm vào danh sách máy chủ và lại trở thành CHÍNH khi cụm chỉ định trạng thái này. Khi không có người ghi thì định tuyến ghi bị dừng
  • Đối với chế độ chỉ đọc (i. e. đọc các nút). sử dụng thuật toán quay vòng giữa các máy chủ được liệt kê trong biến điểm đến. Chế độ này phân chia lưu lượng đọc giữa tất cả các máy chủ theo cách đồng đều

Các thuật toán định tuyến_chiến lược bổ sung

  • tiếp theo có sẵn. tương tự như lần đầu tiên có sẵn nhưng trong trường hợp này, một nút bị lỗi được đánh dấu là đã bị hỏng và không thể quay lại vòng quay
  • quay vòng với dự phòng. giống như vòng tròn tính điểm nhưng nó bao gồm khả năng trong trường hợp này là sử dụng các máy chủ từ danh sách chính (người viết) để phân phối lưu lượng đọc

Cấu hình mẫu

Vì mục đích hiệu suất, bạn nên thiết lập Bộ định tuyến MySQL ở cùng một nơi với ứng dụng, xem xét một phiên bản trên mỗi máy chủ ứng dụng

Tại đây, bạn có thể thấy tệp cấu hình mẫu được tạo tự động bởi chức năng --bootstrap

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

$con mèo / vv / mysqlrouter/mysqlrouter.conf

# Tệp được tạo tự động trong quá trình khởi động Bộ định tuyến MySQL

[MẶC ĐỊNH]

tên = hệ thống

người dùng = mysqlrouter

keyring_path =/ var / lib/mysqlrouter/keyring

master_key_path =/ etc / mysqlrouter/mysqlrouter.key

connect_timeout = 30

read_timeout = 30

[máy ghi]

cấp độ = THÔNG TIN

[metadata_cache. percona]

router_id = 4

bootstrap_server_addresses = mysql. // 192. 168. 70. 4. 3306,mysql. // 192. 168. 70. 3. 3306,mysql. // 192. 168. 70. 2. 3306

người dùng = mysql_router4_56igr8pxhz0m

metadata_cluster = percona

ttl = 5

[định tuyến. percona_default_rw]

địa chỉ liên kết = 0.0.0.0

bind_port = 6446

đích = siêu dữ liệu - bộ đệm: // percona / mặc định?role=PRIMARY

routing_strategy = vòng - robin

giao thức = cổ điển

[định tuyến. percona_default_ro]

địa chỉ liên kết = 0.0.0.0

bind_port = 6447

đích = siêu dữ liệu - bộ đệm: // percona / mặc định?role=SECONDARY

routing_strategy = vòng - robin

giao thức = cổ điển

[định tuyến. percona_default_x_rw]

địa chỉ liên kết = 0.0.0.0

bind_port = 64460

đích = siêu dữ liệu - bộ đệm: // percona / mặc định?role=PRIMARY

routing_strategy = vòng - robin

giao thức = x

[định tuyến. percona_default_x_ro]

địa chỉ liên kết = 0.0.0.0

bind_port = 64470

đích = siêu dữ liệu - bộ đệm: // percona / mặc định?role=SECONDARY

routing_strategy = vòng - robin

giao thức = x

Chúng tôi gần như đã hoàn thành, chỉ còn một bài viết. Bài viết cuối cùng là về MySQL Shell thành phần thứ ba của chúng tôi, vì vậy hãy tiếp tục đọc

Bạn cũng có thể thích

Percona đồng nghĩa với hiệu suất MySQL được tối ưu hóa. Xem hội thảo trên web của chúng tôi về mở rộng quy mô và tính sẵn sàng cao của MySQL để biết thông tin chi tiết về cách làm cho cơ sở dữ liệu của bạn chạy nhanh hơn và cách làm cho cơ sở dữ liệu được tối ưu hóa hơn trước. Giám đốc điều hành Percona Peter Zaitsev tổ chức hội thảo trên web

Percona XtraDB Cluster (PXC) là một giải pháp phân cụm MySQL có tính sẵn sàng cao. Nó là nguồn mở và có khả năng đa chủ. Percona đã tích hợp PXC với ProxySQL để đáp ứng hơn nữa nhu cầu phân cụm và tính sẵn sàng cao của bạn. Xem hội thảo trên web của chúng tôi để tìm hiểu thêm và nhấp vào đây để tìm hiểu cách thực hiện nâng cấp lược đồ bằng PXC