Đồng bộ cơ sở dữ liệu Mysql giữa hai cơ sở dữ liệu


81

Chúng tôi đang chạy ứng dụng Java PoS (Điểm bán hàng) tại các cửa hàng khác nhau, với phần mềm phụ trợ MySql. Tôi muốn giữ cơ sở dữ liệu trong các cửa hàng được đồng bộ hóa với cơ sở dữ liệu trên máy chủ lưu trữ.

Khi một số thay đổi xảy ra trong cửa hàng, chúng sẽ được cập nhật trên máy chủ lưu trữ. Làm cách nào để đạt được điều này?



Có dễ thực hiện không ?? bạn nghĩ nó sẽ mất bao lâu ??
peedee

2
@peedee Bản sao MySQL khá dễ thiết lập. Một vài lệnh và đồng bộ ban đầu. Lần đầu tiên tôi mất khoảng 30 phút.
ceejayoz

2
tại chỗ ở câu hỏi hay là tự hỏi điều tương tự cho cùng mục đích]
codefreaK

Bạn có thể sử dụng tính năng sao chép MySQL hoặc có một số công cụ có sẵn để đồng bộ hóa cơ sở dữ liệu, chúng được liệt kê ở đây stackoverflow.com/questions/52583/…
Peter Venderberghe

Câu trả lời:


60

Sao chép không phải là rất khó để tạo ra.

Dưới đây là một số hướng dẫn tốt:

http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

Dưới đây là một số quy tắc đơn giản bạn sẽ phải ghi nhớ (tất nhiên có nhiều quy tắc hơn nhưng đó là khái niệm chính):

  1. Thiết lập 1 máy chủ (chính) để ghi dữ liệu.
  2. Thiết lập 1 hoặc nhiều máy chủ (máy chủ) để đọc dữ liệu.

Bằng cách này, bạn sẽ tránh được sai sót.

Ví dụ: Nếu tập lệnh của bạn chèn vào các bảng giống nhau trên cả bảng chính và bảng phụ, bạn sẽ có xung đột khóa chính trùng lặp.

Bạn có thể xem "nô lệ" như một máy chủ "dự phòng" chứa thông tin giống như máy chủ nhưng không thể thêm dữ liệu trực tiếp, chỉ làm theo hướng dẫn của máy chủ chính.

LƯU Ý: Tất nhiên bạn có thể đọc từ master và bạn có thể ghi vào slave nhưng hãy đảm bảo rằng bạn không ghi vào các bảng giống nhau (master to slave và slave to master).

Tôi khuyên bạn nên theo dõi máy chủ của mình để đảm bảo mọi thứ đều ổn.

Hãy cho tôi biết nếu bạn cần trợ giúp thêm


Có, Siêu thị Shop = chủ, Server = nô lệ
Book Of Zeus

Tôi đã định cấu hình cái chính bây giờ và tôi sẽ kết nối với một cơ sở dữ liệu nô lệ .. khi tôi làm điều này, bất kỳ thay đổi nào đối với cái chính sẽ phản ánh trong nô lệ và những thay đổi trong nô lệ cũng sẽ phản ánh với chủ ??
peedee 11/10/11

có ngay nếu thiết lập tốt! bạn có thể chèn một bản ghi trong cái chính và thực hiện một lựa chọn trong phần phụ để kiểm tra. nếu vượt qua, bạn đã được thiết lập!
Book Of Zeus,

Này anh bạn ... Tôi có lỗi 1045 trên nô lệ. lý do cho nó là gì? bạn có bất kỳ ý tưởng?
peedee

LỖI 1045: Quyền truy cập bị từ chối đối với người dùng: 'root @ localhost' (Sử dụng mật khẩu: NO) và dev.mysql.com/doc/refman/5.1/en/access-denied.html
Book Of Zeus

23

ba cách tiếp cận khác nhau:

  1. Phương pháp tiếp cận máy khách / máy chủ cổ điển: không đặt bất kỳ cơ sở dữ liệu nào trong các cửa hàng; chỉ cần để các ứng dụng truy cập vào máy chủ của bạn. Tất nhiên sẽ tốt hơn nếu bạn đặt VPN, nhưng chỉ cần gói kết nối trong SSL hoặc ssh là hợp lý. Chuyên nghiệp: đó là cách cơ sở dữ liệu được nghĩ ban đầu. Con: nếu bạn có độ trễ cao, các hoạt động phức tạp có thể bị chậm, bạn có thể phải sử dụng các thủ tục được lưu trữ để giảm số lượng chuyến đi khứ hồi.

  2. nhân bản chính / chủ: như @Book Of Zeus đề xuất. Nhược điểm: thiết lập hơi phức tạp hơn (đặc biệt nếu bạn có nhiều cửa hàng), việc đột nhập vào bất kỳ máy cửa hàng nào có thể ảnh hưởng đến toàn bộ hệ thống. Ưu điểm: phản hồi tốt hơn vì các hoạt động đọc hoàn toàn là cục bộ và các hoạt động ghi được truyền không đồng bộ.

  3. hoạt động ngoại tuyến + bước đồng bộ: thực hiện tất cả công việc cục bộ và theo thời gian (có thể là mỗi giờ một lần, hàng ngày, hàng tuần, bất cứ điều gì) viết tóm tắt với tất cả các bản ghi mới / sửa đổi từ hoạt động đồng bộ hóa cuối cùng và gửi đến máy chủ. Ưu điểm: có thể hoạt động không cần mạng, nhanh, dễ kiểm tra (nếu đọc được tóm tắt). Nhược điểm: bạn không có thông tin thời gian thực.


10
Tôi có yêu cầu thiết lập loại đồng bộ hóa db thứ 3 (hoạt động ngoại tuyến + đồng bộ hóa), rất muốn đọc thêm về điều này. Không thể google cái này ra. Họ có phải là một cuốn sách / bài báo tôi có thể tham khảo?
abhishek77in

10

SymmetricDS là câu trả lời. Nó hỗ trợ nhiều người đăng ký với bản sao dữ liệu không đồng bộ một hướng hoặc hai hướng. Nó sử dụng các công nghệ web và cơ sở dữ liệu để sao chép các bảng giữa các cơ sở dữ liệu quan hệ, trong thời gian gần thực nếu muốn.

API Java toàn diện và mạnh mẽ phù hợp với nhu cầu của bạn.


nếu tôi có máy chủ nội bộ với db riêng biệt đến một số khu vực không có internet và tôi có người mua trực tuyến trên cơ sở dữ liệu được lưu trữ trên web và tôi muốn chuyển cơ sở dữ liệu nội bộ đã mua vào hoạt động, bạn có thể vui lòng cho biết điều gì sẽ xảy ra với số tự động tăng giữa hai nếu cả hai đều lưu trữ cùng một id nó sẽ rất lộn xộn phải không !? như vậy (tôi cần phải đồng bộ các hoạt động được thực hiện trên db nội bộ trở nên sống động mà không ảnh hưởng id auto incremeant và quan hệ giữa các bảng)
Shareef

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.