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.
SQL Server 2016, kullanılabilirlik gruplarının otomatik olarak dağıtılmasıyla kullanıma sunulmuştur. Otomatik tohumlama ile bir kullanılabilirlik grubu oluşturduğunuzda, SQL Server gruptaki her veritabanı için otomatik olarak ikincil çoğaltmalar oluşturur. Artık ikincil çoğaltmaları el ile yedeklemeniz ve geri yüklemeniz gerekmez. Otomatik tohum oluşturmayı etkinleştirmek için T-SQL ile kullanılabilirlik grubunu oluşturun veya SQL Server Management Studio en son sürümünü kullanın.
Arka plan bilgileri için bkz. İkincil çoğaltmalar için otomatik tohumlama.
Prerequisites
SQL Server 2016'da otomatik dağıtım, kullanılabilirlik grubuna katılan her SQL Server örnekte veri ve günlük dosyası yolunun aynı olmasını gerektirir. SQL Server 2017'de farklı yollar kullanabilirsiniz, ancak Microsoft tüm çoğaltmalar aynı platformda (örneğin Windows veya Linux) barındırıldığında aynı yolların kullanılmasını önerir. Platformlar arası kullanılabilirlik grupları, replikalar için farklı yollara sahiptir. Ayrıntılar için bkz. Disk düzeni.
Kullanılabilirlik grubu tohumlama, veritabanı yansıtma uç noktası üzerinden iletişim kurar. Her sunucuda yansıtma uç noktası bağlantı noktasına yönelik gelen güvenlik duvarı kurallarını açın.
Kullanılabilirlik grubundaki veritabanları tam kurtarma modelinde olmalıdır. Veritabanının geçerli bir tam yedeklemeye ve işlem günlüğü yedeklemesine sahip olması gerekir. Bu yedekleme dosyaları otomatik tohumlama için kullanılmaz, ancak veritabanını bir kullanılabilirlik grubuna eklemeden önce gereklidir.
Otomatik tohumlama ile kullanılabilirlik grubu oluşturma
Otomatik çekirdek oluşturma ile bir kullanılabilirlik grubu oluşturmak için SEEDING_MODE=AUTOMATIC öğesini ayarlayın.
Aşağıdaki örnek, iki düğümlü Windows Server yük devretme kümesinde bir kullanılabilirlik grubu oluşturur. Betikleri çalıştırmadan önce ortamınızın değerlerini güncelleştirin.
Uç noktaları oluşturun. Her sunucunun bir uç noktası olması gerekir. Aşağıdaki betik, dinleyici için 5022 numaralı TCP bağlantı noktasını kullanan bir uç nokta oluşturur.
<endpoint_name>veLISTENER_PORTöğelerini ortamınıza uyacak şekilde ayarlayın ve betiği her iki sunucuda da çalıştırın:CREATE ENDPOINT [<endpoint_name>] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING ( ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM AES ) GOKullanılabilirlik grubunu oluşturun. Aşağıdaki betik kullanılabilirlik grubunu oluşturur. Grup adı, sunucu adları ve etki alanı adları için açılı ayraç
<>içindeki değerleri güncelleştirin ve SQL Server birincil örneğinde çalıştırın.CREATE AVAILABILITY GROUP [<availability_group_name>] FOR DATABASE db1 REPLICA ON'<*primary_server*>' WITH (ENDPOINT_URL = N'TCP://<primary_server>.<fully_qualified_domain_name>:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO), SEEDING_MODE = AUTOMATIC), N'<secondary_server>' WITH (ENDPOINT_URL = N'TCP://<secondary_server>.<fully_qualified_domain_name>:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO), SEEDING_MODE = AUTOMATIC); GOİkincil sunucu örneğini kullanılabilirlik grubuna ekleyin ve kullanılabilirlik grubuna veritabanı oluşturma izni verin. Aşağıdaki betiği güncelleyin, açılı ayraçlar içindeki
<>değerlerini ortamınıza uygun değerlerle değiştirin ve bunu SQL Server’ın ikincil replika örneğinde çalıştırın:ALTER AVAILABILITY GROUP [<availability_group_name>] JOIN GO ALTER AVAILABILITY GROUP [<availability_group_name>] GRANT CREATE ANY DATABASE GO
SQL Server ikincil sunucuda otomatik olarak veritabanı çoğaltması oluşturur. Veritabanı büyükse, veritabanının eşitlenmesini tamamlamak biraz zaman alabilir. Veritabanı otomatik tohumlama için yapılandırılmış bir kullanılabilirlik grubundaysa, sistem görünümünü sorgulayarak sys.dm_hadr_automatic_seeding tohumlama ilerleme durumunu izleyebilirsiniz. Aşağıdaki sorgu, otomatik tohumlama için yapılandırılmış bir kullanılabilirlik grubundaki her veritabanı için bir satır döndürür.
SELECT start_time,
ag.name,
db.database_name,
current_state,
performed_seeding,
failure_state,
failure_state_desc
FROM sys.dm_hadr_automatic_seeding autos
JOIN sys.availability_databases_cluster db
ON autos.ag_db_id = db.group_database_id
JOIN sys.availability_groups ag
ON autos.ag_id = ag.group_id
Bir kullanılabilirlik grubundan sonra otomatik çekirdek oluşturmayı önleme
Birincil çoğaltmanın ikincil çoğaltmaya daha fazla veritabanı dağıtmasını geçici olarak önlemek için, veritabanları oluşturma için kullanılabilirlik grubu iznini reddedebilirsiniz. Kullanılabilirlik grubunun çoğaltma veritabanları oluşturma iznini reddetmek için, ikincil çoğaltmanın barındırıldığı örnekte aşağıdaki sorguyu çalıştırın.
ALTER AVAILABILITY GROUP [<availability_group_name>]
DENY CREATE ANY DATABASE
GO
Mevcut bir kullanılabilirlik grubunda otomatik tohum oluşturmayı etkinleştirme
Mevcut bir veritabanında otomatik tohumlama ayarlayabilirsiniz. Aşağıdaki komut, bir kullanılabilirlik grubunu otomatik tohumlama kullanacak şekilde değiştirir. Aşağıdaki komutu birincil replikada çalıştırın.
ALTER AVAILABILITY GROUP [<availability_group_name>]
MODIFY REPLICA ON '<secondary_node>'
WITH (SEEDING_MODE = AUTOMATIC)
GO
Yukarıdaki komut, gerekirse veritabanını tohumlama işlemini yeniden başlatmaya zorlar. Örneğin, ikincil çoğaltmada yetersiz disk alanı nedeniyle tohumlama başarısız olursa, boş alan ekledikten sonra tohumlama işlemini yeniden başlatmak için komutunu çalıştırın ALTER AVAILABILITY GROUP ... WITH (SEEDING_MODE=AUTOMATIC) .
Otomatik tohumlamayı durdurma
Bir kullanılabilirlik grubu için otomatik tohumlamayı durdurmak için birincil çoğaltmada aşağıdaki betiği çalıştırın:
ALTER AVAILABILITY GROUP [<availability_group_name>]
MODIFY REPLICA ON '<secondary_node>'
WITH (SEEDING_MODE = MANUAL)
GO
Yukarıdaki betik, şu anda tohumlamada olan tüm çoğaltmaları iptal eder ve SQL Server bu kullanılabilirlik grubundaki tüm çoğaltmaları otomatik olarak başlatmasını engeller. Önceden başlatılmış çoğaltmalar için eşitlemeyi durdurmaz.
Otomatik tohumlama kullanılabilirlik grubunu izleme
Tohumlamayı izlemek için sistem dinamik yönetim görünümlerini kullanın
Aşağıdaki sistem görünümleri, SQL Server otomatik seeding işleminin durumunu gösterir.
sys.dm_hadr_automatic_seeding
Birincil çoğaltmada, otomatik tohumlama işleminin durumunu denetlemek için sorguyu sys.dm_hadr_automatic_seeding çalıştırın. Görünüm, her bir tohumlama işlemi için bir satır döndürür. Örneğin:
SELECT start_time,
completion_time
is_source,
current_state,
failure_state,
failure_state_desc
FROM sys.dm_hadr_automatic_seeding
sys.dm_hadr_physical_seeding_stats
Birincil çoğaltmada DMV'yi sorgulayarak sys.dm_hadr_physical_seeding_stats çalışmakta olan her bir tohumlama işleminin fiziksel istatistiklerini görün. Aşağıdaki sorgu, tohumlama çalışırken satırları döndürür:
SELECT * FROM sys.dm_hadr_physical_seeding_stats;
total_disk_io_wait_time_ms vetotal_network_wait_time_ms iki sütun, Otomatik tohumlama işleminde performans sorunlarını belirlemek için kullanılabilir. İki sütun hadr_physical_seeding_progress genişletilmiş olayda da bulunur.
total_disk_io_wait_time_ms , diskte beklerken yedekleme/geri yükleme iş parçacığı tarafından harcanan zamanı temsil eder. Bu değer, tohumlama işleminin başlangıcından bu yana kümülatiftir. Diskler yedekleme akışını okumaya veya yazmaya hazır değilse, yedekleme/geri yükleme iş parçacığı uyku durumuna geçirilir ve diskin hazır olup olmadığını denetlemek için her bir saniyede bir uyanır.
total_network_wait_time_ms , Birincil ve İkincil çoğaltma için farklı yorumlanır. Birincil çoğaltmada bu sayaç, ağ akışı denetim süresini temsil eder. İkincil çoğaltmada bu, geri yükleme iş parçacığının diske yazılabilecek bir iletinin kullanılabilir hâle gelmesini beklediği süreyi temsil eder.
Hata günlüğünü kullanarak otomatik tohumlama ile veritabanı başlatmayı tanılayın
Otomatik dağıtım için yapılandırılmış bir kullanılabilirlik grubuna veritabanı eklediğinizde, SQL Server kullanılabilirlik grubu uç noktası üzerinden bir VDI yedeklemesi gerçekleştirir. Yedeklemenin ne zaman tamamlandığı ve ikincilin eşitlendiği hakkında bilgi için SQL Server hata günlüğünü gözden geçirin.
Genişletilmiş olaylarla veritabanı düzeyindeki sağlığı tanılayın
Otomatik tohumlama, başlatma sırasında durum değişikliğini, hataları ve performans istatistiklerini izlemeye yönelik yeni genişletilmiş olaylar içerir.
Örneğin, bu betik otomatik tohumlama ile ilgili olayları yakalamak için bir genişletilmiş olay oturumu oluşturur:
CREATE EVENT SESSION [AlwaysOn_autoseed] ON SERVER
ADD EVENT sqlserver.hadr_automatic_seeding_state_transition,
ADD EVENT sqlserver.hadr_automatic_seeding_timeout,
ADD EVENT sqlserver.hadr_db_manager_seeding_request_msg,
ADD EVENT sqlserver.hadr_physical_seeding_backup_state_change,
ADD EVENT sqlserver.hadr_physical_seeding_failure,
ADD EVENT sqlserver.hadr_physical_seeding_forwarder_state_change,
ADD EVENT sqlserver.hadr_physical_seeding_forwarder_target_state_change,
ADD EVENT sqlserver.hadr_physical_seeding_progress,
ADD EVENT sqlserver.hadr_physical_seeding_restore_state_change,
ADD EVENT sqlserver.hadr_physical_seeding_submit_callback
ADD TARGET package0.event_file(
SET filename=N'autoseed.xel',
max_file_size=(5),
max_rollover_files=(4)
)
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
MAX_EVENT_SIZE=0 KB,
MEMORY_PARTITION_MODE=NONE,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=ON
)
GO
ALTER EVENT SESSION AlwaysOn_autoseed ON SERVER STATE=START
GO
Aşağıdaki tabloda otomatik tohumlamayla ilgili genişletilmiş olaylar listeleniyor:
| Name | Description |
|---|---|
| hadr_db_manager_seeding_request_msg | Tohumlama istek iletisi. |
| hadr_physical_seeding_backup_state_change | Fiziksel tohumlama yedek taraf durum değişikliği. |
| hadr_physical_seeding_restore_state_change | Fiziksel tohumlama geri yükleme yan durum değişikliği. |
| hadr_physical_seeding_forwarder_state_change | Fiziksel tohumlama iletici tarafı durum değişikliği. |
| hadr_physical_seeding_forwarder_target_state_change | Fiziksel tohumlama ileticisi hedef tarafı durum değişikliği. |
| hadr_physical_seeding_submit_callback | Fiziksel tohumlama gönderim geri çağırım olayı. |
| hadr_physical_seeding_failure | Fiziksel tohumlama hatası olayı. |
| hadr_physical_seeding_progress | Fiziksel tohumlama ilerleme durumu olayı. |
| HADR_fiziksel_çekirdek_oluşturma_zamanlanmış_uzun_görev_başarısızlığı | fiziksel tohumlama zamanlaması uzun görev hatası olayı. |
| hadr_automatic_seeding_start | Otomatik bir tohumlama işlemi gönderildiğinde gerçekleşir. |
| hadr_automatic_seeding_state_transition | Otomatik bir tohumlama işlemi durum değiştirdiğinde gerçekleşir. |
| hadr_automatic_seeding_success | Otomatik bir tohumlama işlemi başarılı olduğunda gerçekleşir. |
| hadr_automatic_seeding_failure | Otomatik bir tohumlama işlemi başarısız olduğunda gerçekleşir. |
| hadr_automatic_seeding_timeout | Otomatik bir tohumlama işlemi zaman aşımına uğradığında oluşur. |
Diğer sorun giderme konuları
Otomatik tohumlama sırasında izleme
sys.dm_hadr_physical_seeding_stats Şu anda çalışan otomatik tohumlama işlemlerini sorgula. Görünüm her veritabanı için bir satır döndürür. Örneğin:
SELECT local_database_name,
role_desc,
internal_state_desc,
transfer_rate_bytes_per_second,
transferred_size_bytes,
database_size_bytes,
start_time_utc,
end_time_utc, estimate_time_complete_utc,
total_disk_io_wait_time_ms,
total_network_wait_time_ms,
is_compression_enabled
FROM sys.dm_hadr_physical_seeding_stats
Veritabanının otomatik tohumlama için yapılandırılmış bir kullanılabilirlik grubunda görünmeme sorununu giderme
Veritabanı, otomatik tohumlama etkin bir kullanılabilirlik grubunun parçası olarak görünemediğinde, otomatik tohumlama büyük olasılıkla başarısız olmuştur. Bu, veritabanının birincil ve ikincil çoğaltmadaki kullanılabilirlik grubuna eklenmesini engeller. Hem birincil hem de ikincil kopyalarda sys.dm_hadr_automatic_seeding sorgulayın. Örneğin, otomatik tohumlamanın hata durumunu belirlemek için aşağıdaki sorguyu çalıştırın.
SELECT start_time,
completion_time,
is_source,
current_state,
failure_state,
failure_state_desc,
error_code
FROM sys.dm_hadr_automatic_seeding
Otomatik tohumlama ve performansla ilgili dikkat edilmesi gerekenler
SQL Server otomatik tohumlama için sabit sayıda iş parçacığı kullanır. Birincil örnekte, SQL Server değişiklikleri okumak için LUN başına bir iş parçacığı kullanır. İkincil örnekte SQL Server veritabanını başlatmak için LUN başına bir iş parçacığı kullanır.
Otomatik tohumlama sırasında veri akışının sıkıştırmasını etkinleştirmek için birincil çoğaltmada izleme bayrağı 9567'yi ayarlayın. Bu, otomatik tohumlamanın aktarım süresini önemli ölçüde azaltabilir, ancak CPU kullanımını da artırır. Daha fazla bilgi için, bkz. Kullanılabilirlik grubu için sıkıştırmayı ayarlama.
Otomatik tohumlamanın kullanılmaması gereken durumlar
Bazı senaryolarda otomatik dağıtım, ikincil çoğaltmayı başlatmak için en uygun olmayabilir. Otomatik tohumlama sırasında, SQL Server başlatma için ağ üzerinden bir yedekleme gerçekleştirir. Veritabanları çok büyükse veya ikincil çoğaltma uzaksa bu işlem yavaş olabilir. Bu veritabanlarının işlem günlüğü yedekleme işlemi sırasında kesilemez, bu nedenle yoğun bir veritabanında uzun süreli bir başlatma işlemi önemli işlem günlüğü büyümesine neden olabilir. Otomatik tohumlama ile bir kullanılabilirlik grubuna veritabanı eklemeden önce, çoğaltmalar arasındaki veritabanı boyutunu, yükünü ve site mesafesini değerlendirin.