Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Yang merupakan cara terbaik untuk menyinkronkan data dinamis dua arah secara real time menggunakan mysql

Tidak banyak kinerja yang dapat diperoleh dari mereplikasi database Anda pada dua master. Namun, ada sedikit kegagalan yang bagus jika Anda mengkodekan aplikasi dengan benar.

Pengaturan Master-Master pada dasarnya sama dengan pengaturan Slave-Master tetapi memiliki kedua Slave yang dimulai dan perubahan penting pada file konfigurasi Anda di setiap kotak.

Menguasai MySQL 1

auto_increment_increment = 2
auto_increment_offset = 1 

Menguasai MySQL 2:

auto_increment_increment = 2
auto_increment_offset = 2

Kedua parameter ini memastikan bahwa ketika dua server memperebutkan kunci utama untuk beberapa alasan, mereka tidak menduplikasi dan mematikan replikasi. Alih-alih bertambah 1, setiap bidang kenaikan otomatis akan secara default bertambah 2. Pada satu kotak itu akan mulai diimbangi dari 1 dan menjalankan urutan 1 3 5 7 9 11 13 dll. Pada kotak kedua itu akan mulai diimbangi pada 2 dan berjalan sepanjang 2 4 6 8 10 12 dst. Dari pengujian saat ini, kenaikan otomatis tampaknya mengambil nomor bebas berikutnya, bukan nomor yang tersisa sebelumnya.
Misalnya. Jika server 1 menyisipkan 3 record pertama (1 3 dan 5) saat Server 2 menyisipkan yang ke-4, maka akan diberikan kunci 6 (bukan 2, yang dibiarkan tidak digunakan).

Setelah Anda mengaturnya, mulai keduanya sebagai Slave.
Kemudian untuk memeriksa keduanya berfungsi dengan baik, sambungkan ke kedua mesin dan lakukan perintah SHOW SLAVE STATUS dan Anda harus mencatat bahwa keduanya Slave_IO_Running dan Slave_SQL_Running keduanya harus mengatakan "YA" pada setiap kotak.

Kemudian, tentu saja, buat beberapa record dalam sebuah tabel dan pastikan satu kotak hanya memasukkan kunci utama bernomor ganjil dan yang lainnya hanya menambah yang bernomor genap.

Kemudian lakukan semua pengujian untuk memastikan bahwa Anda dapat menjalankan semua aplikasi standar pada setiap kotak dengan mereplikasi kotak lainnya.

Ini relatif sederhana setelah dijalankan.
Tetapi seperti yang telah disebutkan, MySQL tidak menganjurkannya dan menyarankan agar Anda memastikan bahwa Anda memperhatikan fungsi ini saat menulis kode aplikasi Anda.

Sunting: Saya kira secara teoritis mungkin untuk menambahkan lebih banyak master jika Anda memastikan bahwa offsetnya benar dan seterusnya. Anda mungkin lebih realistis, menambahkan beberapa budak tambahan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih database MySQL untuk digunakan dengan PDO di PHP?

  2. Terbaik untuk menggunakan * saat memanggil banyak bidang di mysql?

  3. Mengapa menggunakan IN(...) saat memilih bidang yang diindeks, akan mematikan kinerja kueri SELECT?

  4. Apa itu MySQL? – Pengantar Sistem Manajemen Basis Data

  5. Bagaimana cara menerapkan sistem komentar bersarang?