Minimum kesinti süresi ile MySQL çoğaltması nasıl kurulur


12

Temel olarak büyük bir MySQL veritabanımız var ve bir slave'e çoğaltma yapmak istiyoruz (master slave kurulumu). Veritabanında MINIMAL kesinti ile nasıl yapılacağı konusunda adım adım kılavuzunuz var mı? Veritabanını yedekleme ve yedeklemeyi bağımlı sunucuya aktarma (özel bir ağ üzerinden bile) 40 dakika kadar sürer. Oldukça uzun bir kesinti.

Yanıtlar:


15

Depolama motoru olarak InnoDB kullandığınızı varsayıyorum. Öyleyse, bin günlük kaydını açmanız gerekir . Şimdi değilse, my.cnf dosyasını değiştirdikten sonra MySQL'i yeniden başlatmanız gerekir. Veritabanını engellemeden binlog pozisyonu ile veritabanının dökümünü alabileceğiniz tek kesinti süresi:

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A

Bu yedeklemeye dayanarak, slave'deki verileri geri yükleyin. Bundan sonra, herhangi bir MySQL çoğaltma eğitimini takip edebilir ve slave'in master ile birlikte yakalanmasını / çalışmasını sağlayabilirsiniz.


bazı tablolar innodb kullanmıyorsa ne olur? Ve -A yerine veritabanlarının bir alt kümesini dökmek için --databases kullanırsanız yukarıdaki yedekleme hala geçerli olur mu?
mathieu

bazı tablolar innodb kullanmıyorsa, yedekleme tutarsız olabilir. buraya bakın: stackoverflow.com/a/7461466/104398 ; yedekleme bu atlanan veritabanlarını içermez. bu tür bir yedeğe dayalı çoğaltma ayarlarsanız ve çoğaltılanları filtrelemezseniz, atlanan veritabanlarında bazı işlemler yapılır yapılmaz çoğaltmanız kesilir.
pQd

Tamam, kalan myisam tabloları innodb dönüştürdü ve sadece istediğim veritabanlarının çoğaltılmış / yedeklenmiş olduğundan emin oldum.
mathieu

3

çoğaltmayı başlatmak için köle üzerinde veritabanınızın tutarlı bir kopyasına ihtiyacınız vardır

masalarınız myisam veya innodb destekleniyor mu? sorunu bulmak

show table status

ve 'Motor' sütununa bakın

Eğer tüm tablolar innodb ise, mysqldump --single-transaction kullanarak ve bunu köle içine alarak sıfır kesinti kurulumu yapabilirsiniz

tablolar myisam ise kopyalanırken tabloları yazmak için kilitlemek zorunda olduğu için kesinti olması gerekir. mysqlhotcopy bu konuda size yardımcı olacak bir araçtır.

alternatif olarak, LVM (mantıksal birim yöneticisi) kullanıyorsanız, veritabanını durdurabilir, birkaç saniye içinde bir LVM anlık görüntüsü alabilir ve db'yi yeniden başlatabilirsiniz. Ardından, anlık görüntüden tutarlı bir kopya oluşturabilirsiniz.


1

Slave'i ayarlamak için bir veri anlık görüntüsü almanız ve ikili günlük konumunu kaydetmeniz gerekir. Veritabanının yedeklenmesi, performansın düşmesine neden olsa da çalışmama süresine neden olmamalıdır, ancak zaten veritabanını zaten yedekliyorsunuz değil mi? Yedeklemenin bazı tabloları kilitlemesi gerektiğini görebilirsiniz ve bu, uygulamanızda kilitlenmelere neden olabilir, bunun için nasıl uygulandığına gerçekten bakmanız gerekir.

Diskin fotoğrafını çekebilir misiniz? Bir hotbackup yapabiliyorsanız arıza süresini önemli ölçüde azaltacaktır.

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.