ServBay’e Mevcut PostgreSQL Verilerini Nasıl Aktarabilirsiniz
ServBay, geliştiriciler için tasarlanmış güçlü bir yerel Web geliştirme ortamıdır ve içinde PostgreSQL dahil birçok dil, sunucu ve veritabanı sistemi barındırır. ServBay dışında çalışan bir PostgreSQL veritabanınız varsa ve verilerini ServBay’in yerleşik PostgreSQL örneğine taşımak istiyorsanız, bu rehber detaylı adımlarla süreci size gösterecektir.
Bu makalede, PostgreSQL’in standart araçları olan pg_dump
ve pg_restore
ile ServBay PostgreSQL soket dosyasının yolunu doğru şekilde kullanarak veri aktarma sürecini eksiksiz anlatıyoruz.
Genel Bakış
Mevcut bir PostgreSQL veritabanının verisini ServBay’e taşımak, genellikle aşağıdaki temel adımları içerir:
- Kaynak PostgreSQL veritabanından veri dışa aktarılır.
- ServBay’in yerleşik PostgreSQL’inde hedef veritabanı hazırlanır.
- Dışa aktarılan veri, ServBay’deki hedef veritabanına içe aktarılır.
- Aktarılan verinin bütünlüğü ve doğruluğu kontrol edilir.
Bu adımları detaylandıracağız ve ServBay’e özgü olan socket ile bağlantı şeklini nasıl ele alacağınızı göstereceğiz.
Kullanım Senaryoları
- Üretim ya da test ortamındaki bir PostgreSQL verisini, yerel ServBay ortamına geliştirip hata ayıklamak için kopyalamak.
- Bağımsız bir PostgreSQL kurulumundan ServBay’de merkezi şekilde yönetilmek üzere veri taşımak.
- ServBay’de, dış veritabanının yapı ve verisiyle bire bir uyumlu bir yerel geliştirme kopyası oluşturmak.
Ön Gereklilikler
Veri aktarma işlemine başlamadan önce aşağıdaki şartların sağlandığından emin olun:
- ServBay kurulmuş ve çalışıyor olmalı: macOS üzerinde ServBay’in kurulu ve başlatılmış olması gerekir. ServBay, varsayılan olarak PostgreSQL içerir.
- ServBay PostgreSQL çalışıyor olmalı: ServBay kontrol panelinden PostgreSQL paketinin başlatıldığını doğrulayın.
- Kaynak PostgreSQL kurulu olmalı: Erişiminiz olan, çalışan bir kaynak PostgreSQL veritabanı olmalı.
- PostgreSQL istemci araçları yüklü olmalı: Sistemde
pg_dump
vepg_restore
gibi komut satırı araçları olmalı. Genellikle sunucu veya istemci paketiyle birlikte gelirler. - Veritabanı erişim yetkisi: Kaynak veritabanından veri dışa aktarma ve ServBay’de yeni veritabanı oluşturup veri aktarmak için (genelde
postgres
gibi süper kullanıcı) gerekli izinlere sahip olmalısınız.
Adım 1: Kaynak PostgreSQL’den Verilerin Dışa Aktarılması
Öncelikle, kaynak PostgreSQL veritabanındaki verileri bir dosyaya dışa aktaracağız. Bunun için pg_dump
aracı önerilir.
Terminali açın: Terminal uygulamasını başlatın.
Dışa aktarma komutunu çalıştırın: Kaynak veritabanına bağlantı kurmak ve verileri dosyaya aktarmak için
pg_dump
komutunu kullanın.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: Kaynak PostgreSQL veritabanı kullanıcı adınızı girin.-d your_source_database_name
: Dışa aktarılacak veritabanının adını girin.-F c
: Çıkış formatını özel arşiv olarak belirler.pg_restore
için önerilen formattır, esnek geri yükleme seçenekleri sunar (örneğin, tablosal veya nesne bazlı geri yükleme).-b
: Büyük nesneler (blob) dahil edilir.-v
: Ayrıntılı çıktı modunu etkinleştirir, işlem takibini sağlar.-f mydatabase_source.dump
: Dosya adı ve yolu. Kendi tercihinize göre dosya adını ve dizini belirleyebilirsiniz.
Kaynak veritabanı yapınıza göre, sunucu adı (
-h
) veya port (-p
) belirtmek gerekebilir. Örneğin eğer veritabanı yerelde ancak portu 5432 dışında ise:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1Komutu çalıştırınca sistem sizden kaynak veritabanı kullanıcısının şifresini isteyebilir.
Adım 2: ServBay’de Hedef Veritabanının Hazırlanması
Verileri ServBay’e aktarmadan önce, ServBay’in PostgreSQL örneğinde boş bir hedef veritabanı oluşturmalısınız.
ServBay PostgreSQL’e Bağlanın: ServBay PostgreSQL’in varsayılan ayarı, bağlantıların sistemdeki socket dosyası üzerinden yapılmasıdır. Socket dosyası genellikle
/Applications/ServBay/tmp
dizinindedir. Bağlanmak içinpsql
istemcisini kullanabilirsiniz.bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
: PostgreSQL’in varsayılan süper kullanıcısıdır. ServBay’de bu kullanıcı ile işlem yapılır.-h /Applications/ServBay/tmp
: ServBay PostgreSQL’e bağlantının anahtarıdır. Komuta bu dizini vererek socket dosyası üzerinden bağlantı sağlanır, TCP/IP portu kullanılmaz.postgres
: Yönetim amacıyla varsayılan veritabanı adı.
Komutu çalıştırınca
postgres
kullanıcısının şifresi gerekebilir. Şifreyi bilmiyorsanız ServBay panelinden veya dökümantasyondan şifreyi öğrenebilir ya da sıfırlayabilirsiniz. Bağlantı sağlanıncapsql
komut satırı ekranı açılır.Hedef Veritabanı Oluşturun:
psql
ekranında yeni bir veritabanı oluşturmak için SQL komutunu girin. Tercihen kaynak veritabanı adına benzer bir isim (örneğin,mydatabase_servbay
) kullanmak önerilir.sqlCREATE DATABASE mydatabase_servbay;
1mydatabase_servbay
ismini tercih ettiğiniz şekilde değiştirebilirsiniz. İşlem tamamlanınca\q
ile psql’den çıkabilirsiniz.
Adım 3: Verilerin ServBay PostgreSQL’e İçe Aktarılması
Artık, daha önce dışa aktarılan .dump
dosyasını pg_restore
aracıyla ServBay üzerinde oluşturulan yeni veritabanına yükleyebilirsiniz.
Terminali açın: Önceki adımdan çıktıysanız tekrar açın.
İçe aktarma komutunu çalıştırın:
pg_restore
ile ServBay PostgreSQL’e bağlanıp verileri içe aktarın.bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: ServBay PostgreSQL’in süper kullanıcı hesabı.-d mydatabase_servbay
: Önceki adımda oluşturduğunuz hedef veritabanı adı.-v
: Ayrıntılı çıkış modu, işlem takibi ve hata gözetimi sağlar.mydatabase_source.dump
: Dışa aktarılan dosyanın yolunu ve adını girin.-h /Applications/ServBay/tmp
: Socket dosyası üzerinden bağlantının tekrar anahtar parametresi.
Komut sonrası sizden ServBay PostgreSQL'in
postgres
şifresi istenebilir. Aktarma işlemi, veritabanının boyutuna ve karmaşıklığına göre bir süre alabilir.
Adım 4: Veri Aktarımını Doğrulama
İçe aktarma tamamlandığında, ServBay üzerinde hedef veritabanına bağlanıp aktarılan veriyi doğrulayın.
ServBay hedef veritabanına bağlanın:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1Burada
mydatabase_servbay
ile kendi veritabanı adınızı kullanın. Şifre girip erişim sağlayın.Sorgu ile doğrulama yapın:
psql
komut satırında çeşitli SQL sorguları ile veriyi denetleyin.- Tüm tabloları listelemek:
\dt
- Belirli bir tablonun ilk satırları:sql
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
yerine kendi tablonuzun adını yazın. - Satır sayısını kontrol etmek:sql
SELECT COUNT(*) FROM your_table_name;
1
Bu sorgularla hem tablonun yapısını hem verilerin doğruluğunu görebilirsiniz.
- Tüm tabloları listelemek:
Olası Uyumluluk Sorunları ve Çözümleri
PostgreSQL’de farklı versiyonlar genellikle uyumludur; fakat büyük sürüm farklarında veya bazı özel durumlarda hata çıkabilir.
- Sürüm Farkları: Kaynak ve hedef sunucunun PostgreSQL sürümü arasında büyük bir fark varsa bazı özellikler değişmiş olabilir.
- Çözüm: İlgili PostgreSQL sürümlerinin dökümantasyonundaki değişiklikleri inceleyin. Gerekirse dışa aktarılan dosyada ya da aktarım sonrası ek scriptlerle ayarlama yapabilirsiniz.
- Eklenti ve Modül Uyumu/eksikliği: Kaynakta kullanılan bazı eklentiler (ör:
uuid-ossp
,pgcrypto
gibi) ServBay’de yoksa ya da sürümü uyumsuzsa sorun çıkarabilir.- Çözüm: Gerekli eklentileri ServBay veritabanına bağlanıp aşağıdaki gibi kurun:sqlEğer eklenti uyumsuzsa, alternatif veya ServBay’in PostgreSQL paket güncellemesini değerlendirin.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- Çözüm: Gerekli eklentileri ServBay veritabanına bağlanıp aşağıdaki gibi kurun:
- Kullanıcı ve Yetki Problemleri:
pg_dump
ile kullanıcı, rol ve yetki bilgisi de dışa aktarılır. Fakat bunlar ServBay ortamında manuel olarak yeniden oluşturulmalı veya ayarlanmalıdır.- Çözüm: Aktarım sonrası, ServBay PostgreSQL’e bağlanıp ihtiyaç duyduğunuz kullanıcıları ve rolleri aşağıdaki gibi oluşturup yetkileri verin:sqlİsterseniz
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Gerekirse daha ayrıntılı yetkiler ekleyin
1
2
3pg_dump
işlemini--no-owner
ve--no-acl
parametreleriyle yapıp aktarımdan sonra yetki ayarlarını elle yapabilirsiniz.
- Çözüm: Aktarım sonrası, ServBay PostgreSQL’e bağlanıp ihtiyaç duyduğunuz kullanıcıları ve rolleri aşağıdaki gibi oluşturup yetkileri verin:
- Karakter Seti/Bölgesel Ayar (Locale) Hataları: Kaynak ve hedef veritabanında karakter seti ve bölgesel (locale) ayarlar uyumsuzsa aktarımda hata veya veri bozulması meydana gelebilir.
- Çözüm: ServBay’de yeni veritabanı oluştururken kaynakla aynı karakter kodlaması ve locale seçimine dikkat edin. SQL komutuyla örnek:sqlBu ayarları kaynak sunucuya uygun şekilde değiştirin.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- Çözüm: ServBay’de yeni veritabanı oluştururken kaynakla aynı karakter kodlaması ve locale seçimine dikkat edin. SQL komutuyla örnek:
Sorun yaşarsanız, özellikle pg_restore
komutunun ayrıntılı çıktısını (-v
) dikkatlice inceleyin, genellikle sorunun nedeni doğrudan belirtilir.
Dikkat Edilecekler
- ServBay Socket Yolu: ServBay PostgreSQL bağlantıları socket dosyası
/Applications/ServBay/tmp
üzerinden yapılır. Tüm bağlantı komutlarında (psql
,pg_dump
,pg_restore
) kesinlikle-h /Applications/ServBay/tmp
kullanın. - Yetki sorunları: Komutu çalışan kullanıcı, dışa aktarılan dosyaya ve veritabanına yazma okuma hakkına sahip olmalı; PostgreSQL kullanıcısı (örn.
postgres
), yeni veritabanı oluşturma ve veri aktarma yetkilerine sahip olmalıdır. - Dosya boyutu: Büyük veritabanları için aktarım ve yükleme işlemi zaman alır ve disk alanı gerektirir. Sisteminizin yeterli kaynakta olduğuna emin olun.
- Şifre yönetimi: ServBay PostgreSQL’e bağlanmak için
postgres
kullanıcısı şifresi gerekir. Şifreyi güvenli şekilde saklayın.
Sıkça Sorulan Sorular (SSS)
S1: ServBay PostgreSQL postgres
kullanıcısı şifresini unuttum, ne yapabilirim?
C1: ServBay kontrol panelinden veya ServBay dokümantasyonundan postgres
kullanıcısının şifresini bulabilir veya sıfırlayabilirsiniz.
S2: ServBay PostgreSQL’e neden localhost
veya 127.0.0.1
ile bağlanamıyorum?
C2: ServBay’in PostgreSQL’i güvenlik için, yalnızca yerel socket dosyasıyla bağlantı kabul eder. TCP/IP bağlantısı gerekirse, ServBay’in PostgreSQL yapılandırmasını elden geçirmeniz gerekir (yerel geliştirme için genellikle önerilmez). Bağlanmak için daima -h /Applications/ServBay/tmp
kullanın.
S3: Aktarımda hata alıyorum, nasıl çözebilirim?
C3: pg_restore
komutunun çıktısında özellikle ayrıntılı modda (-v
ile) verilen hata mesajlarını dikkatlice inceleyin. Hatalar genellikle özel bir tablo, yetki, nesne veya uyumluluk sorunu ile ilgili ipucu verir. "Olası Uyumluluk Sorunları" bölümündeki çözümleri gözden geçirin.
S4: ServBay dışında, pgAdmin gibi başka bir veritabanı yönetim aracı ile aktarım yapabilir miyim?
C4: Evet, pgAdmin gibi yardımcı araçları kullanabilirsiniz. Bağlantı ayarlarında Host/socket path alanına /Applications/ServBay/tmp
girin, IP veya hostname dolgusunu kullanmayın. Ardından aracın sunduğu dışa aktarma/içe aktarma adımlarını takip edebilirsiniz.
Sonuç
Mevcut bir PostgreSQL veritabanını ServBay’deki varsayılan PostgreSQL’e aktarmak sık karşılaşılan bir işlemdir; standart pg_dump
ve pg_restore
komutları ile ServBay’in socket bağlantı yolunu (-h /Applications/ServBay/tmp
) doğru şekilde belirleyerek veri göçünü hızlı ve güvenli biçimde tamamlayabilirsiniz. Buradaki adımları uygulayıp olası uyumluluk sorunlarını göz önünde bulundurarak, ServBay yerel geliştirme ortamınızda dış veritabanınızla bire bir uyumlu bir çalışma altyapısı kurabilirsiniz. ServBay, geliştiriciler için entegrasyonu kolay bir platform sunarak veritabanı yönetimi ve göçünü daha basit hale getirir.