Saya menjalankan replikasi di Percona Server 5.5 dengan mengikuti panduan ini dan bertanya-tanya apakah saya harus menambahkan read-only=1
slave saya my.cnf
agar hanya dibaca?
Panduan ini mengatur replikasi untuk tabel mysql sehingga pengguna direplikasi tetapi saya terutama menggunakan slave untuk mengambil mysqldumps, sebuah dalam keadaan darurat mengkonfigurasi ulang untuk menjadi master, jadi saya tidak percaya kita perlu (atau seharusnya) menulis diaktifkan di terus-menerus?
Jawaban:
Ketika seorang Slave hanya-baca , ia tidak 100% terlindung dari dunia.
Menurut Dokumentasi MySQL pada
read-only
Dengan demikian, siapa pun dengan hak istimewa SUPER dapat membaca dan menulis sesuka hati kepada ...
Pastikan semua pengguna yang tidak memiliki hak istimewa tidak memiliki Hak Istimewa SUPER.
Jika Anda ingin mencabut semua hak istimewa SUPER dalam satu kesempatan, jalankan ini pada Master dan Slave:
Dengan merujuk pada Slave, ini akan memberikan hak istimewa SUPER untuk adil
root
dan mencegah yang tidak memiliki hak istimewa melakukan penulisan yang seharusnya tidak dibatasi.UPDATE 2015-08-28 17:39 EDT
Saya baru saja belajar bahwa MySQL 5.7 akan memperkenalkan super_read_only .
Ini akan menghentikan pengguna SUPER di jalur mereka karena 5.7 Documents katakan
sumber
Ya, Anda sebaiknya menjalankan server slave dengan mode R / O yang tersedia. Sebelumnya pengguna istimewa dapat memodifikasi data budak seperti itu tetapi kemudian mereka juga mendapat "kenop" pembatasan R / O.
Mengapa ini penting - lebih baik gagal dengan menulis daripada menyesal dengan penulisan yang tidak tepat yang dapat secara efektif membuat budak tidak dapat digunakan karena data sederhana tercampur atau hal-hal seperti konflik kunci yang akan merusak replikasi (tidak ada lagi budak yang sebenarnya lagi).
Ada juga perangkat lunak yang digunakan untuk orkestrasi / load split yang akan mempertimbangkan status R / O server di kumpulan yang telah mereka konfigurasikan untuk perutean permintaan yang tepat di antara server-server itu.
Ini aman. Gunakan.
sumber
Masalahnya di sini, termasuk MySQL 8.0, adalah bahwa MySQL tidak memaksa Anda untuk mengatur
read_only = ON
ketika Anda menjalankanstart slave
perintah. Mengapa ada masalah? Karena hampir semua MySQL DBA menggunakan slave mereka pada RO, untuk mencegah korupsi data, dan selalu ada satu dba yang secara tidak sengaja menjalankan SQL yang memodifikasi data pada slave, atau aplikasi yang tidak akan mengubah conf-nya. Jika saya ingin menulis pada budak, karena ada beberapa skema dan saya perlu menulis tentang skema ini, jadiread_only
perintahnya harus lebih cerdas, dan mari kita lakukan aread_only for schema
. Itu bisa sangat berguna pada server multi-master dan budak yang melakukanReplicate_Ignore_DB
. Jadi, untuk saat ini, Anda harus melakukan kontrol secara manual dan sangat berhati-hati.Nikmati.
sumber