MySQL çoğaltmasını nasıl tamamen devre dışı bırakırım?


64

Çift ana MySQL çoğaltması kullanıyorum ve şimdi çoğaltması olmayan tek bir veritabanına geçmek istiyorum. Her iki veritabanında da çoğaltmayı nasıl tamamen devre dışı bırakabilirim?

Yanıtlar:


81

Bir master-master kurulumuyla çoğaltmayı tamamen devre dışı bırakmak için her bir slave'de aşağıdakileri yapmanız gerekir:

  1. STOP SLAVE;
  2. RESET SLAVE;( RESET SLAVE ALL;MySQL 5.5.16 ve sonrası için kullanın )
  3. My.cnf dosyasını düzenleyin ve "master -..." veya "replicate -..." seçeneklerine atıfta bulunan bilgileri (varsa) kaldırın. My.cnf'de hiçbir şey olmayabilir, çünkü çoğaltma da dinamik olarak yapılabilir.
  4. MySQL'i yeniden başlatın.

Çoğaltma dinamik olarak kuruluysa, adım 1 ve 2 yeterli olacaktır.
tanyehzheng

4
MySQL yeniden başlatılıncaya kadar, komut verildikten SLAVE STATUSsonra bile sorguların eski çoğaltma bilgilerini rapor eder RESET SLAVE. İzleme veya uzaktan yapılandırma yönetimi araçlarını bilmek önemlidir. CentOS 6.5'teki MySQL 5.5.38 ile doğrulanmış davranış.
Chris Laskey

Adımları yapıyorum ama neden aktif olmayan köle hala mtop komutu listesinde? Listeden nasıl çıkarılır?
Scott Chu

18

Bunun eski bir soru olduğunu biliyorum ama köle değişkenlerini de sıfırlamak zorunda olduğumu öğrendim. Önerilen şekilde "blah" kullanıyorsanız, sunucu 'blah' sunucusunu bulmaya başlangıçta çalışacaktır.

Değişim MASTERiçinMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Makinenin artık bir köle olmadığını doğrulayabilirsiniz.

SHOW SLAVE STATUS \G;

5
Bu artık işe yaramıyor. Ayar CHANGE MASTER TO MASTER_HOST=''şimdi bir hata veriyor.
Gray

HATA 1210 (HY000): MASTER_HOST
Kazimieras Aliulis

Benim için çalışıyor CentOS 6'da (MySQL 5.1), bu SHOW SLAVE STATUS boş bir set döndürürken, bir RESET SLAVE'den sonra hala bazı ana bilgiler gösterdi.
Martijn

Bu cevap MySQL 5.1 kullanıcıları için hala geçerlidir (hala orada olabilir).
RolandoMySQLDBA

12

Bağımlı sunucu (lar) da:

  1. Çoğaltmayı durdurmak için "köle durdur" komutunu çalıştırın.
  2. Bağımlı sunucuya ana sunucudan alınan ikili günlükteki konumunu unutmasını bildirmek için "sıfırlama kölesi" ni çalıştırın.
  3. MySQL'i yeniden başlattığınızda çoğaltmanın başlamasını önlemek için my.cnf'ye "skip-slave-start" ekleyin.

MySQL'in ana veya köle üzerinde yeniden başlatılmasına gerek yoktur. Komple dokümantasyon MySQL Referans Kılavuzunun 19. bölümünde bulunabilir .

Önceki yapılandırmanıza geri dönmeye karar vermeniz durumunda, çoğaltma ayarlarının geri kalanını yerinde bırakmanızı tavsiye ederim. Bu şekilde, tüm kumaş kurulumunu yeniden oluşturmak yerine, verileri yukarı itmeniz ve köle konumunu sıfırlamanız (atla-köle başlangıcını kaldırmayı unutmayın) gerekir.



6

My.cnf dosyasını tek başına düzenlemek, çoğaltmayı devre dışı bırakmak için yeterli değildir. Aslında, artık bunu sağlamanın önerilen yolu değildir. Girişleri my.cnf dosyasına koymak yalnızca bir sonraki başlangıç ​​için etkilidir ve komutu mysql istemcisine girmiş gibi davranın:

mysql> master'ı master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Her iki yöntem de master.info adlı veri dizininde bir dosya oluşturacaktır . Bu dosya bulunduğu sürece, sunucu buradaki ayrıntıları kullanarak kopyalamaya çalışacaktır. "RESET SLAVE;" İlk cevapta listelenen komut, master.info dosyasından (ayrıca relay-log.info dosyasından) kurtulacaktır . İlk cevapta belirtildiği gibi, my.cnf dosyasında bu yapılandırma bilgisinin olmadığından emin olmak istersiniz, aksi takdirde sunucunun bir sonraki yeniden başlatılmasında, günlüğe kaydetme yeniden etkinleştirilecektir.


5

Bir cevap burada:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* MySQL yapılandırma dosyasını düzenleyin: /etc/my.cnf ve [7] başlıklı bölüme aşağıdaki 7 satırı kaldırın:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

MySQL'i yeniden başlatın.


4

Bunu Harrison Fisk'in cevabına ekliyorum:

Kullandıysanız RESET SLAVE ALL;yeniden başlatma gerekli değildir.

Ayrıca, köle üzerinde devre dışı bırakılmış etkinlikleri etkinleştirmek isteyebilirsiniz:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Her biri için:

alter event <event_name> enable;
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.