2008-08-11 35 views
10

Khi tôi có hai máy chủ mysql có công việc khác nhau (giữ cơ sở dữ liệu khác nhau) nhưng muốn có thể sử dụng một trong số chúng để trượt khi người kia không thành công, bạn sẽ đề nghị cách giữ dữ liệu trên cả hai đều bằng "gần với thời gian thực"?Sao chép MySQL cho kịch bản dự phòng

Rõ ràng không thể tạo cơ sở dữ liệu đầy đủ mỗi x phút một lần.

Tôi đã đọc về số Binary Log, đó là cách tôi cần phải thực hiện? Điều đó sẽ không làm chậm máy chủ dự phòng rất nhiều? Có cách nào để không bao gồm một số bảng trong nhật ký nhị phân - nơi mà dữ liệu đã thay đổi không quan trọng?

+0

Tôi đã gặp sự cố tương tự chính xác này, vẫn chưa hoàn toàn chắc chắn nên tạo ra điều gì. [Đây là câu hỏi SO của tôi với một vài gợi ý khác được đưa ra] (http://stackoverflow.com/questions/3798/full-complete-mysql-db-replication-ideas-what-do-people-do)./mp – mauriciopastrana

Trả lời

2

Nhật ký nhị phân chắc chắn là cách để đi. Tuy nhiên, bạn nên lưu ý rằng với MySQL bạn không thể chỉ lật qua lại giữa các máy chủ như thế.

Một máy chủ sẽ là chính và người kia sẽ là nô lệ. Bạn viết/đọc cho chủ, nhưng chỉ có thể đọc từ máy chủ nô lệ. Nếu bạn từng viết cho nô lệ, họ sẽ không đồng bộ và không có cách nào dễ dàng để họ đồng bộ hóa lại (về cơ bản, bạn phải trao đổi chúng để chủ nhân là nô lệ mới, nhưng đây là một quy trình thủ công tẻ nhạt).

Nếu bạn cần cơ sở dữ liệu sao lưu có thể thay thế nhanh, bạn có thể phải truy cập vào hệ thống khác MySQL. Nếu tất cả những gì bạn muốn là một bản sao lưu trực tiếp chỉ đọc mà bạn có thể sử dụng ngay lập tức trong trường hợp xấu nhất (bản gốc bị hủy vĩnh viễn), Nhật ký nhị phân sẽ phù hợp với bạn tốt.

3

Bạn có thể muốn xem xét trường hợp tổng thể sao chép chính, nhưng với một chút vặn nhẹ. Bạn có thể chỉ định cơ sở dữ liệu nào để nhân rộng và giới hạn bản sao cho mỗi máy chủ.

Đối với máy chủ1, tôi sẽ thêm --replicate-do-db=server_2_db và trên máy chủ2 --replicate-do-db=server_1_db vào my.cnf của bạn (hoặc my.ini trên Windows). Điều này có nghĩa là chỉ những câu lệnh cho server_1_db mới được nhân bản thành server2 và ngược lại.

Cũng đảm bảo rằng bạn thực hiện sao lưu toàn bộ một cách thường xuyên và không chỉ dựa vào nhân rộng vì nó không cung cấp sự an toàn từ các báo cáo ngẫu nhiên DROP DATABASE hoặc tương tự.

Các vấn đề liên quan