Soru MySQL Çoğaltma izleyin


Bir köleyi izlemek için en iyi uygulama nedir?

a) Hala çalışıyor b) Master olmaktan çok uzak değil

Eger arkada ise e-posta ile uyarmak istiyorum, komut satırı uygulamalarına bağlanmak için bir komut dosyası veya iki yazı yazmaktan mutluluk duyarım.


6
2017-11-13 16:33


Menşei




Cevaplar:


1

maatkit'ini kullanabilirsin mk-kalp atışı

2

sonucuna bakabilirsiniz

show slave status;

sql slave üzerinde çalıştırmak ama Seconds_Behind_Master bazen rahatsız edici bir şekilde yanlış.

3

kendi çözümünüzü, benimkiyle benzer şekilde kesebilirsin - ikisini de nagios izleme ve besleme Munin 'master'ın arkasında saniye' gösteren grafikler.

ana sunucuda basit bir cron işi var:

* * * * * root /usr/local/bin/repltest

repltest nerede:

#!/bin/bash
start=`date +%s`
d=0
while [ $d -lt 60 ] ; do
        echo "update repl_test set t= NOW(); " |mysql --defaults-file=/etc/mysql/debian.cnf repl_test
        sleep 3
        d=$(( `date +%s` - $start ))
done

köle üzerinde ben tarafından döndürülen değeri izlemek:

echo "select UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(t) from repl_test" |  mysql --defaults-file=/etc/mysql/debian.cnf -N repl_test

Tüm sunucularda yerel saat ntp ile senkronize edilir.

repl_test db şunları içerir:

CREATE TABLE IF NOT EXISTS `repl_test` (`t` datetime NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `repl_test` (`t`) VALUES(NOW());

Çoğaltma çalıştırırsanız - ben de ayarlamanızı öneririm MK-sofra sağlama sql sunucularınızın içeriğini zaman zaman karşılaştırmak için.


8
2017-11-13 16:47





pQd var, 'köle durumunu göster' kontrol etmek en kolay yoldur. Seconds_behind_master'ın yanlış olmasıyla ilgili olarak, değerin slave SQL iş parçacığı tarafından geçiş günlüğünden okunan ifadenin zaman damgasındaki fark olduğunu belirtmek istedim; Bu, yetişmek için ne kadar süreceğini tahmin etmeyle ilgili değildir. Örneğin, çalıştırmak için bir saat kadar süren tek bir uzun süreli güncelleme, kölenin efendisinin arkasında bir saat kadar görünmesine neden olur, ancak ifade tamamlandıktan sonra, yalnızca 1 yakalamak.

Ayrıca, köle statüsünü almak için izleyeceğiniz kullanıcıya 'REPLICATION CLIENT' (HESAPLAMA MÜŞTERİ) vermek isteyeceksiniz;


4
2017-11-13 18:03



Seconds_behind_master hatasıyla işaretleme sorunları için +1 - sumar


Diğerleri gibi açık cevap SHOW SLAVE DURUMU üzerinde bazı varyasyon kullanmaktır. Nagios'ta yerleşik olan denetleyiciyi kişisel olarak kullanıyorum, ama zaten nagios ile her türlü başka izleme yapıyorum. Ancak bir yakalama vardır, SHOW SLAVE DURUMU'nun hem çalıştırılan işlemleri hem de kölenin askıya alınmasını göstermesi mümkündür. Anlatabildiğimiz şeyden (çünkü biz problemimiz vardı ve ona baktık), sorun köleliği tamamen ortadan kaldırmak için çok kısa olan fakat düzgün bir şekilde iyileşmesi için çok uzun olan bir süre ağ patlamaları olduğunda ortaya çıkar. En son girdinin zaman damgasına rutin olarak değişen ve master ile slave arasında karşılaştıran bir tablodaki zaman damgasına baktığımız bir iş bulduk ve sonra “çok uzak” ise bir uyarı atıyoruz. Mükemmel değil ve sadece belirli durumlarda çalışır, ama kendini uyar.


3
2017-11-16 21:43



Bir tablonun zaman damgasını kontrol etmek için +1 - Martin


Açık kaynak kodlu tüm araçlardan bahseden bu blog postasına ve Ticari http://blog.webyog.com/2012/11/20/how-to-monitor-mysql-replication/

Genellikle bu blogda pt-kalp atışı: Gerçek zamanlı olarak köle gecikmesini izlemek için kullanışlı bir araçtır. pt-slave-restart: Watch ve Slave hata durumunda yeniden başlatır. pt-slave-find: Kölelerin çoğaltma hiyerarşisini bulur. pt-table-checksum: Kölelerdeki veritabanlarının master'larıyla senkronize olup olmadığını kontrol eder.

MySQL Enterprise Monitor: Oracle'ın “Sanal DBA Asistanı”, düzgün bir web tabanlı GUI'ye sahip bir aracı tabanlı izleme aracıdır. SHOW SLAVE DURUMU ve SHOW MASTER STATUS çıkışı ile birlikte tüm Master'ların ve Slave'lerinin topolojik görünümünü veren “Replication” sekmesi.

MONyog-MySQL monitörü ve danışmanı: Çoğaltma izlemeyi ve yönetmeyi içeren, tüm Master'ların ve onların Slaves'ini SHOW SLAVE DURUMU ve SHOW MASTER STATUS ile birlikte topolojik bir görünüm sağlayan -Reclication 'sekmesini içerir.


2
2018-03-11 12:45





Sorguyu yürütmelisin SHOW SLAVE STATUS ve ikisinden de emin olun Slave_IO_Running ve Slave_SQL_Running değer vermek Yes. Aksi takdirde, köle otomatik olarak kurtaramaz. Her ikisi de Yes sonra bir gecikme olsa da, çoğaltma hala çalışıyordur (Seconds_Behind_Master).


1
2017-11-13 18:31





Oldukça iyi bir araç rep_mon, bir bölümü Benim kedim Suite, temelde pQd'nin üçüncü seçeneği olan bir perl betiğidir, ancak kolayca yapılandırılabilir ve iyi test edilmiştir. Yapılandırıldıktan sonra bunu hızlı bir test olarak kendiniz yürütebilir veya bir sorun varsa e-posta göndermek için cron içinde planlayabilirsiniz.

Çalıştırıldığında, temel olarak "OK" ya da hatanın ne çıktı? Saniyeler ardında belirli bir eşiğe (sizin tarafınızdan ayarlanmışsa) ulaşırsa, sizi uyarırsınız.

Ancak, sadece eşik izleme istiyorsanız, maatkit için gitmenizi öneririm, aslında gerçek yanlış kullanarak değil, gerçek SQL kullanarak ekleme ve daha sonra sorgulama çalışır SHOW SLAVE STATUS.


1
2017-11-14 21:22





kullanım

mysql_config_editor set --login-path=local --host=<< your slave >> --user=username --password

ve

mysql_config_editor set --login-path=remote --host=<< your master >> --user=username --password

Önlemek için önceden tanımlanmış giriş değerlerini ayarlamak Uyarı: Komut satırı arayüzünde bir şifre kullanmak güvensiz olabilir.

MySql sunucularını sorgulamak için bunları kullanın:

  1. Köstebek üzerindeki Exec_Master_Log_Pos'a karşı master'daki günlük konumunu karşılaştırın:

    master_log = $ (mysql --login-path = uzak -e "ana durumunu göster" | grep -v Dosya | awk '{print $ 2}')

    slave_exec = $ (mysql --login-path = yerel -e "slave durumunu göster \ G" | grep Exec_Master_Log_Pos | awk '{print $ 2}')

    diff = $ (($ master_log - $ slave_exec))

  2. Çalışmakta olup olmadığını görmek için bağımlı IO durumunu kontrol edin:

    IO_Status = $ (mysql --login-path = yerel -e "slave durumunu göster \ G" | grep Slave_IO_Running | awk '{print $ 2}')

  3. Tamam olup olmadığını görmek için köle SQL durumunu kontrol edin:

    SQL_Status = $ (mysql --login-yolu = yerel -e "slave durumunu göster \ G" | grep "Slave_SQL_Running:" | awk '{print $ 2}')

Ardından, tercihinize göre belirli değerleri eşleştirmedikleri takdirde uyarı e-postaları göndermek için $ diff, $ SQL_Status ve $ IO_Status değerlerini kullanabilirsiniz.


1
2018-03-11 13:40





Zenoss ile nasıl yapılacağı: bağlantı metni


0
2017-11-14 16:34