Làm việc với Bản sao đa chủ của MySQL - Giữ chế độ chờ thực sự nóng. Tạp chí cơ sở dữ liệu


Bài viết này tập trung vào thế giới tuyệt vời của sao chép đa chủ và tầm quan trọng của việc hiểu nó, làm việc với nó và duy trì chế độ chờ nóng thực sự, đặc biệt là khi doanh nghiệp của bạn cần chuyển đổi dự phòng nhanh chóng với ít thời gian ngừng hoạt động nhất. Bước tiếp theo để chuyển đổi dự phòng tự động, nhanh hơn là hiểu cách thiết lập và triển khai sao chép đa chủ

Bài viết này là một phần của loạt bài sao chép và thất bại
thành thạo sao chép master-master, sử dụng nó và duy trì sự nóng bỏng thực sự
Chế độ chờ là rất quan trọng, đặc biệt nếu doanh nghiệp của bạn cần nhanh chóng
thời gian chết ít nhất trong quá trình chuyển đổi dự phòng

Tôi đã xuất bản một tác phẩm vào tháng trước
hôm nay chúng ta đang đi sâu vào thế giới chuyển đổi dự phòng thủ công hai nút
Biết cách thiết lập và triển khai sao chép đa chủ là một thế giới tuyệt vời
Bước tiếp theo hướng tới chuyển đổi dự phòng tự động, nhanh hơn là sao chép đa chủ

Có rất nhiều yếu tố mà
muốn định cấu hình bản sao đa chủ trong cài đặt hoạt động của bạn
Hợp lý hóa các nhiệm vụ bảo trì quan trọng như bảng ALTER và
Về cơ bản, chúng tôi đang tiến gần đến tốc độ nhanh hơn bằng cách thực hiện kết xuất toàn bộ và tải lại dữ liệu
trong trường hợp mất điện theo kế hoạch hoặc ngoài kế hoạch, chuyển đổi dự phòng song phương
có thể được mô tả theo nhiều cách

Một thiết lập đa chủ thực sự là
khi một chương trình phần mềm đang đọc và ghi dữ liệu vào cả hai máy chủ
Chúng tôi sẽ không đi vào tất cả các lý do tại sao đây không phải là thiết lập tốt nhất
bây giờ, nhưng hãy xem xét cách xử lý tình huống dữ liệu bị chia tách
không có bên thứ ba trung lập làm trọng tài viên

Thiết lập đa chủ chúng tôi sẽ
bìa được gọi trong bài viết này là bản sao chính-chính
Tương tự như sao chép thông thường, loại sao chép này;
Chạy một bản sao giúp dễ dàng chuyển đổi dự phòng theo cả hai cách, không chỉ một
Sao chép chính-chính trên cụm hai nút có thể giúp

  • kế hoạch
    thay đổi lược đồ ((các) câu lệnh ALTER lớn)
  • Đầy
    đổ ra, phá hủy và tải lại
  • Một số
    Mất điện phần cứng
    • Tùy
      dựa trên sự cố phần cứng và chất lượng dịch vụ bạn cung cấp cho khách hàng của mình
      theo thỏa thuận cấp độ dịch vụ của bạn
    • Cho
      Hầu hết thời gian, bản sao master-master sẽ cung cấp một
      lỗi phần cứng, cả trong các trường hợp không nghiêm trọng và nhiều khả năng là trong các trường hợp thảm khốc
      cũng

Trong một master-master nhân rộng
cặp, một máy chủ đang xử lý tải đọc và ghi, và máy chủ kia
máy chủ thứ hai được coi là máy chủ "dự phòng nóng"
chế độ chờ" được sử dụng cho các hoạt động không cần thiết, chẳng hạn như một lần tắt kéo dài
Máy chủ dự phòng nóng cũng có thể được sử dụng để thực hiện các truy vấn, kết xuất dữ liệu cho QA hoặc kiểm tra
được sử dụng cho các tác vụ quan trọng hơn như quản lý tải đã đọc, tạo bản sao lưu và
sao chép (trong thiết lập này, sao chép là một. )

Trong cả hai trường hợp, liệu
"Chế độ chờ nóng" có được sử dụng cho các chức năng quan trọng hay không, điều gì
nằm trong bộ đệm sẽ không khớp chính xác với máy chủ chính;
trừ khi bạn sử dụng một vài phương pháp đơn giản, đó là
thủ tục thiết lập sao chép master-master đơn giản

thiết lập

Trong trường hợp này, tôi đã
một máy chủ MySQL đang hoạt động trên hai máy chủ khác nhau
testhost1 đang hoạt động trên cổng 192. 1. 101Testhost2 là tên của máy chủ thứ hai
hoạt động trên 192. 1. 102Làm cho hai máy chủ này sao chép là mục tiêu chính của chúng tôi
với nhau

Các bước

1. Ensure
rằng mỗi máy chủ đã bật log-bin

2. Ensure
rằng mỗi máy chủ có một ID máy chủ riêng biệt

a. Đối với điều này
Chẳng hạn, id máy chủ của testhost1 là 1 và id máy chủ của testhost2 là 2

b. Ensure
trên testhost2 chỉ đọc được kích hoạt

1. Không bắt buộc,
nhưng nó có thể ngăn chặn những cơn đau đầu trong tương lai và việc thêm nó rất đơn giản
In "đặt chỉ đọc = TẮT" trong trường hợp chuyển đổi dự phòng

c. Chạy một
hiển thị trạng thái chủ testhost1 (192. 1681. 101)

_10

3. Hiện nay
thay đổi chủ thành câu lệnh mà bạn sẽ sử dụng

________Đầu tiên

4. Chạy
bắt đầu nô lệ sau khi thay đổi chủ thành câu lệnh trên testhost2

5. Chạy chương trình
trạng thái nô lệ của testhost2 để xác nhận rằng quá trình sao chép đang hoạt động và bắt kịp
chính xác

Ghi chú
Bây giờ bạn đã thiết lập bản sao testhost1 sang testhost2

6. Nói lại
nhưng tạo luồng sao chép từ testhost2 sang testhost1 trong các bước từ 4 đến 6

Ghi chú
Việc sao chép sẽ diễn ra tương ứng giữa testhost1 và testhost2

Thuật ngữ,
Một máy chủ có thể thay thế nút khác bằng "chế độ chờ nóng"
Lưu ý thêm, bạn cần đảm bảo rằng, trong quá trình khởi động, có rất ít hoặc không có
Một nút cơ sở dữ liệu sẽ có thể quản lý MỌI THỨ trong trường hợp nút bị lỗi
Nói cách khác, hãy cẩn thận để không can thiệp vào lưu lượng ứng dụng (đọc và viết)
Bằng cách chia đều hoạt động đọc của bạn thành nhiều
Đảm bảo rằng bạn đã kiểm tra tải sản xuất hoặc gần với tải đó trên một trong hai nút
trước khi phân chia tải giữa hai nút, nút

Có một số phương pháp để thực hiện
Bạn có thể tạo tập lệnh của riêng mình, chỉ cần đảm bảo máy chủ dự phòng nóng của bạn đủ ấm
dựa trên những gì MySQLSniffer
hoặc bạn có thể tiết kiệm rất nhiều thời gian bằng cách sử dụng công cụ tiêu hóa truy vấn mk của MaatKit
đặc biệt

Tôi muốn nhắc nhở mọi người
Sử dụng phương pháp này để đọc tài liệu, thử nghiệm và bổ sung
điều này trực tiếp từ perl mk-query-digest vào môi trường sản xuất của bạn
Chế độ chờ nóng thực sự chỉ có thể đạt được bằng tài liệu hoặc ít nhất
thực sự gần với nó

	shell> perldoc /usr/bin/mk-query-digest

Xem SHOW FULL của máy chủ
PROCESSLIST, loại bỏ tất cả trừ truy vấn CHỌN rồi chạy lại truy vấn
sử dụng thời gian từ việc phát lại chúng trên một máy chủ khác, sau đó phân tích
hiệu suất của họ

mk-query-digest --processlist h=host1 --execute h=another_server --filter '$event->{fingerprint} =~ m/^select/'

cờ bổ sung mà bạn
nên tính đến việc sao chép tự động giữa các bản gốc là
đồng thời, hãy ghi nhớ cài đặt chỉ đọc là tùy chọn
nếu bạn không kích hoạt nó trên máy chủ dự phòng nóng, thì đây là thiết lập
Khởi động lại chế độ chờ nóng của bạn với chế độ chỉ đọc được bật để tránh đau đầu sau đó

Một số kết luận

thuật ngữ
Thuật ngữ "chế độ chờ nóng" không rõ ràng khi tôi nói chuyện với nhiều MySQL
Để đảm bảo bạn có đại diện chính xác nhất của quản trị viên,
Sử dụng một công cụ như mk-query-digest cho tải sản xuất của máy chủ dự phòng nóng
bởi vì nó ở đó và sẵn sàng để sử dụng;
Hãy thử proxy MySQL, MySQLSniffer hoặc một chương trình tùy chỉnh;
Hãy thận trọng với sao chép master-master vì nó có thể khó nhưng thú vị
chuyển đổi dự phòng trong khi sao lưu dự phòng nóng đang hoạt động

Như mọi khi, số dặm có thể thay đổi…
Kiểm tra, Kiểm tra, Kiểm tra và sau đó Lặp lại

»


Xem tất cả các bài viết của chuyên mục
Chris Schneider


Biết và làm việc với sao chép chính-chính và duy trì chế độ chờ nóng thực sự là rất quan trọng, đặc biệt khi doanh nghiệp của bạn yêu cầu chuyển đổi dự phòng nhanh với ít thời gian ngừng hoạt động nhất. Bài viết này tập trung vào thế giới tuyệt vời của sao chép đa chủ. Biết cách thiết lập và triển khai sao chép đa chủ là bước tiếp theo để chuyển đổi dự phòng tự động, nhanh hơn

Bài viết này là phần tiếp theo của loạt bài sao chép/chuyển đổi dự phòng
Biết và làm việc với bản sao master-master và duy trì sự nóng bỏng thực sự
chế độ chờ là rất quan trọng, đặc biệt là khi doanh nghiệp của bạn yêu cầu nhanh
chuyển đổi dự phòng với ít thời gian chết nhất

Tháng trước tôi đã viết một bài báo
trên chuyển đổi dự phòng thủ công hai nút. Hôm nay chúng ta đang đi sâu vào
thế giới tuyệt vời của bản sao đa chủ. Biết cách thiết lập và triển khai
sao chép đa chủ là bước tiếp theo để chuyển đổi dự phòng tự động, nhanh hơn

Có nhiều lý do tại sao bạn
muốn thiết lập bản sao đa chủ trong môi trường sản xuất của bạn
Một số lý do là để hợp lý hóa các bảo trì lớn như bảng ALTER và
kết xuất toàn bộ và tải lại dữ liệu. Về cơ bản, chúng ta đang tiến gần hơn đến nhanh hơn
chuyển đổi dự phòng hai bên trong trường hợp mất điện theo kế hoạch hoặc ngoài kế hoạch. đa chủ
có thể được định nghĩa theo một vài cách khác nhau

Một thiết lập đa chủ thực sự là
khi một ứng dụng ghi và đọc dữ liệu từ cả hai máy chủ. Đây là
không phải là một thiết lập tối ưu vì một số lý do. Chúng tôi sẽ không nhận được vào họ
bây giờ, nhưng hãy nghĩ về cách phục hồi sau tình huống dữ liệu bị chia cắt
không có trọng tài. Tôi chắc chắn rằng bạn nhận được quan điểm của tôi

Thiết lập đa chủ chúng tôi sẽ
trang bìa trong bài viết này được gọi cụ thể hơn là bản sao master-master
Kiểu sao chép này giống như sao chép bình thường;
sao chép, bạn có thể dễ dàng chuyển đổi dự phòng theo cả hai cách, không chỉ một cách. Chạy một
cụm hai nút với bản sao master-master có thể hỗ trợ

  • kế hoạch
    thay đổi lược đồ ((các) câu lệnh ALTER lớn)
  • Đầy
    đổ ra, phá hủy và tải lại
  • Một số
    Mất điện phần cứng
    • Tùy
      về lỗi phần cứng và mức độ dịch vụ bạn cung cấp cho khách hàng của mình
      dựa trên thỏa thuận cấp độ dịch vụ của bạn
    • Cho
      phần lớn, sao chép master-master sẽ cung cấp một phần tâm trí trong một
      lỗi phần cứng không nghiêm trọng và nhiều khả năng là lỗi phần cứng nghiêm trọng
      cũng

Trong một master-master nhân rộng
cặp, một trong các máy chủ đang thực hiện cả tải đọc và ghi trong khi
thứ hai được coi là máy chủ "dự phòng nóng". Thông thường, "nóng
chế độ chờ" được sử dụng cho các mục đích không cần thiết, như chạy một lần trong thời gian dài
chạy truy vấn, kết xuất dữ liệu cho QA hoặc kiểm tra. Máy chủ dự phòng nóng cũng có thể được
được sử dụng cho các mục đích thiết yếu hơn như chạy tải đọc, sao lưu và
sao chép (sao chép được đưa ra với thiết lập này. )

Trong cả hai trường hợp, liệu
"chế độ chờ nóng" có được sử dụng cho các mục đích thiết yếu hay không, điều gì
nằm trong bộ nhớ đệm’ sẽ không giống với bộ đệm của máy chủ chính;
là, trừ khi bạn sử dụng một vài kỹ thuật đơn giản. Đầu tiên, chúng ta hãy đi qua
các bước đơn giản để thiết lập sao chép master-master

thiết lập

Trong ví dụ này, tôi đã có
một máy chủ MySQL chạy trên hai máy chủ riêng biệt. Máy chủ đầu tiên được gọi là
testhost1, chạy trên 192. 168. 1. 101. Máy chủ thứ hai được gọi là testhost2,
chạy trên 192. 168. 1. 102. Mục tiêu chính của chúng tôi là sao chép hai máy chủ này
với nhau

Các bước

1.   Ensure
đăng nhập đó được bật trên mỗi máy chủ

2.   Ensure
rằng mỗi máy chủ có id máy chủ duy nhất của riêng mình

a. Đối với điều này
ví dụ id máy chủ trên testhost1 là 1 và testhost2 là 2

b.   Ensure
chỉ đọc được bật trên testhost2

1. Không bắt buộc,
nhưng nó có thể giúp bạn không phải đau đầu, ngoài ra, không khó để thêm
trong "đặt chỉ đọc = TẮT" trong tình huống chuyển đổi dự phòng

c. Chạy một
hiển thị trạng thái chính trên testhost1 (192. 168. 1. 101)

mysql> show master statusG
*************************** 1. row ***************************
File: binary-logs.000002
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

3. Hiện nay
tạo chủ thay đổi của bạn để tuyên bố

	CHANGE MASTER TO
	MASTER_HOST='192.168.1.101,
	MASTER_USER='repluser',
	MASTER_PASSWORD='bigsecret',
	MASTER_PORT=3306,
	MASTER_LOG_FILE='binary-logs.000002',
	MASTER_LOG_POS=107,
	MASTER_CONNECT_RETRY=10;

4. Chạy
thay đổi master thành câu lệnh trên testhost2 và sau đó chạy start Slave

5. Chạy chương trình
trạng thái nô lệ trên testhost2 để đảm bảo rằng quá trình sao chép được bắt kịp và đang chạy
chính xác

Ghi chú
bây giờ bạn sẽ có thiết lập sao chép từ testhost1 sang testhost2

6. Nói lại
bước 4 đến bước 6 nhưng tạo luồng sao chép từ testhost2 sang testhost1

Ghi chú
bây giờ bạn sẽ có bản sao di chuyển từ và sang testhost1 và testhost2

Thuật ngữ,
"chế độ chờ nóng", là một máy chủ có thể tiếp quản nút khác với
tối thiểu hoặc không có thời gian khởi động. Như một lưu ý phụ, bạn phải đảm bảo rằng, trong
trường hợp nút bị lỗi, một nút cơ sở dữ liệu sẽ có thể xử lý TẤT CẢ
lưu lượng ứng dụng (đọc và viết). Nói cách khác, hãy cẩn thận bạn không
ngụy trang các vấn đề về dung lượng thông lượng bằng cách chia đều hoạt động đọc của bạn trên
hai nút. Hãy chắc chắn rằng bạn kiểm tra tải sản xuất, hoặc gần với nó, trên một
nút trước khi bạn chia tải giữa hai nút

Có một số cách để làm cho
đảm bảo máy chủ dự phòng nóng của bạn đủ ấm. Bạn có thể viết kịch bản của riêng bạn
dựa trên những gì MySQLSniffer
hoặc bạn có thể tiết kiệm rất nhiều thời gian và chỉ cần sử dụng một công cụ trong MaatKit, mk-query-digest
đặc biệt

Tôi muốn nhắc nhở bất cứ ai
thử kỹ thuật này để đọc tài liệu sau đó kiểm tra trước khi thêm
điều này với môi trường sản xuất của bạn. Trực tiếp từ mk-query-digest perl
tài liệu là chìa khóa để hoàn thành chế độ chờ nóng thực sự, hoặc ít nhất
thực sự gần với nó

	shell> perldoc /usr/bin/mk-query-digest

Xem SHOW FULL của máy chủ
DANH SÁCH QUY TRÌNH, lọc ra mọi thứ trừ các truy vấn CHỌN và phát lại các truy vấn
chống lại một máy chủ khác, sau đó sử dụng thời gian từ việc phát lại chúng để phân tích
hiệu suất của họ

mk-query-digest --processlist h=host1 --execute h=another_server --filter '$event->{fingerprint} =~ m/^select/'

cờ bổ sung mà bạn
nên xem xét để sao chép tổng thể và tự động hóa là
và. Ghi nhớ cài đặt chỉ đọc tùy chọn trong khi
thiết lập… tốt, nếu bạn không kích hoạt nó trên máy chủ dự phòng nóng thì tại đây
đến một cơn đau đầu nhỏ. Khởi động lại chế độ chờ nóng của bạn với chế độ chỉ đọc được bật

Một số kết luận

thuật ngữ
"chế độ chờ nóng" bị lỏng khi tôi nói chuyện với MySQL khác
quản trị viên. Để đảm bảo rằng bạn có đại diện gần nhất của
tải sản xuất trên máy chủ dự phòng nóng, hãy sử dụng thứ gì đó như mk-query-digest
bởi vì nó đã ở đó và sẵn sàng để đi. Nếu bạn muốn một giải pháp khác
dùng thử MySQL proxy, MySQLSniffer hoặc giải pháp cây nhà lá vườn;
thử thách nhưng nó có thể rất vui. Hãy cẩn thận với bản sao master-master
chuyển đổi dự phòng trong khi các bản sao lưu đang chạy ở chế độ chờ nóng

Như mọi khi, số dặm có thể thay đổi…
KIỂM TRA, KIỂM TRA, KIỂM TRA rồi KIỂM TRA thêm nữa

»


Xem tất cả các bài viết của chuyên mục
Chris Schneider