Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
SQL Server 2016-ban bevezették a rendelkezésre állási csoportok automatikus vetését. Amikor automatikus magvetéssel hoz létre rendelkezésre állási csoportot, SQL Server automatikusan létrehozza a másodlagos replikákat a csoport összes adatbázisához. A továbbiakban nem kell manuálisan biztonsági másolatot készítenie és visszaállítania a másodlagos replikákat. Az automatikus magvetés engedélyezéséhez hozza létre a rendelkezésre állási csoportot a T-SQL-lel, vagy használja a SQL Server Management Studio legújabb verzióját.
A háttérinformációkat a másodlagos replikák automatikus vetésével kapcsolatos cikkben találhatja meg.
Prerequisites
A SQL Server 2016 rendszerben az automatikus inicializálás megköveteli, hogy az adat- és naplófájlok elérési útja azonos legyen a rendelkezésre állási csoportban részt vevő minden SQL Server-példányon. 2017 SQL Server különböző elérési utakat használhat, de Microsoft ugyanazt az elérési utat javasolja, ha az összes replika ugyanazon a platformon van üzemeltetve (például Windows vagy Linux). A platformfüggetlen rendelkezésre állási csoportok különböző elérési útokkal rendelkeznek a replikákhoz. További részletekért lásd: Lemezelrendezés.
A rendelkezésre állási csoport inicializálása az adatbázistükrözési végponton keresztül történik. Nyissa meg az egyes kiszolgálókon a tükrözési végpont portjához tartozó bejövő tűzfalszabályokat.
A rendelkezésre állási csoport adatbázisainak teljes helyreállítási modellben kell lenniük. Az adatbázisnak teljes biztonsági mentéssel és tranzakciónaplóval kell rendelkeznie. Ezek a biztonsági mentési fájlok nem használhatók az automatikus vetéshez, de az adatbázis rendelkezésre állási csoportba való felvétele előtt szükséges.
Rendelkezésre állási csoport létrehozása automatikus vetéssel
Ha automatikus magvetéssel szeretne létrehozni egy rendelkezésre állási csoportot, állítsa be a következőt SEEDING_MODE=AUTOMATIC: .
Az alábbi példa egy rendelkezésre állási csoportot hoz létre egy kétcsomópontos Windows Server feladatátvevő fürtön. A szkriptek futtatása előtt frissítse a környezet értékeit.
Hozza létre a végpontokat. Minden kiszolgálónak szüksége van egy végpontra. A következő szkript létrehoz egy végpontot, amely az 5022-s TCP-portot használja a figyelőhöz. Állítsa be a
<endpoint_name>és aLISTENER_PORTértékét a környezetének megfelelően, majd futtassa a szkriptet mindkét kiszolgáló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 ) GOHozza létre a rendelkezésre állási csoportot. A következő szkript létrehozza a rendelkezésre állási csoportot. Frissítse a csoportnév, a kiszolgálónevek és a tartománynevek szögletes
<>zárójelben lévő értékeit, és futtassa azokat a SQL Server elsődleges példányá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); GOCsatlakozzon a másodlagos kiszolgálópéldányhoz a rendelkezésre állási csoporthoz, és adjon adatbázis-létrehozási engedélyt a rendelkezésre állási csoportnak. Frissítse a következő szkriptet, cserélje le a környezet szögletes
<>zárójeleiben lévő értékeket, és futtassa a SQL Server másodlagos replikapéldányán:ALTER AVAILABILITY GROUP [<availability_group_name>] JOIN GO ALTER AVAILABILITY GROUP [<availability_group_name>] GRANT CREATE ANY DATABASE GO
SQL Server automatikusan létrehozza az adatbázisreplikát a másodlagos kiszolgálón. Ha az adatbázis nagy, az adatbázis szinkronizálása eltarthat egy ideig. Ha egy adatbázis egy automatikus vetésre konfigurált rendelkezésre állási csoportban van, a rendszernézet lekérdezésével sys.dm_hadr_automatic_seeding monitorozhatja a vetés előrehaladását. Az alábbi lekérdezés egy sort ad vissza minden olyan adatbázishoz, amely egy automatikus magvetésre konfigurált rendelkezésre állási csoportban található.
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
Automatikus magvetés megakadályozása rendelkezésre állási csoport után
Ha ideiglenesen meg szeretné akadályozni, hogy az elsődleges replika több adatbázist helyezzen üzembe a másodlagos replikába, megtagadhatja a rendelkezésre állási csoport engedélyét az adatbázisok létrehozásához. Futtassa a következő lekérdezést a másodlagos replikát futtató példányon, hogy megtagadja a rendelkezésre állási csoport engedélyét replika-adatbázisok létrehozásához.
ALTER AVAILABILITY GROUP [<availability_group_name>]
DENY CREATE ANY DATABASE
GO
Automatikus magvetés engedélyezése meglévő rendelkezésre állási csoporton
Az automatikus magvetést egy meglévő adatbázisban állíthatja be. Az alábbi parancs egy rendelkezésre állási csoportot módosít az automatikus vetés használatára. Futtassa a következő parancsot az elsődleges replikán.
ALTER AVAILABILITY GROUP [<availability_group_name>]
MODIFY REPLICA ON '<secondary_node>'
WITH (SEEDING_MODE = AUTOMATIC)
GO
Az előző parancs arra kényszeríti az adatbázist, hogy szükség esetén újraindítsa a magvetést. Ha például a vetés meghiúsul, mert nincs elegendő lemezterület a másodlagos replikán, futtassa ALTER AVAILABILITY GROUP ... WITH (SEEDING_MODE=AUTOMATIC) a vetés újraindításához a szabad hely hozzáadása után.
Automatikus vetés leállítása
Ha le szeretné állítani egy rendelkezésre állási csoport automatikus magvetését, futtassa a következő szkriptet az elsődleges replikán:
ALTER AVAILABILITY GROUP [<availability_group_name>]
MODIFY REPLICA ON '<secondary_node>'
WITH (SEEDING_MODE = MANUAL)
GO
Az előző szkript megszakítja a jelenleg vetés alatt álló replikákat, és megakadályozza, hogy SQL Server automatikusan inicializálja a replikákat ebben a rendelkezésre állási csoportban. Nem állítja le a már inicializált replikák szinkronizálását.
Automatikus vetés rendelkezésre állási csoport figyelése
Rendszerdinamikai felügyeleti nézetek használata a magok figyeléséhez
Az alábbi rendszernézetek SQL Server automatikus vetés állapotát mutatják.
sys.dm_hadr_automatic_seeding
Az elsődleges replikán kérdezze le sys.dm_hadr_automatic_seeding az automatikus vetés folyamatának állapotát. A nézet minden egyes vetési folyamathoz egy sort ad vissza. Például:
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
Az elsődleges replikán kérdezze le a sys.dm_hadr_physical_seeding_stats DMV-t a jelenleg futó egyes inicializálási folyamatok fizikai statisztikáinak megtekintéséhez. A következő lekérdezés sorokat ad vissza, amikor az adatfeltöltés folyamatban van:
SELECT * FROM sys.dm_hadr_physical_seeding_stats;
A két oszlop total_disk_io_wait_time_ms és a total_network_wait_time_ms az automatikus magvetési folyamat teljesítménybeli szűk keresztmetszetének meghatározására használható. A két oszlop a hadr_physical_seeding_progress kiterjesztett eseményben is jelen van.
total_disk_io_wait_time_ms a biztonsági mentési/visszaállítási szál által a lemezre való várakozás során eltöltött időt jelöli. Ez az érték a magvetési művelet kezdete óta kumulatív. Ha a lemezek nem állnak készen a biztonsági mentési adatfolyam olvasására vagy írására, a biztonsági mentési/visszaállítási szál alvó állapotba vált, és másodpercenként felébred, és ellenőrzi, hogy a lemez készen áll-e.
A total_network_wait_time_ms értelmezése eltérő az elsődleges és a másodlagos replika esetében. Az elsődleges replikán ez a számláló a hálózati forgalom vezérlési idejét jelöli. A másodlagos replikán ez azt az időt jelzi, amikor a visszaállítási szál arra vár, hogy egy üzenet elérhető legyen a lemezre való íráshoz.
Az adatbázis inicializálásának diagnosztizálása automatikus seedeléssel a hibanaplóban
Amikor adatbázist ad hozzá egy automatikus magvetésre konfigurált rendelkezésre állási csoporthoz, SQL Server VDI-biztonsági mentést hajt végre a rendelkezésre állási csoport végpontja felett. Tekintse át a SQL Server hibanaplót a biztonsági mentés befejezésének és a másodlagos szinkronizálásának időpontjáról.
Adatbázisszintű állapot diagnosztizálása kiterjesztett eseményekkel
Az automatikus vetés új kiterjesztett eseményekkel rendelkezik az állapotváltozások, a hibák és a teljesítménystatisztikák inicializálás során történő nyomon követéséhez.
Ez a szkript például egy bővített esemény munkamenetet hoz létre, amely rögzíti az automatikus bevetéssel kapcsolatos eseményeket:
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
Az alábbi táblázat az automatikus vetéssel kapcsolatos kiterjesztett eseményeket sorolja fel:
| Név | Description |
|---|---|
| hadr_db_manager_seeding_request_msg | A vetéskérés üzenete. |
| hadr_physical_seeding_backup_state_change | A fizikai beültetés biztonsági mentési oldali állapotváltozása. |
| hadr_physical_seeding_restore_state_change | A fizikai magvetés visszaállítási oldalának állapota megváltozik. |
| hadr_physical_seeding_forwarder_state_change | A fizikai vetéstovábbító oldalállapotának változása. |
| A fizikai inicializálási továbbító célállapotának változása a HADR-ben | A fizikai vetéstovábbító céloldali állapotváltozása. |
| hadr_physical_seeding_submit_callback | A fizikai magvetés visszahívási eseményt küld. |
| hadr_physical_seeding_failure | Fizikai magvetési hibaesemény. |
| HADR fizikai inicializálás előrehaladása | Fizikai magvetési folyamat eseménye. |
| A HADR fizikai inicializálási hosszú feladat ütemezése sikertelen | fizikai magbeosztási ütemezés hosszú feladathibás esemény. |
| hadr_automatic_seeding_start | Akkor fordul elő, amikor egy automatikus seedelési műveletet beküldenek. |
| hadr_automatic_seeding_state_transition | Akkor fordul elő, ha egy automatikus vetési művelet állapota megváltozik. |
| hadr_automatic_seeding_success | Akkor fordul elő, ha egy automatikus vetés sikeres. |
| hadr_automatic_seeding_failure | Akkor fordul elő, ha egy automatikus vetési művelet meghiúsul. |
| hadr_automatic_seeding_timeout | Akkor fordul elő, ha egy automatikus vetési művelet túllépi az időkorlátot. |
Egyéb hibaelhárítási szempontok
Automatikus vetés monitorozása
Kérdezze le a sys.dm_hadr_physical_seeding_stats használatával a jelenleg futó automatikus seedingfolyamatokat. A nézet minden adatbázishoz egy sort ad vissza. Például:
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
Azon hibák elhárítása, amelyek miatt egy adatbázis nem jelenik meg az automatikus vetésre konfigurált rendelkezésre állási csoportban
Ha egy adatbázis nem jelenik meg egy olyan rendelkezésre állási csoport részeként, amelyen engedélyezve van az automatikus vetés, az automatikus vetés valószínűleg meghiúsult. Ez megakadályozza az adatbázis hozzáadását a rendelkezésre állási csoporthoz az elsődleges és a másodlagos replikán. Az elsődleges és a másodlagos replikák lekérdezése sys.dm_hadr_automatic_seeding . Futtassa például a következő lekérdezést az automatikus vetés hibaállapotának azonosításához.
SELECT start_time,
completion_time,
is_source,
current_state,
failure_state,
failure_state_desc,
error_code
FROM sys.dm_hadr_automatic_seeding
Az automatikus vetés és a teljesítmény szempontjai
SQL Server rögzített számú szálat használ az automatikus vetéshez. Az elsődleges példányon a SQL Server lunonként egy szálat használ a módosítások olvasásához. A másodlagos példányon SQL Server lunonként egy szálat használ az adatbázis inicializálásához.
Állítsa be a 9567-es nyomkövetési jelzőt az elsődleges replikán az adatfolyam automatikus vetés közbeni tömörítésének engedélyezéséhez. Ez jelentősen csökkentheti az automatikus vetés átviteli idejét, de növeli a processzorhasználatot is. További információkért lásd: A rendelkezésre állási csoport tömörítésének finomhangolása.
Mikor ne használjon automatikus vetést?
Bizonyos esetekben előfordulhat, hogy az automatikus vetés nem optimális egy másodlagos replika inicializálásához. Az automatikus vetés során SQL Server biztonsági másolatot készít a hálózaton az inicializáláshoz. Ez a folyamat lassú lehet, ha az adatbázisok nagyon nagyok, vagy a másodlagos replika távoli. Ezeknek az adatbázisoknak a tranzakciónaplója nem csonkítható a biztonsági mentési folyamat során, így egy forgalmas adatbázis hosszan tartó inicializálási folyamata jelentős tranzakciónapló-növekedést eredményezhet. Mielőtt automatikus magvetéssel rendelkező adatbázist ad hozzá egy rendelkezésre állási csoporthoz, értékelje ki a replikák közötti adatbázisméretet, terhelést és hely távolságot.