DBAtlas · Veritabanı operasyon atlası

MySQL mantıksal yedek ve geri yükleme (mysqldump, MySQL Shell)

MySQLSeviye: OrtaSüre: 20–90 dk (veri boyutuna göre)

mysqldump ya da MySQL Shell (util.dumpInstance / dumpSchemas / dumpTables + util.loadDump) ile mantıksal yedek ve geri yükleme: tablo, şema ya da tüm instance; yalnız yapı ya da yalnız veri; başka sunucuya taşıma; tam dump içinden tek tablo çıkarma; systemd/cron ile zamanlanmış, login-path ile parolasız, doğrulanan, saklama süreli yedek. Her yolun sonunda satır sayısı karşılaştırması vardır. Taşıma, tek nesne kurtarma ve sürümler arası geçiş için bu rehber; büyük veritabanının günlük yedeği, hızlı restore ve belirli bir ana dönüş (PITR) için Percona XtraBackup rehberi kullanılır.

Yapı: 1 sunucu (taşımada ve instance geri yüklemesinde + hedef sunucu)

Senaryolar

  • Tablo(lar) export / import — Bir ya da birkaç tablonun yedeğini almak, başka şemaya/sunucuya kopyalamak ya da geri yüklemek. Kaynak açık kalır; InnoDB tablolarında lock alınmaz.
  • Bir şemayı (veritabanını) yedekle / geri yükle — Bir veritabanının (şemanın) tamamını yedeklemek ya da başka bir şemaya/sunucuya yüklemek. Kaynak açık kalır; hedefte aynı adlı tablolar silinip yeniden oluşturulur.
  • Tüm instance (kullanıcılar + tüm şemalar) — Yedek bu sunucuda alınır, geri yükleme boş bir sunucuda yapılır: kullanıcılar, yetkiler ve tüm şemalar. Sunucuyu yeniden kurmak ya da sürüm/platform değiştirmek için.
  • Yalnız yapı (DDL) — Tablo, view, trigger, procedure ve event tanımları; veri yok. Şema karşılaştırma, boş ortam kurma ya da yapıyı sürüm kontrolüne almak için.
  • Yalnız veri — Yapı hedefte hazırken yalnız satırlar aktarılır (ör. test verisini yenilemek). Hedefteki trigger'lar yükleme sırasında çalışabilir; rehber bunu kontrol eder.
  • Başka sunucuya taşıma — Hedef sunucuda çalışılır; kaynağa ağ üzerinden, login-path ile bağlanılır. Kesme anında uygulama yazmayı durdurur; kesinti dump + yükleme süresi kadardır. Sunucu, işletim sistemi ya da sürüm değişimi için.
  • Tam dump içinden tek tablo çıkarma — Elinizde tam bir dump var ve yalnız bir tablo gerekiyor (silinen satırlar, DROP edilen tablo). Asıl şemaya dokunmadan ayrı şemaya çıkarılır ya da silinmiş tablo geri konur.
  • Zamanlanmış yedek (systemd timer / cron) — Her gün belirli saatte otomatik mantıksal yedek: ayrı yedek kullanıcısı, login-path, betik, systemd timer ya da cron, saklama süresi ve hata bildirimi. Kaynak açık kalır.

Başlamadan önce

  • MySQL … çalışıyor; işletim sistemi root'u mysql komutuyla parolasız bağlanabiliyor (auth_socket ya da ~/.mylogin.cnf). DBAtlas MySQL tek sunucu kurulumu rehberiyle kurulduysa yollar aynıdır.
  • Şemaların boyutu biliniyor ve yedek dizini … için yeterli boş alan var (sıkıştırılmış mantıksal yedek genellikle veri boyutunun %10–30'u; index'ler dump'a yalnız tanım olarak girer).
  • Tüm tablolar InnoDB. --single-transaction (ve MySQL Shell'in tutarlı dump'ı) yalnız InnoDB tablolarında lock almadan ve tutarlıdır; MyISAM tablosu varsa dump süresince o tablolara yazma tutarsızlık yaratır.
  • MySQL Shell kurulacak sunucu MySQL repo'suna (repo.mysql.com) erişebiliyor ya da kurum içi mirror tanımlı.
  • Hedef sunucu … üzerinde aynı ya da daha yeni MySQL sürümü (DBAtlas kurulum rehberiyle) kurulu, çalışıyor ve kullanıcı şeması içermiyor. Geri dönüş için 8.4'ten 8.0'a gibi eski sürüme yükleme desteklenmez.
  • Hedef sunucu kaynağın … portuna erişebiliyor.
  • Sunucudan e-posta gönderilebiliyor: yerel MTA (postfix) kurum SMTP relay'ine yönlendirilmiş.
  • Büyük bir geri yükleme ya da taşıma için bakım penceresi planlandı; hedefin üzerine yazılacaksa hedefin yedeği alındı.
  • Bu sunucu sağlıklı bir replica: IO ve SQL thread'leri Yes, gecikme düşük. Dump'taki binlog konumu (--source-data=2) bu replica'nın kendi binlog'unu gösterir; PITR'de kullanılacaksa log_replica_updates açık olmalı (8.x'te varsayılan).
  • Bu sunucu InnoDB Cluster üyesi ve şu an SECONDARY / ONLINE.

Rehberin aşamaları

  • Hazırlık — Yedek dizinini oluştur · Tablo motorlarını ve uzun transaction'ları kontrol et · MySQL Shell'i kur
  • Geri yükleme (import) — Hedef şemayı oluştur · Hedefte tablo yapısını oluştur · Hedefteki trigger'ları kontrol et · Yükle (mysql) · Yükle (mysql, aynı şemanın üzerine) · Yükle (util.loadDump) …
  • Instance yedeği — Kullanıcıları ve yetkileri dışa aktar · Tüm şemaları yedekle (mysqldump) · Instance'ı yedekle (util.dumpInstance) · Yedeği geri yükleme sunucusuna kopyala · Yedeği yükle (mysql) · Kullanıcıları yükle …
  • Kaynak sunucuda taşıma hesabı — Taşıma kullanıcısını oluştur · Firewall'da portu hedefe aç · Uygulamayı durdur (kesme anı)
  • Hedef sunucuda aktarım — Kaynak bağlantısını login-path olarak kaydet · Kullanıcıları taşı · Şemaları aktar (mysqldump | mysql) · Kullanıcıları hedefe yükle · Kaynağı dump'la (util.dumpInstance / dumpSchemas) · Hedefe yükle (util.loadDump) …
  • Dump içinden tek tablo çıkarma — Tablonun dump'ta olduğunu kontrol et · Tabloyu dump'tan ayıkla · Hedef şemayı oluştur · Tabloyu yükle · Tabloyu asıl şemaya geri yükle · Satır sayısını karşılaştır …
  • Yedek kullanıcısı ve login-path — İşletim sistemi yedek kullanıcısını oluştur · MySQL yedek hesabını oluştur · Login-path'i kaydet (mysql_config_editor)
  • Yedek betiği — Bildirim aracını kur · Yedek betiğini yaz · Betiği çalıştırılabilir yap · İlk yedeği elle al
  • Zamanlama (systemd timer) — systemd servisini yaz · systemd timer'ı yaz · Timer'ı etkinleştir ve servisi elle tetikle · Zamanlanmış işin çalıştığını kontrol et (ertesi gün)
  • Zamanlama (cron) — cron servisini hazırla · cron görevini yaz · cron dosyasının iznini ayarla ve cron ortamında dene · Zamanlanmış işin çalıştığını kontrol et (ertesi gün)
  • Doğrulama ve izleme — Son yedeği test şemasına geri yükle · Son yedeğin yaşını izle
  • Sonraki adım: fiziksel yedek — Mantıksal yedeğin sınırlarını kapatın
Ortamına göre adım adım planı aç →