MySQL slave'e çoğaltma olmayan yazmaları engeller misiniz?


13

Performans için satır tabanlı çoğaltma ile ayarlanmış bazı MySQL veritabanı sunucularımız var. Yazılım master'a yazar ve master veya slave'den okur. Her şey harika çalışıyor, çoğunlukla.

MySQL'in bir MySQL köle olduğunu bilmesine rağmen, slave'e yazmaya izin vereceğini anlıyorum. İdeal olarak, bunu kapatmak isterim, bu yüzden birisi okuma bağlantısı alan ve kötü bir kod yazsa bile UPDATE, köle veri koymak yerine bir hata atar.

MySQL'de bunu yapmanın bir yolu var mı? Açıkçası bunu yazılımımızdan da imkansız hale getirmek istiyoruz, ancak sunucularımızdaki bir güvenlik duvarı gibi, olabildiğince savunmacı olmak istiyorum.

Teşekkürler!

Yanıtlar:


13

read-onlyMy.cnf dosyasındaki seçeneği etkinleştirin . Ayrıca --read-onlymysqld ile birlikte komut satırında bir bayrak olarak belirtilebilir .


5
Bunun, salt okunur olarak itaat etmediği için süper kullanıcılar (yani: MySQL'de kök kullanıcı) için çalışmayacağını unutmayın.
vmfarms

5

Ayarlamaya alternatif olarak read_only=1(örneğin, bağımlı örnekte başka karalama alanı / raporlama / geliştirme veritabanları olduğunda), bazen SELECT dışındaki tüm ayrıcalıkları tüm kullanıcılardan çoğalttığım DB'ye ayırırım.

Yani, master üzerinde GRANT komutunu çalıştırdıktan sonra , slave üzerinde REVOKE komutunu çalıştırıyorum .


2

İtibariyle MySQL 5.7.8 , bir anda var super_read_onlyistemci güncelleştirmelerini gerçekleştirmesini bile SÜPER engeller seçeneği. Çoğaltma işlemini bozmaz. Diğer ayarlarda olduğu gibi ayarlanabilir:

  • komut satırı biçiminde ( --super_read_only=ON),
  • my.cnf ( super_read_only=1) öğesinde değişken olarak veya
  • isteminden ( SET GLOBAL super_read_only = 1;).

Bunu not et:

  • super_read_onlyÖrtülü olarak etkinleştirmek ,read_only
  • read_onlyKapalı olarak devre dışı bırakmak devre dışı bırakırsuper_read_only

Bazı uyarılar:

  • Ne read_onlyde super_read_onlygeçici tablolar üzerinde işlem önleyecektir.
  • ANALİZ TABLOSU ve OPTİMİZE TABLOSU gibi meta veri işlemlerini engellemezler.
  • super_read_onlyEtkinleştirilen belirli sorgular için hata bildirildi.

Referans: https://www.percona.com/blog/2016/09/27/using-the-super_read_only-system-variable/


1

İlk gönderinin bir şekilde önerdiği gibi, bunu izinlerle yaparsınız. Salt okunur seçeneği, süper kullanıcılar için bir FYI olarak çalışmaz ve ayrıca yazmayı önlemek istediğiniz bir köle için gerçekten uygulanabilir bir çözüm değildir. Kullanıcı / veritabanı / tablo izinlerine sahip yazma işlemlerini önlemeniz gerekir. Birincisi, çoğaltma kullanıcısının hala master ile senkronize olmasını sağlamak için slave'e yazabilmesi gerekir. Yazmaları kontrol etmenin daha iyi bir yolu, söz konusu kullanıcı için yalnızca slave'de okumalar yapması gereken yazma işlemlerine (yani, ekler, oluşturur, vb.) İzin veren seçenekleri iptal etmeniz gerektiğidir.


0

Yalnızca bağımlı birimdeki kullanıcılara çoğaltma ile ilgili haklar verin. Hala kök kullanıcı hakları sorunu yaşıyorsanız, ancak DB sunucusuna uzaktan kök erişimini kaldırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.