Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde belirli uzantıları veya modülleri kullanırken dikkat etmeniz gereken bazı özel noktalar açıklanmaktadır.
Uzantılarla ilgili genel dikkat edilmesi gerekenler
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde bir uzantı kullanmak için şunları yapın:
-
Uzantıya izin ver. Uzantıya izin verilmiyorsa
CREATE EXTENSION,ALTER EXTENSION,DROP EXTENSIONveyaCOMMENT ON EXTENSIONyürütme girişimleri, başvurulan uzantıya izin verilmediğini belirten bir hatayla başarısız olur. - Uzantı, paylaşılan belleği ayırmayı ve bunlara erişmeyi gerektiren bazı paylaşılan ikili kitaplıklar dağıtıyorsa ve sunucu başlatıldığında yüklenmesi gerekiyorsa, yük kitaplıklarında sağlanan yönergeleri de izlemeniz gerekir.
- Uzantıyla dağıtılan SQL nesnelerini dağıtmak istediğiniz veritabanlarında uzantı oluşturun.
- Uzantıyı kaldırın. Veritabanında bir komutu çalıştırarak, bu uzantı tarafından dağıtılan tüm SQL nesnelerini kaldırmak istediğinizde.
- Uzantıları güncelleştirerek, zaten yüklü olan bir uzantı tarafından dağıtılan tüm SQL yapıtlarını en yeni sürümüne güncelleştirin.
- Yüklü uzantıları ve bunların karşılık gelen sürümlerini görüntüleyin.
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde , CREATE EXTENSIONALTER EXTENSION veya DROP EXTENSION komutlarını yürütürken COMMENT ON EXTENSIONherhangi bir hata alırsanız olası hataların listesine bakın ve bu hataların her birinin nedeni ne olabilir?
Modüllerle ilgili genel konular
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde bir modülü kullanmak için, bunu yalnızca shared_preload_libraries açıklandığı gibi sunucu parametresine eklemeniz gerekir.
Modüllerin izin verilenler listesine alınması gerekmez. Bu, uzantılar için özel bir gereksinimdir.
Dikkat edilmesi gereken belirli noktalara sahip uzantılar
Aşağıdaki liste, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde kullanıldığında dikkat edilmesi gereken tüm desteklenen uzantıları numaralandırır:
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_prewarmpg_repackpg_stat_statementspgcryptopostgres_fdwpgstattuple
AGE
Apache AGE uzantısı, PostgreSQL için Azure Veritabanı tarafından desteklenen postgreSQL için bir grafik uzantısıdır. Graf veritabanı işlevleri, açık şifreleme sorgusu desteği ve PostgreSQL'de depolanan grafik verileri üzerinde karmaşık sorgular yürütme olanağı sağlar. 'Apache AGE', Apache Lisansı 2.0 altında yayımlanan açık kaynaklı bir projedir.
AGE'yi yükleme
AGE kullanmak için, işlevselliğini kullanmayı planladığınız veritabanında uzantının 'allowlist' edildiğinden, kütüphanesinin yüklendiğinden ve uzantının kurulduğundan emin olun.
dblink
Uzantı, dblink bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden, aynı sunucudaki başka bir veritabanına veya başka bir esnek sunucu örneğine bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı, herhangi bir PostgreSQL sunucusuna hem gelen hem de giden bağlantıları destekler. Gönderen sunucunun alıcı sunucuya giden bağlantılara izin verebilmesi gerekir. Benzer şekilde, alıcı sunucunun gönderen sunucudan bağlantılara izin vermesi gerekir.
Bu uzantıyı kullanmayı planlıyorsanız sunucularınızı sanal ağ tümleştirmesi ile dağıtmanızı öneririz. Varsayılan olarak, sanal ağ tümleştirmesi sanal ağdaki sunucular arasında bağlantılara izin verir. Erişimi özelleştirmek için sanal ağ güvenlik gruplarını kullanmayı da seçebilirsiniz.
pg_buffercache
Uzantı, pg_buffercacheshared_buffers içeriğini incelemek için kullanılabilir.
Bu uzantıyı kullanarak, belirli bir ilişkinin önbelleğe alınıp alınmadığını anlayabilirsiniz (içindeshared_buffers). Bu uzantı, performans sorunlarını (önbelleğe almayla ilgili performans sorunları) gidermenize yardımcı olabilir.
Bu uzantı PostgreSQL'in temel yüklemesiyle tümleştirilmiştir ve kolayca yüklenebilir.
CREATE EXTENSION pg_buffercache;
pg_cron
Uzantı pg_cron , veritabanı içinde uzantı olarak çalışan postgreSQL için basit, cron tabanlı bir iş zamanlayıcıdır. Uzantı, pg_cron PostgreSQL veritabanında zamanlanmış bakım görevlerini çalıştırabilir. Örneğin, bir veritabanı tablosunu periyodik olarak vakumlayabilir veya eski veri görevlerini kaldırabilirsiniz.
Uzantı pg_cron birden çok işi paralel olarak çalıştırabilir, ancak aynı anda işin en fazla bir örneğini çalıştırır. İkinci çalışmanın, birinci çalıştırma tamamlanmadan başlaması gerekiyorsa, ikinci çalışma kuyruğa alınır ve birinci çalıştırma biter bitmez başlatılır. Bu şekilde, işlerin planlandığı sayıda çalışmasını ve aynı anda birden fazla kez çalışmamasını sağlar.
Ayarlandığı değer shared_preload_libraries, pg_cron içerdiğinden emin olun. Bu uzantı, CREATE EXTENSION komutunun yürütülmesi sonucunda kitaplığın yüklenmesini desteklemez. Uzantı eklenmediyse veya eklendikten sonra sunucu shared_preload_libraries yeniden başlatılmadıysa, CREATE EXTENSION'ı çalıştırma girişimi, metninde pg_cron can only be loaded via shared_preload_libraries ifadesi olan ve ipucu Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf olan bir hatayla sonuçlanır.
kullanmak pg_cron için, sunucu başlatıldığında paylaşılan kitaplığını yüklediğinizden, izinli listede olduğundan ve oluşturduğu SQL yapıtlarını kullanarak işlevselliğiyle etkileşim kurmak istediğiniz herhangi bir veritabanına yüklendiğinden emin olun.
Examples
Eski verileri Cumartesi günü saat 03:30'da (GMT) silmek için.
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);Varsayılan veritabanı
postgres'da vakumu her gün saat 10:00'da (GMT) çalıştırmak için.SELECT cron.schedule('0 10 * * *', 'VACUUM');pg_cron'den tüm görevleri zamanlamadan çıkarmak.SELECT cron.unschedule(jobid) FROM cron.job;pg_cronile şu anda zamanlanmış tüm işleri görmek için.SELECT * FROM cron.job;Vakum işlemini her gün saat 10:00'da (GMT) veritabanı
test croniçindeki rol hesabıazure_pg_adminaltında çalıştırmak için.SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
Diğer örnekler
pg_cron Sürüm 1.4'ten itibaren, cron.schedule_in_database ve cron.alter_job işlevlerini kullanarak işinizi belirli bir veritabanında zamanlayabilir ve mevcut bir zamanlamayı güncelleyebilirsiniz.
cron_schedule_in_database işlevi, kullanıcı adını isteğe bağlı bir parametre olarak almaya izin verir. Kullanıcı adını null olmayan bir değere ayarlamak için PostgreSQL süper kullanıcı ayrıcalığı gerekir ve PostgreSQL için Azure Veritabanı esnek sunucu örneği için desteklenmez. Önceki örneklerde, bu işlevin, isteğe bağlı bir kullanıcı adı parametresi atlanmış veya null olarak ayarlanmış şekilde çalıştırılması gösterilmektedir; bu durumda, işi zamanlayan kullanıcının bağlamında çalışır ve kullanıcının azure_pg_admin rol ayrıcalıklarına sahip olması gerekir.
DbName veritabanındaki eski verileri Cumartesi günü saat 03:30'da (GMT) silmek için.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');Mevcut zamanlamada veritabanı adını güncelleştirmek veya değiştirmek için
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
Uzantı, pg_hint_plan SQL açıklamalarında "ipuçları" olarak adlandırılan şu şekilde postgreSQL yürütme planlarını ayarlamayı mümkün kılar:
/*+ SeqScan(a) */
Uzantı, pg_hint_plan hedef SQL deyimiyle verilen özel formun açıklamasında ipucu tümceciklerini okur. Belirli bir form "/*+" karakter dizisiyle başlar ve "*/" ile biter. İpucu tümcecikleri, ipucu adlarından ve parantez içine alınmış ve boşluklarla sınırlandırılmış aşağıdaki parametrelerden oluşur. Okunabilirliği artırmak için yeni satırlar, her ipucu tümceciğini sınırlamak amacıyla kullanılabilir.
Example:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts an ON b.bid = a.bid
ORDER BY a.aid;
Önceki örnek, planlayıcının seqscan sonuçlarını, a tablosuyla birleştirip b olarak hashjoin kullanmasına neden olur.
pg_hint_plan uzantısını kullanmak için, uzantıyı izin listesine eklediğinizden, kütüphanesini yüklediğinizden ve işlevselliğini kullanmayı planladığınız veritabanına yüklediğinizden emin olun.
pg_prewarm
Uzantı, pg_prewarm ilişkisel verileri önbelleğe yükler. Önbelleklerinizi önceden hazırlamanız, sorgularınızın yeniden başlatma sonrasında ilk çalıştırmalarında daha iyi yanıt sürelerine sahip olduğu anlamına gelir. PostgreSQL için otomatik uyarı işlevselliği şu anda Azure Veritabanı'nda kullanılamaz.
pg_repack
Uzantının pg_repack ilk kullanıcıları genellikle şu soruyu sorar: pg_repack bir uzantı mı yoksa psql veya pg_dump gibi istemci tarafı yürütülebilir bir dosya mı?
pg_repack aslında ikisi de. pg_repack/lib , oluşturduğu şema ve SQL yapıtları ve bu işlevlerden birkaçının kodunu uygulayan C kitaplığı dahil olmak üzere uzantının koduna sahiptir.
Öte yandan , pg_repack/bin , uzantıda uygulanan programlama öğeleriyle nasıl etkileşim kuracaklarını bilen istemci uygulamasının kodunu içerir. Bu istemci uygulaması, sunucu tarafı uzantısının ortaya çıkardığı farklı arabirimlerle etkileşim kurmanın karmaşıklığını kolaylaştırmayı amaçlar. Kullanıcıya anlaşılması daha kolay olan bazı komut satırı seçenekleri sunar. İstemci uygulaması, işaret edildiği veritabanında oluşturulan uzantı olmadan işe yaramaz. Kendi başına sunucu tarafı uzantısı tamamen işlevsel olacaktır, ancak kullanıcının karmaşık bir etkileşim desenini anlamasını gerektirir. Bu düzen, uzantı tarafından uygulanan işlevlere giriş olarak kullanılan verileri almak için sorguların yürütülmesinden vb. oluşur.
Şema yeniden paketleme için izin reddedildi
Şu anda, bu uzantı tarafından oluşturulan yeniden paketleme şemasına izinler verdiğimiz için, yalnızca pg_repack işlevselliğini azure_pg_admin bağlamından çalıştırmayı destekliyoruz.
Tablonun sahibi azure_pg_admin değilse ve pg_repack çalıştırmaya çalışırsa aşağıdaki hatayı aldığını fark edebilirsiniz:
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
Bu hatayı önlemek için bağlamından azure_pg_adminpg_repack çalıştırın.
pg_stat_statements
pg_stat_statements uzantısı, veritabanınızda çalışan tüm sorguların bir görünümünü sağlar. Bu bilgiler, üretim sistemindeki sorgu iş yükü performansınızı anlamak için kullanışlıdır.
pg_stat_statements uzantısı, SQL deyimi yürütme istatistiklerini izlemenin bir aracı sağlamak için postgreSQL için Azure Veritabanı esnek sunucu örneklerine önceden yüklenirshared_preload_libraries.
Güvenlik nedeniyle, pg_stat_statements uzantısınıizin verilenler listesine eklemeli ve CREATE EXTENSION komutunu kullanarak yüklemelisiniz.
uzantısının hangi deyimleri izlediğini denetleyen ayarı pg_stat_statements.trackvarsayılan olarak topayarlanır; yani doğrudan istemciler tarafından verilen tüm deyimler izlenir. Diğer iki izleme düzeyi none ve all. Bu ayar sunucu parametresi olarak yapılandırılabilir.
Uzantı, her SQL deyimini günlüğe kaydederken, sağlanan sorgu yürütme bilgileri ile sunucu performansı arasında bir ödünleşim vardır. Uzantıyı pg_stat_statements etkin bir şekilde kullanmıyorsanız, pg_stat_statements.track'yi none olarak ayarlamanızı öneririz. Bazı üçüncü taraf izleme hizmetleri sorgu performansı içgörüleri sunmak için kullanabilir pg_stat_statements , bu nedenle sizin için uygun olup olmadığını onaylayın.
pgcrypto
PostgreSQL için Azure Veri Tabanı, pgcrypto PostgreSQL uzantısı aracılığıyla uygulama düzeyinde, sütun düzeyinde şifrelemeyi destekler. pgcrypto uzantısı, uygulamaların temel alınan OpenSSL kitaplığı tarafından sağlanan şifreleme algoritmalarını kullanarak sütun değerlerini şifrelemek veya karma yapmak için PostgreSQL SQL deyimlerinde şifreleme işlevlerini açıkça çağırmasına olanak tanır.
Azure Linux 3.0'dan başlayarak işletim sistemi, bazı eski ve daha zayıf şifreleme algoritmalarını ve alt düzey API'leri varsayılan olarak yüklenmeyen ayrı bir eski sağlayıcıya taşıyan OpenSSL 3.0'ı kullanır. Bu değişiklik modern, daha güvenli şifreleme algoritmaları ve üst düzey OpenSSL EVP (Zarf) API'lerinin kullanılmasını teşvik eder.
Sonuç olarak, OpenSSL 3.0'da eski olarak sınıflandırılan şifreleme algoritmaları, Azure Linux 3.0 çalıştıran PostgreSQL için Azure Veri Tabanı sunucularda pgcrypto tarafından varsayılan olarak kullanılamaz.
Kullanım dışı şifreleme algoritmaları
Aşağıdaki eski şifreleme algoritmaları OpenSSL 3.0 eski sağlayıcısına yerleştirilir ve Azure Linux 3.0 çalıştıran PostgreSQL için Azure Veri Tabanı sunucularda varsayılan olarak kullanılamaz. Bu algoritmalar önceki platform sürümlerinde pgcrypto aracılığıyla kullanılabilir olabilir, ancak artık Azure Linux 3.0'da desteklenmemektedir.
Simetrik şifreleme algoritmaları (şifreler)
- Blowfish (BF-CBC)
- CAST
- DES (tek DES; 3DES değil)
- FİKİR
- RC2
- RC4
- RC5
- TOHUM
İleti özeti ve karma algoritmaları
- MD2
- MD4
- MDC2
- RIPEMD-160
- SHA-1 (dijital imzalar için kullanım dışıdır, ancak yapılandırmaya bağlı olarak belirli HMAC senaryolarında hala izin verilebilir)
- Whirlpool
Azure Linux 3.0'a PostgreSQL için Azure Veri Tabanı yükseltmeleri, devam eden platform geliştirmelerinin bir parçasıdır. pgcrypto kullanan uygulamalar, uygulama düzeyinde, sütun düzeyinde şifreleme gerçekleştirirken modern, desteklenen şifreleme algoritmaları kullandıklarını güvence altına almalıdır.
postgres_fdw
Uzantı, postgres_fdw bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden, aynı sunucudaki başka bir veritabanına veya başka bir esnek sunucu örneğine bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı, herhangi bir PostgreSQL sunucusuna hem gelen hem de giden bağlantıları destekler. Gönderen sunucunun alıcı sunucuya giden bağlantılara izin verebilmesi gerekir. Benzer şekilde, alıcı sunucunun gönderen sunucudan bağlantılara izin vermesi gerekir.
Bu uzantıyı kullanmayı planlıyorsanız sunucularınızı sanal ağ tümleştirmesi ile dağıtmanızı öneririz. Varsayılan olarak, sanal ağ tümleştirmesi sanal ağdaki sunucular arasında bağlantılara izin verir. Erişimi özelleştirmek için sanal ağ güvenlik gruplarını kullanmayı da seçebilirsiniz.
pgstattuple
Uzantıyı pgstattuple kullanarak Postgres 11 ile 13 arasındaki sürümlerde pg_toast şemasında tutulan nesnelerden kümelen istatistiklerini almaya çalışırken, "şema pg_toast için izin reddedildi" hatasını alıyorsunuz.
Şema pg_toast için izin reddedildi
PostgreSQL için Azure Veritabanında esnek sunucu örneği kullanan müşteriler, PostgreSQL sürüm 11, 12 veya 13 ile pgstattuple uzantısını pg_toast şeması içindeki nesnelerde kullanamaz.
PostgreSQL 16 ve 17'de, pg_read_all_data rolü azure_pg_admin'e otomatik olarak verilir, bu da pgstattuple'nin düzgün çalışmasını sağlar. PostgreSQL 14 ve 15'te müşteriler, aynı sonucu elde etmek için pg_read_all_data rolünü azure_pg_admin'e el ile verebilir. Ancak PostgreSQL 11'den 13'e kadar, pg_read_all_data rolü mevcut değildir.
Müşteriler gerekli izinleri doğrudan veremiyor. Komutu çalıştırarak şema altındaki nesnelere erişebilmeniz gerekiyorsa, bir Azure destek talebi oluşturun.
timescaleDB
timescaleDB Uzantı, PostgreSQL uzantısı olarak paketlenmiş bir zaman serisi veritabanıdır. Zaman odaklı analitik işlevler ve iyileştirmeler sağlar ve Postgres'i zaman serisi iş yükleri için ölçeklendirir.
Timescale, Inc. PostgreSQL için Azure Veritabanı'nın TimescaleDB Apache-2 sürümünün kayıtlı ticari markası olan TimescaleDB hakkında daha fazla bilgi edinin.
TimescaleDB'yi yükleme
timescaleDB kullanmak için, uzantının izin listesine alındığından, kitaplığının yüklendiğinden ve işlevselliğini kullanmayı planladığınız veritabanına uzantının yüklendiğinden emin olun.
Artık sıfırdan bir TimescaleDB hiper tablosu oluşturabilir veya PostgreSQL'de mevcut zaman serisi verilerini geçirebilirsiniz.
ve pg_dumpkullanarak pg_restore zaman ölçeği veritabanını geri yükleme hakkında daha fazla bilgi için Zaman Ölçeği belgelerine bakın.
Timescaledb-backup kullanarak Zaman Ölçeği veritabanını geri yükleme
Yordamı çalıştırırken, timescaledb.restoring bayrağını güncelleştirirken izinlerin reddedilmesiyle karşılaşabilirsiniz. Bu hatayı alma nedeniniz, Cloud PaaS veritabanı hizmetlerinde sınırlı ALTER DATABASE izni olmasıdır. Bu durumda, Timescale veritabanını yedeklemek ve geri yüklemek için alternatif bir yöntem olarak timescaledb-backup aracını kullanabilirsiniz. Timescaledb-backup, Bir TimescaleDB veritabanının dökümünü alma ve geri yükleme işlemlerini daha basit, daha az hataya açık ve daha yüksek performanslı hale getiren bir programdır.
Bunu yapmak için aşağıdaki adımları izleyin:
Burada ayrıntılı olarak açıklandığı gibi araçları yükleyin.
PostgreSQL esnek sunucu örneği ve veritabanı için bir Azure Veritabanı hedefi oluşturun.
Zaman Ölçeği uzantısını etkinleştirin.
azure_pg_adminrolünü ts-restore tarafından kullanılan kullanıcıya verin.Veritabanını geri yüklemek için ts-restore komutunu çalıştırın.
Bu yardımcı programlar hakkında daha fazla ayrıntıya buradan ulaşabilirsiniz.
Uzantılar ve ana sürüm yükseltmesi
PostgreSQL için Azure Veritabanı, kullanıcıdan sadece basit bir etkileşimle PostgreSQL için Azure Veritabanı esnek sunucu örneğinde yerinde ana sürüm yükseltmesi gerçekleştiren bir yerinde sürüm yükseltme özelliği sunar. Yerinde ana sürüm yükseltmesi PostgreSQL için Azure Veritabanı yükseltme işlemini basitleştirerek sunucuya erişen kullanıcıların ve uygulamaların kesintiye uğramasını en aza indirir. Yerinde ana sürüm yükseltmeleri belirli uzantıları desteklemez ve belirli uzantıları yükseltmeye yönelik bazı sınırlamalar vardır.
anon, Apache AGE, dblink, orafce, postgres_fdw ve timescaledb uzantıları, yerinde ana sürüm güncelleştirme özelliği kullanılırken, Azure Veritabanı for PostgreSQL esnek sunucu örneği sürümlerinin hiçbirinde desteklenmez.
Dikkat edilmesi gereken belirli noktalara sahip modüller
Aşağıdaki liste, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde kullanıldığında dikkat edilmesi gereken tüm desteklenen modülleri numaralandırır:
pg_failover_slots
pg_failover_slots
Modül, pg_failover_slots hem mantıksal çoğaltma hem de yüksek kullanılabilirlik özellikli sunucularla çalışırken PostgreSQL için Azure Veritabanı'nı geliştirir. Standart PostgreSQL motorunun yük devretme sonrasında mantıksal çoğaltma yuvalarını koruyamaması sorununu etkili bir şekilde çözer. Bu yuvaların korunması, birincil sunucu rolü değişiklikleri sırasında çoğaltma duraklamalarını veya veri uyuşmazlıklarını önlemek ve işletimsel sürekliliği ve veri bütünlüğünü sağlamak için kritik öneme sahiptir.
Uzantı, çoğaltma yuvalarının gerekli aktarımını, temizlemesini ve eşitlemesini yöneterek yük devretme işlemini kolaylaştırır ve böylece sunucu rolü değişiklikleri sırasında sorunsuz bir geçiş sağlar.
pg_failover_slots modülü kullanma hakkında daha fazla bilgi ve yönergeler bulabilirsiniz.
Modülü pg_failover_slots kullanmak için, sunucu başlatıldığında kitaplığının yüklendiğinden emin olun.