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

Apakah replikasi mySQL memiliki konsistensi data langsung?

Konsistensi dalam arti digunakan dalam ACID berarti bahwa semua kendala terpenuhi sebelum dan sesudah perubahan apa pun. Ketika sistem memastikan bahwa Anda tidak dapat membaca data yang tidak konsisten, mereka mengatakan misalnya bahwa Anda tidak akan pernah membaca data di mana baris anak mereferensikan baris induk yang tidak ada, atau di mana setengah dari transaksi telah diterapkan tetapi setengah lainnya belum diterapkan (contoh buku teks adalah mendebet satu rekening bank tetapi belum mengkredit rekening bank penerima).

Replikasi di MySQL tidak sinkron secara default, atau paling banter "semi-sinkron". Tentu saja itu lag dalam kedua kasus. Faktanya, replika replikasi selalu tertinggal setidaknya sepersekian detik, karena master tidak menulis perubahan ke log binernya hingga transaksi dilakukan, maka replika harus mengunduh log biner dan menyampaikan acara.

Namun perubahannya masih bersifat atomik. Anda tidak dapat membaca data yang sebagian diubah. Anda dapat membaca perubahan yang dilakukan, dalam hal ini semua kendala terpenuhi, atau perubahan belum dilakukan, dalam hal ini Anda melihat status data sebelum transaksi dimulai.

Jadi untuk sementara Anda mungkin membaca lama data dalam sistem replikasi yang tertinggal, tetapi Anda tidak akan membaca tidak konsisten data.

Sedangkan dalam sistem "akhirnya konsisten", Anda mungkin membaca data yang sebagian diperbarui, di mana satu akun telah didebet tetapi akun kedua belum dikreditkan. Jadi Anda bisa melihat data yang tidak konsisten.

Anda benar bahwa Anda mungkin perlu berhati-hati dalam membaca dari replika jika aplikasi Anda memerlukan data yang benar-benar terkini. Setiap aplikasi memiliki toleransi yang berbeda untuk lag replikasi, dan sebenarnya dalam satu aplikasi, query yang berbeda memiliki toleransi yang berbeda untuk lag. Saya melakukan presentasi tentang ini:Pemisahan Baca/Tulis untuk MySQL dan PHP (Webinar Percona 2013)



  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 saya bisa menggunakan ON DUPLICATE KEY UPDATE di PDO dengan mysql?

  2. Cara terbaik untuk mengumpulkan, lalu mengimpor data ke drupal?

  3. cara menggunakan beberapa query sql join di java spring boot

  4. pilih dari beberapa tabel mysql

  5. MySQL - Tidak Dapat Membuat Tampilan dengan variabel SET di dalamnya