Khi câu hỏi yêu cầu đồng bộ hóa tất cả dữ liệu từ máy chủ này sang máy chủ khác, tôi nghĩ bạn có thể sử dụng một giải pháp tương đối đơn giản, liên quan đến mysqldump
.
Tôi nghĩ rằng bạn có thể làm tất cả điều này từ máy chủ chuyên dụng:
mysqldump --user=<username> --password=<password> --host=<server 1 hostname> --port=<port> --add-drop-database <database name> > dump.sql
Thay thế <username>
, <password>
, <port>
và <server 1 hostname>
với chi tiết kết nối cho máy chủ 1. Thay thế bằng tên của cơ sở dữ liệu trên máy chủ 1 mà bạn muốn sao chép sang máy chủ 2. Nếu bạn muốn sao chép tất cả cơ sở dữ liệu, hãy thay thế bằng tùy chọn --all-databases.
Điều này sẽ tạo một tệp có tên là dump.sql
trong thư mục hiện tại. Sau đó, bạn có thể tải nó vào máy chủ 2:
mysql --user=<username> --password=<password> --host=<server 2 hostname> --port=<port> <database name> < dump.sql
Thay thế <username>
, <password>
, <port>
và <server 2 hostname>
với chi tiết kết nối cho máy chủ 2.
Thao tác này sẽ lấy tệp dump.sql và tải nó vào cơ sở dữ liệu trên máy chủ 2. Thao tác này sẽ xóa cơ sở dữ liệu trên máy chủ 2 - vì vậy tất cả dữ liệu hiện có sẽ được thay thế bằng dữ liệu đó trong dump.sql
.
Kiểm tra các tùy chọn để mysqldump (liên quan đến cơ sở dữ liệu thả, bảng thả, v.v.) và điều chỉnh các lệnh trên để phù hợp với tình huống của bạn. Tôi nghĩ, nếu bạn kết nối mọi thứ một cách chính xác, bạn thậm chí có thể bỏ qua tệp trung gian và kết nối mysqldump trên máy chủ 1 với mysql trên máy chủ 2 bằng cách sử dụng một ổ cắm.
Để đề cập đến phần 'tự động' của câu hỏi này, bạn có thể chạy các lệnh trên trong cron và lập lịch chạy chúng vào ngày đầu tiên hàng tháng vào một thời điểm thích hợp.