15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
21.10.2024
2 +1

MySQL Workbench ile MySQL Veritabanı Nasıl Yedeklenir

MySQL Workbench, yerleşik bir Veri Dışa Aktarma yardımcı programı içeren, MySQL ve MariaDB veritabanlarının taşınabilir .sql döküm dosyaları olarak tam mantıksal yedeklerini oluşturabilen çapraz platform, görsel bir veritabanı yönetim aracıdır. Bu şekilde üretilen mantıksal bir yedek, hem DDL şemasını hem de DML verilerini düz SQL ifadeleri olarak yakalar; bu da onu insan tarafından okunabilir, sürüm kontrolüne uygun ve işletim sistemi veya depolama motorundan bağımsız olarak herhangi bir uyumlu MySQL örneğinde geri yüklenebilir hale getirir.

Bu kılavuz, yedekleme sürecinin her aşamasını ele almaktadır — ilk bağlantı kurulumundan dışa aktarma yapılandırması, doğrulama ve otomasyona kadar — aynı zamanda MySQL Workbench’in dışa aktarma aracının ortamınız için doğru seçim olup olmadığını belirleyen mimari değiş tokuşları da kapsamaktadır.

Mantıksal Yedeklemeler Neden Önemlidir (ve Ne Zaman Yeterli Değildir)

MySQL Workbench’in Veri Dışa Aktarma işlevi, mysqldump yardımcı programını bir GUI içinde sarar. Bu, çıktının bir mantıksal yedek olduğu anlamına gelir: yeniden oynatıldığında veritabanını sıfırdan yeniden oluşturan sıralı bir SQL ifadeleri kümesi (CREATE TABLE, INSERT INTO vb.). Bu durum, InnoDB tablespace dosyalarını doğrudan kopyalayan Percona XtraBackup veya MySQL Enterprise Backup gibi araçlar tarafından üretilen fiziksel yedeklerden (ham veri dosyası kopyaları) farklıdır.

ÖzellikMantıksal Yedek (Workbench / mysqldump)Fiziksel Yedek (XtraBackup)
Çıktı formatıDüz `.sql` metniİkili InnoDB tablespace dosyaları
TaşınabilirlikHerhangi bir MySQL uyumlu sunucuAynı ana sürüm, aynı işletim sistemi mimarisi
Yedekleme hızı (büyük veritabanları)Yavaş — satır satır serileştirmeHızlı — dosya düzeyinde kopyalama
Geri yükleme hızıYavaş — her SQL ifadesini yeniden oynatırHızlı — dosya kopyalama + çökme kurtarma
Ayrıntı düzeyiTablo, veritabanı veya tam örnekTam örnek veya bireysel tablespace
Tutarlılık garantisi`–single-transaction` (InnoDB) veya tablo kilidiInnoDB yineleme günlüğü ile sıcak yedek
İnsan tarafından okunabilirEvetHayır
Uygun olduğu durumlarGeliştirme/hazırlık, küçük-orta ölçekli veritabanları, geçişlerBüyük üretim veritabanları

Bir VPS Hosting veya paylaşımlı ortamda birkaç gigabaytın altındaki veritabanları için MySQL Workbench aracılığıyla mantıksal yedekleme tamamen pratiktir. Yüzlerce gigabaytlık üretim veritabanları için Workbench dışa aktarmasını tamamlayıcı veya geliştirme ortamı aracı olarak değerlendirmeli ve üretim RPO/RTO hedefleri için fiziksel veya ikili günlük tabanlı yedeklemelere güvenmelisiniz.

Adım 1: MySQL Workbench’i Yükleyin ve Uyumluluğu Doğrulayın

MySQL Workbench’i resmi MySQL İndirmeler sayfasından indirin. Yükleyici Windows, macOS ve Ubuntu/Debian/Fedora Linux paketleri için mevcuttur.

Sürüm uyumu önemlidir. MySQL Workbench 8.0.x, MySQL 8.0.x sunucularına karşı kullanılmalıdır. Önemli ölçüde eski bir Workbench istemcisini daha yeni bir sunucuya karşı (veya tam tersi) kullanmak, dışa aktarma sihirbazının sonraki sürümlerde tanıtılan oluşturulan sütunlar, işlevsel dizinler veya JSON şema doğrulama yan tümceleri gibi ayrıştıramadığı nesneleri sessizce atlamasına neden olabilir.

Kurulumdan sonra istemci sürümünün sunucunuzla eşleştiğini doğrulayın:

SELECT VERSION();

Herhangi bir dışa aktarma işlemine geçmeden önce sunucu sürümünü doğrulamak için bağlandıktan hemen sonra bu sorguyu çalıştırın.

Adım 2: Sunucu Bağlantısı Oluşturun ve Test Edin

MySQL Workbench’i başlatın. Ana ekranda MySQL Connections panelini bulun ve bağlantı kurulum iletişim kutusunu açmak için + simgesine tıklayın.

Aşağıdaki alanları doldurun:

  • Connection Name — açıklayıcı bir etiket (örn. prod-db-01)
  • Hostname — sunucunun IP adresi veya FQDN’si
  • Port — varsayılan 3306‘dir; sunucunuz standart dışı bir port kullanıyorsa değiştirin
  • Username — MySQL kullanıcı hesabı
  • Password — Workbench kasasında saklayın veya bağlantı sırasında girin

Test Connection‘a tıklayın. Başarılı bir test, TCP erişilebilirliğini ve kimlik bilgisi geçerliliğini doğrular. Test başarısız olursa yaygın nedenler şunlardır:

  • MySQL sunucusunun bind-address değeri 127.0.0.1 olarak ayarlanmış, uzak bağlantıları engelliyor
  • 3306 portunu engelleyen bir güvenlik duvarı kuralı
  • Kullanıcı hesabının dışa aktarma için gerekli PROCESS veya SELECT yetkisinden yoksun olması

Tam dışa aktarma için gereken minimum yetkiler:

GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT, PROCESS ON *.* TO 'backup_user'@'%';

Rutin yedekleme işlemleri için asla root hesabını kullanmayın. Özel bir salt okunur yedekleme kullanıcısı oluşturun ve yalnızca gerekli olanı verin.

Adım 3: Veri Dışa Aktarma Aracını Açın

Bağlandıktan sonra üst menü çubuğunda Server > Data Export seçeneğine gidin. Bu, mysqldump için GUI ön ucu olan Veri Dışa Aktarma panelini açar.

Panel iki ana bölüme ayrılmıştır:

  • Sol bölme — bağlı kullanıcıya görünür tüm veritabanlarını listeler
  • Sağ bölme — dışa aktarma formatını, çıktı hedefini ve gelişmiş seçenekleri gösterir

Adım 4: Veritabanlarını ve Tabloları Seçin

Sol bölmede, yedeğe dahil etmek istediğiniz her veritabanının yanındaki kutuyu işaretleyin. Bir veritabanı düğümünü genişletmek, tek tek tabloları ortaya çıkarır ve kısmi dışa aktarmalar yapmanıza olanak tanır — örneğin, yeniden oluşturulabilecek büyük günlük veya analitik tablolarını dışa aktarmadan yalnızca bir users tablosunu veya orders tablosunu yedeklemek gibi.

Pratik ipucu: WordPress gibi bir CMS veya Paylaşımlı Web Hosting üzerinde özel bir uygulama çalıştırıyorsanız, genellikle tek bir uygulama veritabanınız vardır. Tamamını seçin. Bir Dedicated Server üzerinde düzinelerce veritabanıyla çok kiracılı bir uygulamayı yönetiyorsanız, her şeyi GUI aracılığıyla tek seferde dışa aktarmak yerine veritabanı başına dışa aktarmaları komut dosyasıyla yazmayı düşünün.

Adım 5: Dışa Aktarma Seçeneklerini Yapılandırın

Bu adım, tüm süreçteki en kritik kararları içerir.

Dışa Aktarma İçerik Türü

Objects to Export altında, dökümün ne içereceğini seçin:

  • Dump Structure and Data — hem DDL’yi (CREATE TABLE, CREATE VIEW, saklı yordamlar, tetikleyiciler, olaylar) hem de tüm satır verilerini dışa aktarır. Bu, eksiksiz, geri yüklenebilir bir yedek için doğru seçimdir.
  • Dump Data Only — yalnızca INSERT ifadelerini dışa aktarır. Verileri zaten mevcut bir şemaya geçirirken bunu kullanın.
  • Dump Structure Only — yalnızca DDL’yi dışa aktarır. Hassas üretim verilerini kopyalamadan bir şemayı hazırlık ortamına çoğaltmak için kullanışlıdır.

Çıktı Hedefi

  • Export to Dump Project Folder — bir dizin içinde tablo başına bir .sql dosyası oluşturur. Tabloları seçici olarak geri yüklemeniz gerektiğinde kullanışlıdır, ancak büyük veritabanları için düzinelerce dosya üretir.
  • Export to Self-Contained File — tüm dışa aktarmayı tek bir .sql dosyasına yazar. Bu, sıkıştırması, aktarması ve depolaması kolay tek bir yapı ürettiğinden çoğu yedekleme senaryosu için standart seçimdir.

Çıktı yolunu ayarlamak için Browse‘a tıklayın. Web kökünün dışında ve ideal olarak veritabanı veri dizininden ayrı bir birimde bir konum seçin.

Gelişmiş Seçenekler (Tutarlılık İçin Kritik)

Temel mysqldump bayraklarını ortaya çıkarmak için Advanced Options‘a tıklayın. Şunlara özellikle dikkat edin:

  • --single-transaction — tüm InnoDB dışa aktarmasını tek bir tekrarlanabilir okuma işlemine sarar, tabloları kilitlemeden tutarlı bir anlık görüntü üretir. Bu, InnoDB kullanan canlı üretim veritabanları için zorunludur. Etkinleştirin.
  • --routines — saklı yordamları ve işlevleri içerir. Bazı Workbench sürümlerinde varsayılan olarak devre dışıdır.
  • --events — zamanlanmış olayları içerir.
  • --triggers — varsayılan olarak dahildir; işaretli olduğunu doğrulayın.
  • --hex-blobBLOB, BINARY ve VARBINARY sütunlarını onaltılık dizeler olarak dışa aktarır, farklı karakter kümesi varsayılanlarına sahip sistemlerde geri yükleme sırasında kodlama bozulmasını önler.

Belirli bir kullanıcıya bağlı DEFINER yan tümceleri kullanan bir veritabanını dışa aktarıyorsanız (görünümler ve saklı yordamlarda yaygındır), dökümü farklı bir sunucuda geri yüklemenin o kullanıcı mevcut değilse başarısız olacağını unutmayın. Geri yüklemeden önce DEFINER yan tümcelerini kaldırın veya değiştirin:

sed 's/DEFINER=[^ ]* //g' original_dump.sql > cleaned_dump.sql

Adım 6: Dışa Aktarmayı Çalıştırın

Start Export‘a tıklayın. MySQL Workbench, her nesne işlenirken gerçek zamanlı bir ilerleme günlüğü görüntüler. Büyük veritabanları için bu, veri hacmine, tablo sayısına ve sunucu G/Ç kapasitesine bağlı olarak birkaç dakika ile saatler arasında sürebilir.

Günlük çıktısını dikkatle izleyin. Access denied for table veya Table doesn't exist gibi uyarılar, eksik bir yedek üretecek yetki boşluklarını veya şema tutarsızlıklarını gösterir. Bunları kozmetik olarak görmezden gelmeyin — eksik bir yedek, yedek değildir.

Tamamlandığında, günlük bir zaman damgasıyla birlikte Export completed görüntüleyecektir.

Adım 7: Yedek Dosyasını Doğrulayın

Çıktı dizinine gidin ve .sql dosyasının mevcut olduğunu ve sıfır olmayan bir boyuta sahip olduğunu doğrulayın. Ardından dosyayı bir metin düzenleyicide açın veya hızlı bir bütünlük kontrolü çalıştırın:

head -50 your_backup.sql
tail -20 your_backup.sql

Geçerli bir döküm, mysqldump sürümünü ve sunucu sürümünü içeren bir yorum bloğuyla başlar, ardından karakter kümesi ve yabancı anahtar kontrolleri için SET ifadeleri gelir. Son bir -- Dump completed on YYYY-MM-DD HH:MM:SS yorumuyla biter. Dosya kesilmişse veya aniden bitiyorsa, dışa aktarma kesintiye uğramış ve yedek kullanılamaz durumdadır.

Ek güvence için, üretim dışı bir veritabanına test geri yüklemesi gerçekleştirin:

mysql -u root -p test_restore_db < your_backup.sql

Ardından kaynak ile satır sayılarını karşılaştırın:

SELECT COUNT(*) FROM test_restore_db.your_critical_table;

Hiç test edilmemiş bir yedek, bir garanti değil, bir varsayımdır.

Adım 8: Yedek Dosyasını Sıkıştırın ve Güvenli Hale Getirin

Ham .sql dökümleri, tekrarlayan metin yapıları nedeniyle son derece iyi sıkışır. Dışa aktarmanın hemen ardından sıkıştırın:

gzip -9 your_backup.sql

Bu genellikle dosya boyutunu %70–90 oranında azaltır. Hassas müşteri verileri içeren veritabanları için, depolamadan veya aktarmadan önce sıkıştırılmış arşivi şifreleyin:

openssl enc -aes-256-cbc -salt -pbkdf2 -in your_backup.sql.gz -out your_backup.sql.gz.enc -k 'your-strong-passphrase'

Parolayı yedek dosyasından ayrı saklayın — asla aynı dizinde veya depoda bulundurmayın.

Uygulamanız HTTPS kullanıyorsa (bir SSL Sertifikası tarafından zorunlu kılınmış), yedek aktarımlarına da aynı disiplini uygulayın: şifrelenmemiş veritabanı dökümlerini asla düz HTTP veya şifrelenmemiş FTP üzerinden taşımayın.

MySQL Workbench’in GUI’si Olmadan MySQL Yedeklerini Otomatikleştirme

MySQL Workbench’in yerel bir zamanlayıcısı yoktur. Yinelenen yedeklemeler için, mysqldump‘ü doğrudan bir kabuk betiğinden çağırın ve cron veya bir systemd zamanlayıcısıyla zamanlayın.

Otomatik Günlük Yedeklemeler İçin Kabuk Betiği

#!/bin/bash

DB_USER="backup_user"
DB_PASS="your_password"
DB_NAME="your_database"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%F_%H-%M-%S)
FILENAME="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz"

mkdir -p "$BACKUP_DIR"

mysqldump 
  --user="$DB_USER" 
  --password="$DB_PASS" 
  --single-transaction 
  --routines 
  --triggers 
  --events 
  --hex-blob 
  "$DB_NAME" | gzip -9 > "$FILENAME"

# Retain only the last 14 days of backups
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +14 -delete

Bu betiği her gün sabah 02:00’de çalışacak şekilde zamanlayın:

crontab -e

Aşağıdaki satırı ekleyin:

0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

Güvenlik notu: Parolayı bir kabuk betiğinde saklamak, yalnızca betiğin chmod 700 izinlerine sahip olması ve cron işini çalıştıran kullanıcıya ait olması durumunda kabul edilebilir. Daha güvenli bir yaklaşım, bir MySQL seçenekler dosyası kullanmaktır:

# /root/.my.cnf — permissions must be 600
[client]
user=backup_user
password=your_password

Ardından --user ve --password bayraklarını betikten tamamen kaldırın; mysqldump kimlik bilgilerini .my.cnf‘den otomatik olarak okuyacaktır.

Birden fazla sunucuda birden fazla veritabanını yöneten ekipler için, bu otomasyonu yerleşik zamanlanmış yedekleme yöneticisi içeren ve manuel komut dosyası yazmadan saklama, uzak depolama hedefleri ve e-posta bildirimlerini yöneten bir cPanel’li VPS ile eşleştirmeyi düşünün.

MySQL Workbench ile Oluşturulan Bir Yedeği Geri Yükleme

Workbench tarafından oluşturulan bir dökümden geri yükleme basittir, ancak birkaç ayrıntıya dikkat edilmesi gerekir.

Hedef veritabanı mevcut değilse oluşturun:

CREATE DATABASE restored_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Döküm dosyasından geri yükleyin:

mysql -u root -p restored_db < your_backup.sql

Döküm --databases veya --all-databases bayraklarıyla oluşturulduysa (CREATE DATABASE ve USE ifadelerini gömer), komut satırında hedef veritabanı belirtmeyin — döküm bunu dahili olarak yönetir. Workbench’in tek veritabanı dışa aktarması bu ifadeleri varsayılan olarak içermez, bu nedenle hedef veritabanını manuel olarak oluşturmanız ve belirtmeniz gerekir.

Sıkıştırılmış dökümleri için:

gunzip -c your_backup.sql.gz | mysql -u root -p restored_db

Geri yükleme çıktısını hatalar için izleyin. Geri yükleme sırasında yabancı anahtar kısıtlaması ihlalleri genellikle tablo içe aktarma sırasından kaynaklanır. Bu durumda, yabancı anahtar kontrollerini geçici olarak devre dışı bırakın:

SET FOREIGN_KEY_CHECKS = 0;
-- run restore
SET FOREIGN_KEY_CHECKS = 1;

Karar Matrisi: Her Yedekleme Yöntemini Ne Zaman Kullanmalı

SenaryoÖnerilen Araç
Küçük veritabanı, ara sıra manuel yedeklemeMySQL Workbench Data Export
Linux VPS’te otomatik günlük yedeklemelerCron betiği aracılığıyla `mysqldump`
Büyük InnoDB veritabanı, minimum kesinti süresiPercona XtraBackup
Belirli bir zamana geri yükleme gereksinimiİkili günlük + tam döküm
GUI zamanlayıcılı yönetilen barındırmacPanel Backup Manager
Çapraz sürüm geçişiMantıksal döküm (mysqldump / Workbench)
Dakika altı RPO ile felaket kurtarmaMySQL Group Replication + fiziksel yedek

Teknik Temel Çıkarımlar Kontrol Listesi

  • SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT ve PROCESS yetkilerine sahip özel bir yedekleme kullanıcısı kullanın — asla root kullanmayın.
  • Kilitlemeyi önlemek ve tutarlı bir anlık görüntü sağlamak için InnoDB tabloları için her zaman --single-transaction‘ı etkinleştirin.
  • --routines, --triggers ve --events bayraklarını dahil edin; Workbench bunların tümünü varsayılan olarak etkinleştirmeyebilir.
  • Döküm dosyasının geçerli olarak kabul edilmeden önce -- Dump completed yorumuyla bittiğini doğrulayın.
  • Düzenli aralıklarla — en az aylık olarak — üretim dışı bir veritabanına test geri yüklemeleri yapın.
  • Dökümleri hemen gzip ile sıkıştırın ve aktarım veya uzak depolama öncesinde hassas arşivleri AES-256 ile şifreleyin.
  • Farklı bir kullanıcı kümesine sahip bir sunucuya geri yüklüyorsanız DEFINER yan tümcelerini kaldırın veya değiştirin.
  • ~10 GB’den büyük veritabanları için fiziksel yedekleme araçlarını değerlendirin; bu ölçekte mantıksal yedeklemeler çoğu SLA için kabul edilemez geri yükleme süreleri getirir.
  • Yedekleri ayrı bir birimde veya uzak konumda saklayın — koruduğu veritabanıyla aynı diskte bulunan bir yedek, yedek değildir.

Sıkça Sorulan Sorular

MySQL Workbench dışa aktarma sırasında tabloları kilitler mi?

--single-transaction seçeneği etkinleştirilmiş InnoDB tabloları için tablo kilidi alınmaz. Dışa aktarma, tutarlı bir okuma anlık görüntüsü kullanır. MyISAM tabloları için, MyISAM işlemsel tutarlılığı desteklemediğinden mysqldump okuma kilitleri alır. Veritabanınız depolama motorlarını karıştırıyorsa, dışa aktarma InnoDB tabloları işlemsel olarak okunurken MyISAM tablolarını kilitleyecektir.

MySQL Workbench ile uzak bir MySQL sunucusunu yedekleyebilir miyim?

Evet. MySQL Workbench, erişilebilir herhangi bir MySQL sunucusuna TCP üzerinden bağlanır. Bağlantıyı uzak ana bilgisayarın IP’si veya ana bilgisayar adıyla yapılandırın ve güvenlik duvarında 3306 portunu (veya özel portunuzu) açık olduğundan emin olun. Doğrudan genel erişimi olmayan sunucular için Workbench, SSH tünelini yerel olarak destekler — bağlantı iletişim kutusundaki SSH sekmesinde yapılandırın.

“Export to Dump Project Folder” ile “Export to Self-Contained File” arasındaki fark nedir?

Proje klasörü seçeneği, tablo başına bir .sql dosyası oluşturur; bu, seçici tablo düzeyinde geri yüklemelere olanak tanır ancak çok sayıda dosya üretir. Kendi kendine yeten dosya seçeneği, her şeyi tek bir .sql dosyasına yazar; bu, yönetmesi, sıkıştırması ve aktarması daha kolaydır. Çoğu kullanım durumu için kendi kendine yeten dosya doğru seçimdir.

.sql yedek dosyam gerçek veritabanı boyutuna kıyasla ne kadar büyük olacak?

Ham bir .sql dökümü, satır verileri ayrıntılı INSERT ifadeleri olarak serileştirildiğinden genellikle gerçek disk üzerindeki veritabanı boyutunun 1,5 ila 3 katı büyüklüğündedir. gzip sıkıştırmasından sonra, döküm genellikle orijinal veritabanı boyutunun %10–30’una küçülür; bu da sıkıştırılmış mantıksal yedeklemeleri metin ağırlıklı veri kümeleri için çok depolama açısından verimli hale getirir.

MySQL Workbench görünümleri, saklı yordamları ve tetikleyicileri yedekleyebilir mi?

Evet, ancak yalnızca ilgili seçenekler açıkça etkinleştirilmişse. Gelişmiş Seçenekler panelinde, --routines (saklı yordamlar ve işlevler için) ve --events‘nin işaretli olduğunu doğrulayın. Tetikleyiciler varsayılan olarak dahildir. Görünümler, “Dump Structure and Data” veya “Dump Structure Only” seçildiğinde şema dışa aktarmasının bir parçası olarak dahil edilir.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın