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.
| Özellik | Mantıksal Yedek (Workbench / mysqldump) | Fiziksel Yedek (XtraBackup) |
|---|---|---|
| — | — | — |
| Çıktı formatı | Düz `.sql` metni | İkili InnoDB tablespace dosyaları |
| Taşınabilirlik | Herhangi bir MySQL uyumlu sunucu | Aynı ana sürüm, aynı işletim sistemi mimarisi |
| Yedekleme hızı (büyük veritabanları) | Yavaş — satır satır serileştirme | Hızlı — dosya düzeyinde kopyalama |
| Geri yükleme hızı | Yavaş — her SQL ifadesini yeniden oynatır | Hızlı — dosya kopyalama + çökme kurtarma |
| Ayrıntı düzeyi | Tablo, veritabanı veya tam örnek | Tam örnek veya bireysel tablespace |
| Tutarlılık garantisi | `–single-transaction` (InnoDB) veya tablo kilidi | InnoDB yineleme günlüğü ile sıcak yedek |
| İnsan tarafından okunabilir | Evet | Hayır |
| Uygun olduğu durumlar | Geliştirme/hazırlık, küçük-orta ölçekli veritabanları, geçişler | Bü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-addressdeğeri127.0.0.1olarak ayarlanmış, uzak bağlantıları engelliyor 3306portunu engelleyen bir güvenlik duvarı kuralı- Kullanıcı hesabının dışa aktarma için gerekli
PROCESSveyaSELECTyetkisinden 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
INSERTifadelerini 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
.sqldosyası 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
.sqldosyası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-blob—BLOB,BINARYveVARBINARYsü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.sqlAdı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.sqlGeç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.sqlArdı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.sqlBu 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 -deleteBu betiği her gün sabah 02:00’de çalışacak şekilde zamanlayın:
crontab -eAşağıdaki satırı ekleyin:
0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1Gü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_passwordArdı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.sqlDö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_dbGeri 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 yedekleme | MySQL Workbench Data Export |
| Linux VPS’te otomatik günlük yedeklemeler | Cron betiği aracılığıyla `mysqldump` |
| Büyük InnoDB veritabanı, minimum kesinti süresi | Percona XtraBackup |
| Belirli bir zamana geri yükleme gereksinimi | İkili günlük + tam döküm |
| GUI zamanlayıcılı yönetilen barındırma | cPanel Backup Manager |
| Çapraz sürüm geçişi | Mantıksal döküm (mysqldump / Workbench) |
| Dakika altı RPO ile felaket kurtarma | MySQL Group Replication + fiziksel yedek |
Teknik Temel Çıkarımlar Kontrol Listesi
SELECT,SHOW VIEW,TRIGGER,LOCK TABLES,EVENTvePROCESSyetkilerine sahip özel bir yedekleme kullanıcısı kullanın — aslarootkullanmayı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,--triggersve--eventsbayrakları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 completedyorumuyla 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
gzipile 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
DEFINERyan 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.
