Mevcut Bir PostgreSQL'den ServBay'e Veri Aktarma
ServBay, geliştiriciler için tasarlanmış güçlü bir yerel web geliştirme ortamıdır; çoklu dil desteği, web sunucuları ve veritabanı sistemleri, özellikle PostgreSQL'i entegre olarak sunar. ServBay dışında çalışan bir PostgreSQL veritabanınız varsa ve verilerinizi ServBay'in kendi PostgreSQL örneğine taşımak istiyorsanız, bu rehber size ayrıntılı adımlar sunacaktır.
Bu içerikte standart PostgreSQL araçları olan pg_dump
ve pg_restore
ile, ServBay PostgreSQL’in soket dosyası yolunu belirterek veri aktarma işlemi anlatılacaktır. Böylece verilerinizi sorunsuz şekilde ServBay’e taşıyabilirsiniz.
Genel Bakış
Mevcut bir PostgreSQL veritabanını ServBay’e taşımak genellikle aşağıdaki temel adımları içerir:
- Kaynak PostgreSQL veritabanından verileri dışa aktarmak.
- ServBay'in entegre PostgreSQL’inde hedef veritabanını oluşturmak.
- Dışa aktarılan verileri ServBay’deki hedef veritabanına içe aktarmak.
- Aktarılan verilerin bütünlüğünü ve doğruluğunu kontrol etmek.
Ayrıca, ServBay’e özgü soket bağlantı yönteminin nasıl kullanılacağı detayıyla anlatılacaktır.
Kullanım Senaryoları
- Üretim veya test ortamındaki PostgreSQL veritabanını, geliştirme ve hata ayıklama için yerel ServBay ortamınıza kopyalamak.
- Bağımsız bir PostgreSQL kurulumundan verileri ServBay’e toplu olarak geçirmek.
- ServBay’de, dış veritabanının şeması ve verileriyle bire bir uyumlu yerel geliştirme kopyası oluşturmak.
Ön Koşullar
Veri aktarma işlemi öncesinde aşağıdaki koşulları sağladığınızdan emin olun:
- ServBay’in Kurulu ve Çalışıyor Olması: ServBay’in macOS üzerinde kurulmuş ve başlatılmış olması gerekir. Kurulu halde PostgreSQL ile gelir.
- ServBay’in Entegre PostgreSQL Servisinin Aktif Olması: ServBay kontrol panelinde PostgreSQL paketinin çalıştığından emin olun.
- Kaynak PostgreSQL’in Kurulu Olması: Erişim sağlanan çalışan bir kaynak PostgreSQL veritabanı örneği gereklidir.
- PostgreSQL İstemci Araçlarının Kurulu Olması: Sistemde
pg_dump
vepg_restore
gibi PostgreSQL komut satırı araçları bulunmalıdır. Genellikle PostgreSQL ile birlikte gelirler. - Veritabanı Erişim Yetkileri: Kaynak veritabanında dışa aktarma, ServBay’de yeni veritabanı oluşturma ve veri içe aktarma yetkileriniz olmalıdır (genellikle süper kullanıcı, örneğin
postgres
kullanıcısı).
Adım 1: Kaynak PostgreSQL'den Verilerin Dışa Aktarılması
İlk olarak kaynak veritabanı verilerini bir dosyaya aktarmalıyız. Bunun için pg_dump
aracı önerilir.
Terminali Açın: Terminal uygulamanızı başlatın.
Dışa Aktarma Komutunu Çalıştırın:
pg_dump
ile kaynak veritabanına bağlanın ve içerikleri belirlediğiniz bir dosyaya aktarı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 veritabanı için kullanıcı adınızı girin.-d your_source_database_name
: Dışa aktarılacak veritabanının adını girin.-F c
: Özel yedek formatını kullanır;pg_restore
ile esnek geri yükleme imkanı sağlar (tablo veya veri seçimi).-b
: Büyük nesne (blob) verisi dahil edilir.-v
: Ayrıntılı çıktı modu, işlem ilerlemesini gösterir.-f mydatabase_source.dump
: Dışa aktarılan dosyanın adını ve yolunu belirtir. Dilediğiniz isim ve dizin kullanılabilir, örn./path/to/your/directory/mydatabase_source.dump
.
Kaynak veritabanı ayarlarınıza göre gerekirse ana makine (
-h
) veya port (-p
) da ekleyebilirsiniz. Örneğin, veritabanı farklı bir porttayken:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1Komut sonrası, kullanıcı şifresini girmeniz gerekebilir.
Adım 2: ServBay’de Hedef Veritabanının Hazırlanması
Verileri içe aktarmadan önce, ServBay’in entegre PostgreSQL’inde boş bir hedef veritabanı oluşturmalısınız.
ServBay PostgreSQL’e Bağlanmak: ServBay’in PostgreSQL’i varsayılan olarak yerel soket dosyasından bağlantı kabul eder; bu soket genellikle
/Applications/ServBay/tmp
dizinindedir.psql
komut satırı aracıyla bu şekilde bağlanabilirsiniz.bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
: PostgreSQL’in varsayılan süper kullanıcı hesabı. ServBay’de de genellikle bu hesap kullanılır.-h /Applications/ServBay/tmp
: ServBay PostgreSQL bağlantısında en önemli parametredir.psql
, belirttiğiniz dizindeki soket üzerinden bağlanacak ve TCP/IP kullanılmayacak.postgres
: Yönetim amaçlı varsayılan veritabanı adı.
Bağlantı sağlandığında,
postgres
kullanıcısının şifresi istenebilir. Şifreyi bilmiyorsanız ServBay kontrol paneline ya da belgelere bakarak bulabilir veya sıfırlayabilirsiniz. Başarılı bağlantı sonrası,psql
komut satırı istemini göreceksiniz.Hedef Veritabanını Oluşturmak:
psql
isteminde, yeni veritabanınızı oluşturmak için bir SQL komutu çalıştırın. Kaynak veritabanınızla aynı adı kullanmanız önerilir, örneğinmydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1mydatabase_servbay
yerine tercih ettiğiniz veritabanı adını koyabilirsiniz. Oluşturma tamamlandığında\q
ile çıkabilirsiniz.
Adım 3: Verileri ServBay PostgreSQL'e Aktarmak
Şimdi, ilk adımda dışa aktardığınız .dump
dosyasını, pg_restore
aracıyla yeni oluşturduğunuz ServBay veritabanına aktaracağız.
Terminali Tekrar Açın: Daha önce kapattıysanız, terminali yeniden başlatın.
İçe Aktarma Komutunu Çalıştırın:
pg_restore
ile ServBay PostgreSQL’e bağlanıp veri aktarma işlemini başlatın.bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: ServBay PostgreSQL’e süper kullanıcı ile bağlanır.-d mydatabase_servbay
: İkinci adımda oluşturduğunuz hedef veritabanı adı.-v
: Ayrıntılı çıktı modu, hataları ve ilerlemeyi gösterir.mydatabase_source.dump
: İlk adımda oluşan dump dosyasının tam yol ve adı.-h /Applications/ServBay/tmp
: Yine tekrar edilmesi gerekir—soket dosyası üzerinden bağlantı sağlanır.
Komuttan sonra,
postgres
kullanıcısının şifresi istenir. Aktarım süresi dosyanızın büyüklüğüne ve veritabanı karmaşıklığına göre değişir.
Adım 4: Veri Aktarımını Doğrulama
Aktarım tamamlandığında, hedef veritabanına bağlanıp verilerinizin doğru şekilde aktarılıp aktarılmadığını kontrol etmeniz gerekir.
ServBay’deki Hedef Veritabanına Bağlanın:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1mydatabase_servbay
ile hedef veritabanı adınızı değiştirin. Şifreyi girince bağlanmış olacaksınız.Sorgularla Doğrulama Yapın:
psql
isteminde aşağıdaki gibi sorgular çalıştırarak veri durumunu inceleyin.- Tüm tabloları listele:
\dt
- Belirli bir tablonun ilk satırlarını görüntüle:sql
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
kısmını gerçek bir tablo ismiyle değiştirin. - Satır sayısını kontrol edin:sql
SELECT COUNT(*) FROM your_table_name;
1
Bu sorgularla tablo yapılarını, içerikleri ve satır sayılarını temel olarak doğrulayabilirsiniz.
- Tüm tabloları listele:
Olası Uyumluluk Sorunlarını Giderme
Genellikle farklı PostgreSQL sürümleri arasında iyi bir uyumluluk olsa da, sürüm farklılıkları veya özelleştirilmiş yapılandırmalarda sorunlar yaşanabilir.
- Sürüm Farklılıkları: Kaynak ve hedef PostgreSQL sürümleri arasında çok fark varsa, bazı özellikler, sözdizimi veya sistem katalogları değişmiş olabilir.
- Çözüm: PostgreSQL resmi dökümantasyonunda sürümler arası değişiklikleri kontrol edin. Gerektiğinde dışa aktarılan SQL dosyasını düzenleyin veya import işlemi öncesi/sonrası özel scriptler ile müdahale edin.
- Eklenti ve Modül Sorunları: Kaynak veritabanında kullanılan bazı eklentiler (ör.
uuid-ossp
,pgcrypto
) veya özel fonksiyonlar, ServBay’in PostgreSQL’inde yüklü olmayabilir veya uyumsuz olabilir.- Çözüm: İçeri aktarım işleminden önce veya sonra ServBay hedef veritabanına bağlanarak gerekli eklentileri kurun:sqlEğer eklenti sürümü uyumsuzsa alternatif çözümler bulun veya ServBay’in PostgreSQL’i yükseltilebiliyorsa güncelleyin.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- Çözüm: İçeri aktarım işleminden önce veya sonra ServBay hedef veritabanına bağlanarak gerekli eklentileri kurun:
- Kullanıcılar ve Yetkilendirme:
pg_dump
standart olarak kullanıcı, rol ve izin bilgilerini de dışa aktarır; fakat bu objeler ServBay ortamında yeni baştan oluşturulmalıdır, özellikle kaynak kullanıcı başka ise.- Çözüm: İçeri aktarımdan sonra, ServBay PostgreSQL’e bağlanarak kaynakta kullanılan kullanıcı ve rolleri manuel oluşturun ve uygun hakları verin.sqlAyrıca,
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Ekstra izinler gerekiyorsa ayarlayın
1
2
3pg_dump
sırasında--no-owner
ve--no-acl
parametrelerini kullanarak sahiplik ve izinleri hariç tutup, aktarım sonrası elle yetki dağıtabilirsiniz.
- Çözüm: İçeri aktarımdan sonra, ServBay PostgreSQL’e bağlanarak kaynakta kullanılan kullanıcı ve rolleri manuel oluşturun ve uygun hakları verin.
- Karakter Seti veya Bölgesel Ayarlar (Locale) Sorunu: Kaynak ve hedef veritabanlarının karakter kodlaması veya locale ayarları farklıysa, aktarımda hata veya veri bozulması oluşabilir.
- Çözüm: ServBay’de hedef veritabanı oluştururken kaynak ile aynı karakter kodlama ve locale’i belirtin:sqlKendi kaynak ayarlarınıza göre bu parametreleri uyarlayın.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- Çözüm: ServBay’de hedef veritabanı oluştururken kaynak ile aynı karakter kodlama ve locale’i belirtin:
Herhangi bir hata alırsanız, pg_restore
komutunun ayrıntılı çıktısını dikkatle inceleyin (-v
bayrağı ile). Böylece hata sebebini kolayca teşhis edebilirsiniz.
Dikkat Edilmesi Gerekenler
- ServBay Soket Yolu: ServBay PostgreSQL varsayılan olarak
/Applications/ServBay/tmp
soket dosyası ile bağlantı sağlar.psql
,pg_dump
,pg_restore
gibi tüm bağlantılarda mutlaka-h /Applications/ServBay/tmp
kullanın. - Yetki Sorunları: Komutları uygulayan kullanıcının dışa aktarılan dosyada okuma/yazma yetkisi ve PostgreSQL’de (örn.
postgres
kullanıcısı olarak) veritabanı oluşturma ve veri aktarımı yetkisi olmalı. - Dosya Boyutu: Büyük veritabanlarında dışa/içe aktarma işlemleri zaman alır ve yüksek disk alanı tüketebilir, sistem kaynaklarınız yeterli olmalı.
- Şifre Yönetimi: ServBay PostgreSQL’e bağlanmak için
postgres
şifreniz gerekli; lütfen güvenle saklayın.
Sıkça Sorulan Sorular (SSS)
S1: ServBay PostgreSQL postgres
kullanıcısının şifresini unuttum, ne yapmalıyım?
C1: Şifreyi ServBay kontrol paneli üzerinden veya dökümantasyonda yer alan yöntemlerle bulabilir veya sıfırlayabilirsiniz.
S2: Neden localhost
veya 127.0.0.1
ile ServBay PostgreSQL’e bağlanamıyorum?
C2: ServBay’in PostgreSQL’i güvenlik amacıyla varsayılan olarak yalnızca soket dosyasından bağlantı kabul eder. TCP/IP bağlantısı gerekiyorsa ilgili PostgreSQL yapılandırma dosyalarını değiştirmeniz gerekir (geliştirme ortamında önerilmez). Bağlantı için standart yöntem, -h /Applications/ServBay/tmp
kullanmaktır.
S3: Aktarım sırasında hata alıyorum, nasıl çözebilirim?
C3: Özellikle -v
ile çalıştırılan pg_restore
komutunun çıktısını detaylıca inceleyin. Hata mesajı çoğunlukla problemi gösterir: sözdizimi hataları, yetki eksikliği, nesne çakışması veya eksikliği gibi. Hata tipine göre “Olası Uyumluluk Sorunlarını Giderme” bölümüne başvurun.
S4: ServBay ile başka veritabanı araçlarını (örn. pgAdmin) kullanarak aktarım yapabilir miyim?
C4: Evet, pgAdmin gibi grafiksel veritabanı yönetimi araçlarını kullanabilirsiniz. Bağlantı tanımlarında Host/soket yolu olarak /Applications/ServBay/tmp
girin; IP adresi veya ana makine adı yazmayın. Ardından aracın içe aktarma/yedekten geri yükleme fonksiyonunu kullanarak .dump
dosyasını aktarabilirsiniz.
Özet
Mevcut bir PostgreSQL veritabanını ServBay entegre PostgreSQL servisine aktarmak, standart pg_dump
ve pg_restore
araçlarının yanı sıra ServBay’in soket yolunu doğru belirlemekle kolayca tamamlanabilir. Buradaki adımları takip ederek ve olası uyumluluk sorunlarına karşı dikkatli olarak, ServBay yerel geliştirme ortamınızda harici veritabanınızın bire bir eşini rahatlıkla kurabilirsiniz. ServBay, geliştiriciler için entegre ve kolay bir ortam sunarak veritabanı yönetimini ve taşımayı oldukça basitleştirir.