Döküm ve geri yükleme kullanarak PostgreSQL veritabanınızı geçirme
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu
PostgreSQL veritabanını döküm dosyasına ayıklamak için pg_dump kullanabilirsiniz. Veritabanını geri yükleme yöntemi, seçtiğiniz döküm biçimine bağlıdır. Dökümünüzün düz biçimle alınması (varsayılan -Fp
olandır, bu nedenle belirli bir seçeneğin belirtilmesi gerekmez) tek geri yükleme seçeneği, düz metin dosyası çıkardığından psql kullanmaktır. Diğer üç döküm yöntemi için: özel, dizin ve tar, pg_restore kullanılmalıdır.
Önemli
Bu makalede sağlanan yönergeler ve komutlar bash terminallerinde yürütülecek şekilde tasarlanmıştır. Buna Linux için Windows Alt Sistemi (WSL), Azure Cloud Shell ve bash ile uyumlu diğer arabirimler gibi ortamlar dahildir. Lütfen adımları izlemek ve bu kılavuzda ayrıntılı olarak belirtilen komutları yürütmek için bash terminali kullandığınızdan emin olun. Farklı türde bir terminal veya kabuk ortamı kullanmak, komut davranışında farklılıklara neden olabilir ve istenen sonuçları üretmeyebilir.
Bu makalede düz (varsayılan) ve dizin biçimlerine odaklanacağız. Dizin biçimi, özellikle büyük veritabanları için verimliliği önemli ölçüde artırabilen işlem için birden çok çekirdek kullanmanıza olanak tanıdığından kullanışlıdır.
Azure portalı, sunucunuza uyarlanmış önceden yapılandırılmış komutlar sunarak ve kullanıcı verilerinizle değiştirilen değerlerle birlikte Bağlan dikey penceresi aracılığıyla bu işlemi kolaylaştırır. Bağlan dikey penceresinin Tek Sunucu için değil yalnızca PostgreSQL için Azure Veritabanı - Esnek Sunucu için kullanılabilir olduğunu unutmayın. Bu özelliği şu şekilde kullanabilirsiniz:
Azure portalına erişme: İlk olarak Azure portalına gidin ve Bağlan dikey penceresini seçin.
Veritabanınızı seçin: Bağlan dikey penceresinde veritabanlarınızın açılan listesini bulursunuz. Döküm gerçekleştirmek istediğiniz veritabanını seçin.
Uygun yöntemi seçin: Veritabanınızın boyutuna bağlı olarak iki yöntem arasından seçim yapabilirsiniz:
pg_dump
&psql
- tekil metin dosyası kullanma: Daha küçük veritabanları için idealdir, bu seçenek döküm ve geri yükleme işlemi için tek bir metin dosyası kullanır.pg_dump
&pg_restore
- birden çok çekirdek kullanma: Daha büyük veritabanları için bu yöntem döküm ve geri yükleme işlemini işlemek için birden çok çekirdek kullandığından daha verimlidir.
Kopyalama ve yapıştırma komutları: Portal size kullanıma
pg_dump
hazır vepsql
veyapg_restore
komutlar sağlar. Bu komutlar, seçtiğiniz sunucu ve veritabanına göre önceden değiştirilen değerlerle birlikte gelir. Bu komutları kopyalayıp yapıştırın.
Önkoşullar
Tek Sunucu kullanıyorsanız veya Esnek Sunucu portalına erişiminiz yoksa bu belge sayfasını okuyun. Portaldaki Esnek Sunucu için Bağlan dikey penceresinde sunulana benzer bilgiler içerir.
Not
pg_dump
, pg_restore
psql
ve pg_dumpall
yardımcı programlarının tümü libpq kullandığından, sunduğu desteklenen ortam değişkenlerinden herhangi birini kullanabilir veya bu komutlardan herhangi birini her çalıştırdığınızda parola istenmesini önlemek için parola dosyasını kullanabilirsiniz.
Bu nasıl yapılır kılavuzunda adım adım ilerleyebilmek için şunları yapmanız gerekir:
- Erişime izin vermek için güvenlik duvarı kuralları da dahil olmak üzere bir PostgreSQL için Azure Veritabanı sunucusu.
- pg_dump, psql, pg_restore ve pg_dumpall rolleri ve izinleri, komut satırı yardımcı programları yüklü olarak geçirmek istemeniz durumunda.
- Döküm için konuma karar verin: Dökümü gerçekleştirmek istediğiniz yeri seçin. Ayrı bir VM, cloud shell (komut satırı yardımcı programlarının zaten yüklü olduğu ancak uygun sürümde olmayabileceği) gibi çeşitli konumlardan yapılabilir, bu nedenle sürümü her zaman kullanarak, örneğin ,
psql --version
) veya kendi dizüstü bilgisayarınızla kontrol edin. PostgreSQL sunucusu ile döküm veya geri yüklemeyi çalıştırdığınız konum arasındaki mesafeyi ve gecikme süresini her zaman aklınızda bulundurun.
Önemli
Verileri dışarı aktardığınız veya içeri aktardığınız veritabanı sunucusundan aynı ana sürüme veya daha yüksek bir ana sürüme sahip olan , psql
pg_restore
pg_dumpall
ve yardımcı programlarını kullanmak pg_dump
önemlidir. Bunun başarısız olması veri geçişinin başarısız olmasıyla sonuçlanabilir. Hedef sunucunuz kaynak sunucudan daha yüksek bir ana sürüme sahipse, aynı ana sürüm veya hedef sunucudan daha yüksek olan yardımcı programları kullanın.
Not
Tek seferde yalnızca bir veritabanını dışarı aktarabileceğini bilmeniz pg_dump
önemlidir. Bu sınırlama, tekil bir dosya veya birden çok çekirdek kullanarak seçtiğiniz yöntemden bağımsız olarak geçerlidir.
Ile kullanıcı ve rollerin dökümünü alma pg_dumpall -r
pg_dump
Bir PostgreSQL veritabanını döküm dosyasına ayıklamak için kullanılır. Ancak postgreSQL ortamındaki genel nesneler olarak kabul edildiği için rollerin veya kullanıcı tanımlarının dökümünü almadığını anlamak pg_dump
çok önemlidir. Kullanıcılar ve roller de dahil olmak üzere kapsamlı bir geçiş için kullanmanız pg_dumpall -r
gerekir.
Bu komut, PostgreSQL ortamınızdaki tüm rol ve kullanıcı bilgilerini yakalamanıza olanak tanır. Aynı sunucudaki veritabanları içinde geçiş gerçekleştiriyorsanız, bu adımı atlayıp Yeni veritabanı oluşturma bölümüne geçmekte çekinmeyin.
pg_dumpall -r -h <server name> -U <user name> > roles.sql
Örneğin, adlı bir sunucunuz ve adlı mydemoserver
myuser
bir kullanıcınız varsa aşağıdaki komutu çalıştırın:
pg_dumpall -r -h mydemoserver.postgres.database.azure.com -U myuser > roles.sql
Tek Sunucu kullanıyorsanız kullanıcı adınız sunucu adı bileşenini içerir. Bu nedenle yerine myuser
kullanın myuser@mydemoserver
.
Esnek Sunucudan Rol Dökümü Oluşturma
Esnek Sunucu ortamında gelişmiş güvenlik önlemleri, kullanıcıların rol parolalarının depolandığı pg_authid tablosuna erişimi olmadığı anlamına gelir. Bu kısıtlama, standart pg_dumpall -r
komut parolalar için bu tabloya erişmeye çalıştığından ve izin eksikliği nedeniyle başarısız olduğundan rol dökümünü nasıl gerçekleştirebileceğinizi etkiler.
Esnek Sunucudan rollerin dökümünü alırken, komutunuzda pg_dumpall
bu --no-role-passwords
seçeneğin eklenmesi çok önemlidir. Bu seçenek, güvenlik kısıtlamaları nedeniyle okuyamadığı tabloya erişmeye pg_authid
çalışmasını engellerpg_dumpall
.
Esnek Sunucudan rollerin dökümünü başarıyla almak için aşağıdaki komutu kullanın:
pg_dumpall -r --no-role-passwords -h <server name> -U <user name> > roles.sql
Örneğin, adlı mydemoserver
bir sunucunuz varsa, adlı myuser
bir kullanıcı aşağıdaki komutu çalıştırın:
pg_dumpall -r --no-role-passwords -h mydemoserver.postgres.database.azure.com -U myuser > roles.sql
Rol dökümünü temizleme
Çıkış dosyası roles.sql
geçirildiğinde, yeni ortamda geçerli olmayan veya izin verilen bazı roller ve öznitelikler bulunabilir. Dikkate almanız gerekenler şunlardır:
Yalnızca süper kullanıcılar tarafından ayarlanabilen öznitelikler kaldırılıyor: Süper kullanıcı ayrıcalıklarına sahip olmadığınız bir ortama geçiş gerçekleştiriyorsanız ve gibi
NOSUPERUSER
NOBYPASSRLS
öznitelikleri rol döküminden kaldırın.Hizmete özgü kullanıcıları dışlama: veya
azure_pg_admin
gibiazure_superuser
Tek Sunucu hizmeti kullanıcılarını hariç tutun. Bunlar hizmete özeldir ve yeni ortamda otomatik olarak oluşturulur.
Rol dökümünüzü temizlemek için aşağıdaki sed
komutu kullanın:
sed -i '/azure_superuser/d; /azure_pg_admin/d; /azuresu/d; /^CREATE ROLE replication/d; /^ALTER ROLE replication/d; /^ALTER ROLE/ {s/NOSUPERUSER//; s/NOBYPASSRLS//;}' roles.sql
Bu komut, ve ALTER ROLE replication
ile CREATE ROLE replication
başlayan , azure_pg_admin
, azuresu
, satırlarını içeren azure_superuser
satırları siler ve ve NOBYPASSRLS
özniteliklerini deyimlerinden ALTER ROLE
kaldırırNOSUPERUSER
.
Yüklenecek verileri içeren bir döküm dosyası oluşturma
Mevcut PostgreSQL veritabanınızı şirket içinde veya VM'de sql betik dosyasına aktarmak için, var olan ortamınızda aşağıdaki komutu çalıştırın:
pg_dump <database name> -h <server name> -U <user name> > <database name>_dump.sql
Örneğin, adlı bir sunucunuz ve adlı mydemoserver
myuser
bir kullanıcınız ve adlı testdb
bir veritabanınız varsa aşağıdaki komutu çalıştırın:
pg_dump testdb -h mydemoserver.postgres.database.azure.com -U myuser > testdb_dump.sql
Tek Sunucu kullanıyorsanız kullanıcı adınız sunucu adı bileşenini içerir. Bu nedenle yerine myuser
kullanın myuser@mydemoserver
.
Verileri hedef veritabanına geri yükleme
Rolleri ve kullanıcıları geri yükleme
Veritabanı nesnelerinizi geri yüklemeden önce rolleri düzgün bir şekilde boşaltıp temizlediğinizden emin olun. Aynı sunucudaki veritabanları içinde geçiş gerçekleştiriyorsanız, rollerin dökümünü almak ve geri yüklemek gerekli olmayabilir. Ancak, farklı sunucular veya ortamlar arasında geçişler için bu adım çok önemlidir.
Rolleri ve kullanıcıları hedef veritabanına geri yüklemek için aşağıdaki komutu kullanın:
psql -f roles.sql -h <server_name> -U <user_name>
değerini hedef sunucunuzun adıyla ve <user_name>
kullanıcı adınız ile değiştirin<server_name>
. Bu komut, dosyada psql
roles.sql
yer alan SQL komutlarını yürütmek için yardımcı programını kullanarak rolleri ve kullanıcıları hedef veritabanınıza etkili bir şekilde geri yükler.
Örneğin, adlı mydemoserver
bir sunucunuz varsa, adlı myuser
bir kullanıcı aşağıdaki komutu çalıştırın:
psql -f roles.sql -h mydemoserver.postgres.database.azure.com -U myuser
Tek Sunucu kullanıyorsanız kullanıcı adınız sunucu adı bileşenini içerir. Bu nedenle yerine myuser
kullanın myuser@mydemoserver
.
Not
Geçiş yaptığınız Tek Sunucu veya şirket içi sunucuda aynı adlara sahip kullanıcılarınız varsa ve hedef sunucunuz varsa, bu geri yükleme işleminin bu rollerin parolalarını değiştirebileceğini unutmayın. Sonuç olarak, yürütmeniz gereken sonraki tüm komutlar güncelleştirilmiş parolaları gerektirebilir. Esnek Sunucu gelişmiş güvenlik önlemleri nedeniyle kullanıcılar için parola dökümü yapılmasına izin vermediğinden, kaynak sunucunuz Esnek Sunucu ise bu geçerli değildir.
Yeni veritabanı oluşturma
Veritabanınızı geri yüklemeden önce yeni, boş bir veritabanı oluşturmanız gerekebilir. Bunu yapmak için, kullandığınız kullanıcının izni olmalıdır CREATEDB
. Yaygın olarak kullanılan iki yöntem şunlardır:
Yardımcı programı kullanma
createdb
Programcreatedb
, PostgreSQL'de oturum açmaya veya işletim sistemi ortamından ayrılmaya gerek kalmadan doğrudan bash komut satırından veritabanı oluşturmaya olanak tanır. Örneğin:createdb <new database name> -h <server name> -U <user name>
Örneğin, adlı
mydemoserver
bir sunucunuz varsa, adlımyuser
bir kullanıcı ve oluşturmak istediğiniz yeni veritabanı isetestdb_copy
aşağıdaki komutu çalıştırın:createdb testdb_copy -h mydemoserver.postgres.database.azure.com -U myuser
Tek Sunucu kullanıyorsanız kullanıcı adınız sunucu adı bileşenini içerir. Bu nedenle yerine
myuser
kullanınmyuser@mydemoserver
.SQL komutunu kullanma SQL komutunu kullanarak veritabanı oluşturmak için PostgreSQL sunucunuza bir komut satırı arabirimi veya veritabanı yönetim aracı aracılığıyla bağlanmanız gerekir. Bağlandıktan sonra, yeni bir veritabanı oluşturmak için aşağıdaki SQL komutunu kullanabilirsiniz:
CREATE DATABASE <new database name>;
değerini yeni veritabanınıza vermek istediğiniz adla değiştirin <new database name>
. Örneğin, adlı testdb_copy
bir veritabanı oluşturmak için komutu şöyle olacaktır:
CREATE DATABASE testdb_copy;
Döküm geri yükleniyor
Hedef veritabanını oluşturduktan sonra döküm dosyasından verileri bu veritabanına geri yükleyebilirsiniz. Geri yükleme sırasında, bir dosyaya hataları günlüğe errors.log
kaydedip geri yükleme tamamlandıktan sonra hataların içeriğini denetleyin.
psql -f <database name>_dump.sql <new database name> -h <server name> -U <user name> 2> errors.log
Örneğin, adlı bir sunucunuz, adlı mydemoserver
myuser
bir kullanıcınız ve adlı testdb_copy
yeni bir veritabanınız varsa aşağıdaki komutu çalıştırın:
psql -f testdb_dump.sql testdb_copy -h mydemoserver.postgres.database.azure.com -U myuser 2> errors.log
Geri yükleme sonrası denetim
Geri yükleme işlemi tamamlandıktan sonra, oluşan hatalar için dosyayı gözden geçirmek errors.log
önemlidir. Bu adım, geri yüklenen verilerin bütünlüğünü ve eksiksizliğini sağlamak için çok önemlidir. Veritabanınızın güvenilirliğini korumak için günlük dosyasında bulunan sorunları giderin.
Geçiş işlemini iyileştirme
Büyük veritabanlarıyla çalışırken döküm ve geri yükleme işlemi uzun olabilir ve verimlilik ve güvenilirlik sağlamak için iyileştirme gerektirebilir. Bu işlemlerin performansını etkileyebilecek çeşitli faktörlerin farkında olmak ve bunları iyileştirmek için adımlar atmak önemlidir.
Döküm ve geri yükleme işlemini iyileştirme hakkında ayrıntılı yönergeler için pg_dump ve pg_restore için en iyi yöntemler makalesine bakın. Bu kaynak, büyük veritabanlarını işlemek için yararlı olabilecek kapsamlı bilgiler ve stratejiler sağlar.
Sonraki adımlar
- pg_dump ve pg_restore için en iyi yöntemler.
- Veritabanlarını PostgreSQL için Azure Veritabanı geçirme hakkında daha fazla bilgi için bkz. Veritabanı Geçiş Kılavuzu.