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 rehber, mantıksal çoğaltma kullanarak Lakebase veritabanından harici Postgres abonesine değişikliklerin nasıl yayınlanacağını gösteriyor. Lakebase yayıncı olarak görev yapar: bir yayını tanımlar ve harici abone değişiklikleri almak için bağlanır.
Önkoşullar
- Yayımlamak istediğiniz veritabanını ve yayımlamak istediğiniz tabloları içeren bir Lakebase projesi.
- Yayını oluşturmak için,
databricks_superuserrolünün üyesi olan bir Lakebase Postgres rolü; örneğin proje sahibinin rolü.databricks_superuseröğesini başka bir role vermek için Postgres rolleri oluşturma veya Bir rolü güncelleme bölümlerine bakabilirsiniz. Bu, abonenin kullandığı rol değil, olarak bağlandığınız roldür. İlk adımda abonenin çoğaltma rolünü oluşturuyorsunuz. - Projede parola ile kimlik doğrulanan bağlantılar etkinleştirildi. Abone, yerel bir Postgres parola rolüne bağlanır ve yeni projeler için varsayılan olarak parola kimlik doğrulamalı bağlantılar devre dışı bırakılır. Bkz. Parola bağlantılarını yönetme.
- Abone olarak görev yapacak harici bir Postgres veritabanı. Abone ayrıca farklı bir bölgedeki bir Lakebase veritabanı olabilir. Aynı bölgedeki Lakebase veritabanları arasında çoğaltma desteklenmemektedir.
Mantıksal çoğaltma Lakebase'te desteklenir ve varsayılan olarak wal_level = logical düzeyinde çalıştığı için, yayımlamayı açmak için proje başına ayrı bir adım yoktur.
Bir replikasyon rolü oluşturun
Dış abonenin olarak bağlanacağı özel bir rol oluşturun. Abone Postgres kullanıcı adı ve şifresiyle bağlanır, bu yüzden OAuth rolü değil, yerel Postgres parola rolü oluşturun. OAuth rolleri, şifre tabanlı abonelik bağlantı dizesinin kullanamadığı kısa ömürlü Azure Databricks belirteçleriyle doğrulanır. Rolün REPLICATION özniteliğine sahip olması gerekir. Lakebase App, CLI veya API'de oluşturduğunuz roller, onlara databricks_superuser verip vermemenizden bağımsız olarak bu özniteliğe sahiptir. Lakebase App Rol ekle>Parola sekmesinde bir rol adı girin.
databricks_superuser seçmenize gerek yok. Bkz. Yerel Postgres parola rolü oluşturma.
Şifreyi kendiniz ayarlamak için bunun yerine rolü SQL ile oluşturun. Bu özniteliği ekleyin REPLICATION , çünkü SQL ile oluşturulan roller bunu otomatik olarak almazlar:
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
Eğer rol replike ettiğiniz tablolara sahip değilse, ona okuma erişimi verin:
GRANT USAGE ON SCHEMA public TO replication_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO replication_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO replication_user;
Bir yayın oluşturun
Lakebase veritabanına databricks_superuser rolünün bir üyesi olarak bağlanın, ardından çoğaltmak istediğiniz tablolar için bir yayın oluşturun. Her tablonun bir PRIMARY KEY veya ayarlanmış bir çoğaltma kimliği olması gerekir. Postgres dokümantasyonunda Replika kimliği sayfasına bakınız.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Abonenin bağlanmasına izin verin
Harici abone, çalışma alanı IP erişim listesini uygulayan Azure Databricks edge proxy aracılığıyla Lakebase'e bağlanır. Lakebase veritabanınıza ulaşabilmesi için abonenin IP adresini çalışma alanı IP erişim listesine ekleyin. IP erişim listesini yönet sayfasına bakın.
Abone bağlantısı için Özel Bağlantı desteklenmemektedir. Abone, halka açık Lakebase uç noktası üzerinden bağlantı kurar.
Dış veritabanından abone olun
Harici Postgres veritabanında, hedef tabloları, yayınladığınız tablolarla aynı adlara ve sütunlara sahip olacak şekilde oluşturun. Bunları boş oluşturun: hedef tablo zaten satır içeriyorsa, ilk kopyalama yinelenen anahtarlar veya kısıtlama ihlalleri nedeniyle başarısız olur. Tabloları manuel olarak oluşturabilir veya şemayı Lakebase'ten dışa aktarıp aboneye yükleyebilirsiniz. Bkz. Yalnızca şemayı dök.
Sonra, harici veritabanında abonelik oluşturabilen bir rol olarak, Lakebase'e bağlanan bir abonelik oluşturun:
CREATE SUBSCRIPTION my_subscription
CONNECTION 'host=<lakebase-host> port=5432 dbname=<lakebase-db> user=replication_user password=<password> sslmode=verify-full sslrootcert=system'
PUBLICATION my_publication;
Abone için doğrudan bağlantı kullanın. Mantıksal çoğaltma kalıcı bir bağlantı gerektirir, bu yüzden <lakebase-host> doğrudan uç nokta ana adınız olmalıdır, -pooler bağlantı havuzu ana adı değil.
Bkz. Bağlantı havuzlama.
Note
Lakebase tüm bağlantılarda TLS uygular, bu yüzden trafik her zaman şifrelenir ve herhangi bir işlem gerekmez. En güçlü koruma için, sslmode=verify-full ile bağlanın; bu, Lakebase sunucu sertifikasını sisteminizin kök deposuna göre de doğrular. Lakebase, genel olarak güvenilen bir sertifika kullandığı için ekstra sertifikaya gerek yoktur. Daha zayıf sslmode=require şifreler ancak sunucuyu doğrulamaz.
Çoğaltmayı doğrulayın
Harici abonede, mevcut satırların geldiğini doğrulayın:
SELECT COUNT(*) FROM orders;
Lakebase'te bir satır ekleyin veya güncelleyin, sonra aboneyi tekrar sorgulayın. Değişiklik aboneye birkaç saniye içinde görünür.
Abonelik durumunu ve abonedeki gecikmeyi kontrol edin:
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
İlk kopyanın tamamlandığını doğrulamak için, abone üzerinde Monitor replication bölümünde tablo başına senkronizasyon durumu sorgusunu çalıştırın ve her tablo Ready (fully live) olarak görünene kadar bekleyin.
Abonenin bağlantısı, Lakebase yayıncısında bir çoğaltma slotunu korur. Bir abone aktif olarak çoğaltma yaparken, Lakebase işlem kaynağı sıfıra ölçeklenmez. Mantıksal çoğaltma ve sıfıra ölçekleme bölümünü bkz. Abone değişiklik tüketmeyi durdurursa, slot devre dışı kalır ve Lakebase yaklaşık 40 saat sonra onu kaldırır. Bkz. Aktif olmayan slotların otomatik çıkarılması.
Sonraki Adımlar
- Çoğaltmayı yönetin: Yayınları ve slotları izleyin ve sorun giderin. Mantıksal çoğaltmayı yönet ve izle.
- Lakebase'e Geçiş: Harici bir Postgres veritabanının Lakebase'e çoğaltılması. Bkz. Verileri Lakebase'e çoğaltın.
- Yöntemleri karşılaştırın: Lakebase'e ve Lakebase'den veri taşımak için doğru yolu seçin. Lakebase'e veri taşıma ve Lakebase'den veri taşıma bölümüne bakınız.