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

Cuplikan volume EBS yang digunakan untuk replikasi

Meskipun merupakan ide yang baik untuk mengunci database dan membekukan sistem file saat Anda memulai snapshot, panggilan API yang sebenarnya untuk memulai snapshot membutuhkan waktu sepersekian detik, sehingga database dan sistem file Anda tidak dikunci/dibekukan untuk waktu yang lama.

Meskipun demikian, ada beberapa pertimbangan lain yang tidak Anda sebutkan:

  1. Saat Anda mencoba membuat kunci di database, mungkin perlu menunggu pernyataan lain selesai sebelum kunci diberikan. Selama waktu ini, kunci tertunda Anda mungkin lebih lanjut pernyataan menunggu sampai Anda mendapatkan dan melepaskan kunci. Hal ini dapat menyebabkan gangguan dalam aliran pernyataan pada basis data produksi Anda.

  2. Setelah Anda memulai pembuatan snapshot, aplikasi/basis data Anda bebas menggunakan sistem file pada volume, tetapi jika Anda memiliki banyak penulisan, Anda dapat mengalami iowait tinggi, terkadang cukup untuk membuat pelambatan yang nyata pada aplikasi Anda. Alasannya adalah bahwa proses snapshot latar belakang perlu menyalin blok ke S3 sebelum mengizinkan penulisan ke blok tersebut pada volume aktif.

Saya memecahkan masalah pertama dengan meminta kunci dan waktu habis jika tidak diberikan dengan cepat. Saya kemudian menunggu sebentar dan terus mencoba lagi sampai saya mendapatkan kunci. Waktu tunggu yang tepat dan penundaan percobaan ulang dapat bervariasi untuk beban basis data yang berbeda.

Saya memecahkan masalah kedua dengan melakukan snapshot yang sering dan konsisten pada slave alih-alih master, seperti yang Anda usulkan. Saya tetap menyarankan untuk melakukan snapshot sesekali terhadap master hanya untuk meningkatkan daya tahan intrinsiknya (properti EBS yang dalam) tetapi snapshot tersebut tidak perlu dilakukan dengan penguncian atau pembekuan karena Anda tidak akan menggunakannya untuk pencadangan.

Saya juga merekomendasikan penggunaan sistem file yang mendukung pembilasan dan pembekuan (XFS). Jika tidak, Anda memotret tabel terkunci di MySQL yang mungkin belum memiliki semua bloknya pada volume EBS atau bagian lain dari sistem file mungkin dimodifikasi dan tidak konsisten dalam snapshot.

Jika Anda tertarik, saya telah memublikasikan perangkat lunak sumber terbuka yang melakukan praktik terbaik yang saya kumpulkan terkait dengan pembuatan snapshot EBS yang konsisten dengan MySQL dan XFS (keduanya opsional).

Untuk menjawab pertanyaan terakhir Anda, mengunci tabel di master tidak akan merusak replikasi. Dalam perangkat lunak snapshot saya, saya juga menyiram tabel dengan kunci baca untuk memastikan bahwa semuanya ada di disk yang sedang di-snapshot dan saya menambahkan kata kunci "LOCAL" sehingga flush tidak direplikasi ke calon budak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara terbaik untuk menyimpan Nilai Kotak Centang di Database MySQL?

  2. Cara Menambahkan Opsi ke sql_mode di MySQL Tanpa Kehilangan Pengaturan yang Ada

  3. JIKA... ELSE dalam klausa WHERE MySQL

  4. Cx-Freeze :Showwarning AttributeError:objek 'NoneType' tidak memiliki atribut 'tulis'

  5. Baris Ganjil dan Genap untuk sebuah tabel