Saat pertanyaan menyatakan untuk menyinkronkan semua data dari satu server ke server lain, saya pikir Anda dapat menggunakan solusi yang relatif sederhana, yang melibatkan mysqldump
.
Saya pikir Anda dapat melakukan ini semua dari server khusus:
mysqldump --user=<username> --password=<password> --host=<server 1 hostname> --port=<port> --add-drop-database <database name> > dump.sql
Ganti <username>
, <password>
, <port>
dan <server 1 hostname>
dengan detail koneksi untuk server 1. Ganti dengan nama database di server 1 yang ingin Anda salin ke server 2. Jika Anda ingin menyalin semua database, ganti dengan opsi --all-databases.
Ini akan membuat file bernama dump.sql
di direktori saat ini. Anda kemudian dapat memuat ini ke server 2:
mysql --user=<username> --password=<password> --host=<server 2 hostname> --port=<port> <database name> < dump.sql
Ganti <username>
, <password>
, <port>
dan <server 2 hostname>
dengan detail koneksi untuk server 2.
Ini akan mengambil file dump.sql, dan memuatnya ke database di server 2. Ini akan menjatuhkan database di server 2 - jadi semua data yang ada akan diganti dengan yang ada di dump.sql
.
Periksa opsi ke mysqldump (mengenai drop database, drop tabel, dll) dan sesuaikan perintah di atas agar sesuai dengan situasi Anda. Saya pikir, jika Anda menghubungkan semuanya dengan benar, Anda bahkan dapat melewati file perantara dan menghubungkan mysqldump di server 1 ke mysql di server 2 menggunakan soket.
Untuk menutupi bagian 'otomatis' dari pertanyaan ini, Anda dapat menjalankan perintah di atas di bawah cron dan menjadwalkannya untuk dijalankan pada hari pertama setiap bulan pada waktu yang sesuai.