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 -Fpolandı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:

  1. Azure portalına erişme: İlk olarak Azure portalına gidin ve Bağlan dikey penceresini seçin.

    Azure portalında Bağlan dikey penceresinin yerleşimini gösteren ekran görüntüsü.

  2. 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.

    Belirli bir veritabanının seçilebileceği açılan listeyi gösteren ekran görüntüsü.

  3. 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.

    İki olası döküm yöntemini gösteren ekran görüntüsü.

  4. Kopyalama ve yapıştırma komutları: Portal size kullanıma pg_dump hazır ve psql veya pg_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 psqlve 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 , psqlpg_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 -rgerekir. 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 myuserkullanı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ı mydemoserverbir sunucunuz varsa, adlı myuserbir 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_admingibi azure_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 replicationile CREATE ROLE replication başlayan , azure_pg_admin, azuresu, satırlarını içeren azure_superusersatı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ı mydemoservermyuser bir kullanıcınız ve adlı testdbbir 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 myuserkullanı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ı mydemoserverbir sunucunuz varsa, adlı myuserbir 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 myuserkullanı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:

  1. 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ı mydemoserverbir sunucunuz varsa, adlı myuser bir kullanıcı ve oluşturmak istediğiniz yeni veritabanı ise testdb_copyaş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 myuserkullanın myuser@mydemoserver.

  2. 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_copybir 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ı mydemoservermyuser bir kullanıcınız ve adlı testdb_copyyeni 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