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_dumpvepg_restoregibi 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
postgresgibi 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_dumpkomutunu kullanın.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump1-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_restoreiç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.dump1Komutu ç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/tmpdizinindedir. Bağlanmak içinpsqlistemcisini kullanabilirsiniz.bashpsql -U postgres -h /Applications/ServBay/tmp postgres1-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
postgreskullanı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ıncapsqlkomut satırı ekranı açılır.Hedef Veritabanı Oluşturun:
psqlekranı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_servbayismini tercih ettiğiniz şekilde değiştirebilirsiniz. İşlem tamamlanınca\qile 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_restoreile 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/tmp1-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_servbay1Burada
mydatabase_servbayile kendi veritabanı adınızı kullanın. Şifre girip erişim sağlayın.Sorgu ile doğrulama yapın:
psqlkomut 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_nameyerine 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,pgcryptogibi) 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_dumpile 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 ekleyin1
2
3pg_dumpişlemini--no-ownerve--no-aclparametreleriyle 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/tmpkullanı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
postgreskullanı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.
