Przewodnik migracji: program SQL Server do usługi Azure SQL Managed Instance

Dotyczy:Azure SQL Managed Instance

Ten przewodnik ułatwia migrację wystąpienia programu SQL Server do usługi Azure SQL Managed Instance.

Możesz przeprowadzić migrację programu SQL Server działającego lokalnie lub w:

  • Program SQL Server w usłudze Virtual Machines
  • Amazon EC2 (Elastyczna chmura obliczeniowa)
  • Amazon RDS (usługa relacyjnej bazy danych) dla programu SQL Server
  • Aparat obliczeniowy Google
  • Cloud SQL for SQL Server — GCP (Google Cloud Platform)

Aby uzyskać więcej informacji na temat migracji, zobacz omówienie migracji. Inne przewodniki dotyczące migracji można znaleźć w temacie Database Migration (Migracja bazy danych).

Migration process flow

Wymagania wstępne

Aby przeprowadzić migrację programu SQL Server do usługi Azure SQL Managed Instance, upewnij się, że:

Przed migracją

Po sprawdzeniu, czy środowisko źródłowe jest obsługiwane, zacznij od etapu przed migracją. Odkryj wszystkie istniejące źródła danych, oceń możliwości migracji i zidentyfikuj wszelkie problemy blokujące, które mogą uniemożliwić migrację.

Wykryj

W fazie odnajdywania przeskanuj sieć, aby zidentyfikować wszystkie wystąpienia i funkcje programu SQL Server używane przez organizację.

Użyj usługi Azure Migrate , aby ocenić użyteczność migracji serwerów lokalnych, przeprowadzić ustalanie rozmiaru na podstawie wydajności i zapewnić szacowanie kosztów na potrzeby uruchamiania ich na platformie Azure.

Alternatywnie użyj zestawu narzędzi Microsoft Assessment and Planning Toolkit ("MAP Toolkit"), aby ocenić bieżącą infrastrukturę IT. Zestaw narzędzi udostępnia zaawansowane narzędzie do tworzenia spisu, oceny i raportowania w celu uproszczenia procesu planowania migracji.

Aby uzyskać więcej informacji o narzędziach dostępnych do użycia w fazie odnajdywania, zobacz Usługi i narzędzia dostępne dla scenariuszy migracji danych.

Po odnalezieniu źródeł danych należy ocenić wszystkie lokalne wystąpienia programu SQL Server, które można zmigrować do usługi Azure SQL Managed Instance, aby zidentyfikować blokady migracji lub problemy ze zgodnością. Przejdź do następujących kroków, aby ocenić i przeprowadzić migrację baz danych do usługi Azure SQL Managed Instance:

Steps for migration to Azure SQL Managed Instance

Ocena

Uwaga

Jeśli oceniasz całą infrastrukturę danych programu SQL Server na dużą skalę w programie VMware, użyj usługi Azure Migrate , aby uzyskać zalecenia dotyczące wdrażania usługi Azure SQL, określanie rozmiaru docelowego i miesięczne szacunki.

Ustal, czy usługa SQL Managed Instance jest zgodna z wymaganiami bazy danych aplikacji. Usługa SQL Managed Instance została zaprojektowana w celu zapewnienia łatwej migracji metodą "lift and shift" dla większości istniejących aplikacji korzystających z programu SQL Server. Jednak czasami może być wymagane funkcje lub możliwości, które nie są jeszcze obsługiwane, a koszt wdrożenia obejścia jest zbyt wysoki.

Rozszerzenie migracji usługi Azure SQL dla usługi Azure Data Studio zapewnia bezproblemowe środowisko oparte na kreatorze do oceny, uzyskiwania zaleceń platformy Azure i migrowania lokalnych baz danych programu SQL Server do programu SQL Server na maszynach wirtualnych platformy Azure. Oprócz tego, wyróżnianie wszelkich blokad migracji lub ostrzeżeń, rozszerzenie zawiera również opcję rekomendacji dotyczących platformy Azure w celu zbierania danych wydajności baz danych w celu rekomendowania odpowiedniego rozmiaru usługi Azure SQL Managed Instance w celu spełnienia wymagań dotyczących wydajności obciążenia (z najmniejszą ceną).

Aby ocenić bazy danych, możesz użyć rozszerzenia Azure SQL Migration dla programu Azure Data Studio:

Aby ocenić środowisko przy użyciu rozszerzenia Azure SQL Migration, wykonaj następujące kroki:

  1. Otwórz rozszerzenie Azure SQL Migration dla programu Azure Data Studio.
  2. Połączenie do źródłowego wystąpienia programu SQL Server
  3. Kliknij przycisk Migrate to Azure SQL (Migrowanie do usługi Azure SQL) w kreatorze migracji usługi Azure SQL w narzędziu Azure Data Studio
  4. Wybierz bazy danych do oceny, a następnie kliknij przycisk Dalej
  5. Wybierz element docelowy usługi Azure SQL, w tym przypadku usługę Azure SQL Managed Instance
  6. Kliknij pozycję Wyświetl/Wybierz , aby przejrzeć raport oceny
  7. Poszukaj problemów z blokowaniem migracji i parzystością funkcji. Raport oceny można również wyeksportować do pliku, który może być udostępniany innym zespołom lub personelowi w organizacji.
  8. Określ poziom zgodności bazy danych, który minimalizuje nakłady pracy po migracji.

Aby uzyskać zalecenie dotyczące platformy Azure przy użyciu rozszerzenia Azure SQL Migration, wykonaj następujące kroki:

  1. Otwórz rozszerzenie Azure SQL Migration dla programu Azure Data Studio.
  2. Połączenie do źródłowego wystąpienia programu SQL Server
  3. Kliknij przycisk Migrate to Azure SQL (Migrowanie do usługi Azure SQL) w kreatorze migracji usługi Azure SQL w narzędziu Azure Data Studio
  4. Wybierz bazy danych do oceny, a następnie kliknij przycisk Dalej
  5. Wybierz element docelowy usługi Azure SQL, w tym przypadku usługę Azure SQL Managed Instance
  6. Przejdź do sekcji Rekomendacje dotyczące platformy Azure, kliknij pozycję Pobierz rekomendację platformy Azure
  7. Wybierz pozycję Zbieraj dane wydajności teraz. Wybierz folder na komputerze lokalnym, aby zapisać dzienniki wydajności, a następnie wybierz pozycję Uruchom.
  8. Po 10 minutach narzędzie Azure Data Studio wskazuje, że zalecenie jest dostępne dla usługi Azure SQL Managed Instance.
  9. Sprawdź kartę Azure SQL Managed Instance w panelu docelowym usługi Azure SQL, aby przejrzeć zalecenie dotyczące jednostki SKU usługi Azure SQL Managed Instance

Aby dowiedzieć się więcej, zobacz Samouczek: migrowanie programu SQL Server do usługi Azure SQL Managed Instance w trybie online przy użyciu narzędzia Azure Data Studio.

Aby dowiedzieć się więcej, zobacz Samouczek: migrowanie programu SQL Server do usługi Azure SQL Managed Instance w trybie offline przy użyciu narzędzia Azure Data Studio.

Jeśli ocena napotka wiele elementów blokujących, aby potwierdzić, że baza danych nie jest gotowa do użycia usługi Azure SQL Managed Instance, rozważ następujące kwestie:

Skalowane oceny i analizy

Rozszerzenie migracji usługi Azure SQL dla usługi Azure Data Studio i usługi Azure Migrate obsługuje przeprowadzanie skalowanych ocen i konsolidację raportów oceny na potrzeby analizy.

Jeśli masz wiele serwerów i baz danych, które należy ocenić i przeanalizować na dużą skalę, aby zapewnić szerszy widok majątku danych, zobacz następujące linki, aby dowiedzieć się więcej:

Ważne

Uruchamianie ocen na dużą skalę dla wielu baz danych można również zautomatyzować przy użyciu narzędzia wiersza polecenia DMA, które umożliwia również przekazywanie wyników do usługi Azure Migrate w celu dalszej analizy i gotowości docelowej.

Wdrażanie w wystąpieniu zarządzanym o optymalnym rozmiarze

Możesz użyć rozszerzenia migracji usługi Azure SQL dla usługi Azure Data Studio , aby uzyskać rekomendację dotyczącą usługi Azure SQL Managed Instance o odpowiednim rozmiarze. Rozszerzenie zbiera dane wydajności ze źródłowego wystąpienia programu SQL Server, aby zapewnić odpowiednie zalecenie dotyczące platformy Azure spełniające wymagania dotyczące wydajności obciążenia przy minimalnym koszcie. Aby dowiedzieć się więcej, zobacz Get right-size Azure recommendation for your on-premises SQL Server database(s) (Uzyskiwanie odpowiednich rozmiarów zaleceń dotyczących platformy Azure dla lokalnych baz danych programu SQL Server)

Na podstawie informacji w fazie odnajdywania i oceny utwórz odpowiednio rozmiar docelowego wystąpienia zarządzanego SQL. Możesz to zrobić przy użyciu witryny Azure Portal, programu PowerShell lub szablonu usługi Azure Resource Manager (ARM).

Wystąpienie zarządzane SQL jest dostosowane do obciążeń lokalnych, które planują przenieść się do chmury. Wprowadza ona model zakupów, który zapewnia większą elastyczność podczas wybierania odpowiedniego poziomu zasobów dla obciążeń. W środowisku lokalnym prawdopodobnie przyzwyczaisz się do ustalania rozmiarów tych obciążeń przy użyciu rdzeni fizycznych i przepustowości operacji we/wy. Model zakupów dla wystąpienia zarządzanego jest oparty na rdzeniach wirtualnych lub "rdzeniach wirtualnych", z dodatkowym magazynem i operacjami we/wy dostępnymi oddzielnie. Model rdzeni wirtualnych to prostszy sposób zrozumienia wymagań obliczeniowych w chmurze w porównaniu z tym, co jest obecnie używane lokalnie. Ten model zakupów umożliwia właściwe ustawianie rozmiaru środowiska docelowego w chmurze. Poniżej opisano niektóre ogólne wytyczne, które mogą pomóc w wyborze odpowiedniej warstwy usług i właściwości:

  • Na podstawie bazowego użycia procesora CPU można aprowizować wystąpienie zarządzane zgodne z liczbą rdzeni używanych w programie SQL Server, mając na uwadze, że cechy procesora CPU mogą być skalowane w celu dopasowania do cech maszyn wirtualnych, w których zainstalowano wystąpienie zarządzane.
  • Na podstawie użycia pamięci punktu odniesienia wybierz warstwę usługi, która ma zgodną pamięć. Nie można bezpośrednio wybrać ilości pamięci, więc należy wybrać wystąpienie zarządzane z ilością rdzeni wirtualnych, które mają zgodną pamięć (na przykład 5,1 GB/rdzeń wirtualny w standardowej serii (Gen5)).
  • Na podstawie bazowego opóźnienia operacji we/wy podsystemu plików wybierz warstwy usługi Ogólnego przeznaczenia (opóźnienie większe niż 5 ms) i Krytyczne dla działania firmy (opóźnienie mniejsze niż 3 ms).
  • Na podstawie przepływności punktu odniesienia należy wstępnie przydzielić rozmiar plików danych lub dzienników, aby uzyskać oczekiwaną wydajność operacji we/wy.

Możesz wybrać zasoby obliczeniowe i magazynowe w czasie wdrażania, a następnie zmienić je później bez konieczności wprowadzania przestojów dla aplikacji przy użyciu witryny Azure Portal:

Managed Instance Sizing

Aby dowiedzieć się, jak utworzyć infrastrukturę sieci wirtualnej i wystąpienie zarządzane, zobacz Tworzenie wystąpienia zarządzanego.

Ważne

Należy zachować docelową sieć wirtualną i podsieć zgodnie z wymaganiami dotyczącymi sieci wirtualnej wystąpienia zarządzanego. Każda niezgodność może uniemożliwić tworzenie nowych wystąpień lub używanie utworzonych już wystąpień. Dowiedz się więcej o tworzeniu nowych i konfigurowaniu istniejących sieci.

Migrate

Po zakończeniu zadań skojarzonych z etapem przed migracją możesz przystąpić do przeprowadzania migracji schematu i danych.

Migrowanie danych przy użyciu wybranej metody migracji.

Usługa SQL Managed Instance jest przeznaczona dla scenariuszy użytkowników wymagających masowej migracji bazy danych z implementacji lokalnej bazy danych lub bazy danych maszyn wirtualnych platformy Azure. Są one optymalnym wyborem w przypadku konieczności podniesienia i przesunięcia zaplecza aplikacji, które regularnie korzystają z funkcji poziomu wystąpienia i/lub między bazami danych. Jeśli jest to twój scenariusz, możesz przenieść całe wystąpienie na odpowiednie środowisko na platformie Azure bez konieczności zmieniania architektury aplikacji.

Aby przenieść wystąpienia SQL, należy dokładnie zaplanować:

  • Migracja wszystkich baz danych, które muszą być posuwane (te uruchomione w tym samym wystąpieniu).
  • Migracja obiektów na poziomie wystąpienia, od których zależy aplikacja, w tym identyfikatorów logowania, poświadczeń, zadań i operatorów agenta SQL oraz wyzwalaczy na poziomie serwera.

SQL Managed Instance to usługa zarządzana, która umożliwia delegowanie niektórych regularnych działań administratora bazy danych do platformy w miarę ich tworzenia. W związku z tym niektóre dane na poziomie wystąpienia nie muszą być migrowane, takie jak zadania konserwacji dla zwykłych kopii zapasowych lub zawsze włączonej konfiguracji, ponieważ wbudowana jest wysoka dostępność .

W tym artykule omówiono dwie zalecane opcje migracji:

  • Rozszerzenie migracji usługi Azure SQL dla usługi Azure Data Studio — migracja z niemal zerowym przestojem.
  • Natywny RESTORE DATABASE FROM URL — używa natywnych kopii zapasowych z programu SQL Server i wymaga przestoju.

W tym przewodniku opisano dwie najbardziej popularne opcje — Azure Database Migration Service (DMS) i natywną kopię zapasową i przywracanie.

Aby zapoznać się z innymi narzędziami migracji, zobacz Porównanie opcji migracji.

Migrowanie przy użyciu rozszerzenia migracji usługi Azure SQL dla usługi Azure Data Studio (minimalny przestój)

Aby przeprowadzić minimalną migrację przestojów przy użyciu narzędzia Azure Data Studio, wykonaj poniższe kroki wysokiego poziomu. Aby uzyskać szczegółowy samouczek krok po kroku, zobacz Migrowanie programu SQL Server do usługi Azure SQL Managed Instance w trybie online przy użyciu narzędzia Azure Data Studio:

  1. Pobierz i zainstaluj program Azure Data Studio oraz rozszerzenie migracji usługi Azure SQL.
  2. Uruchom kreatora Migracja do usługi Azure SQL Migration w rozszerzeniu w narzędziu Azure Data Studio.
  3. Wybierz bazy danych do oceny i wyświetl gotowość lub problemy dotyczące migracji (jeśli istnieją). Ponadto zbierz dane dotyczące wydajności i uzyskaj odpowiednie rekomendacje dotyczące platformy Azure.
  4. Wybierz swoje konto platformy Azure i docelową usługę Azure SQL Managed Instance z subskrypcji.
  5. Wybierz lokalizację kopii zapasowych bazy danych. Kopie zapasowe bazy danych mogą znajdować się w lokalnym udziale sieciowym lub w kontenerze usługi Azure Blob Storage.
  6. Utwórz nową usługę Azure Database Migration Service przy użyciu kreatora w narzędziu Azure Data Studio. Jeśli wcześniej utworzono usługę Azure Database Migration Service przy użyciu narzędzia Azure Data Studio, możesz ponownie użyć jej w razie potrzeby.
  7. Opcjonalnie: Jeśli kopie zapasowe znajdują się w lokalnym udziale sieciowym, pobierz i zainstaluj własne środowisko Integration Runtime na maszynie, która może łączyć się ze źródłowym programem SQL Server i lokalizacją zawierającą pliki kopii zapasowej.
  8. Uruchom migrację bazy danych i monitoruj postęp w narzędziu Azure Data Studio. Postęp można również monitorować w ramach zasobu usługi Azure Database Migration Service w witrynie Azure Portal.
  9. Ukończ migrację jednorazową.
    1. Zatrzymaj wszystkie transakcje przychodzące do źródłowej bazy danych.
    2. Wprowadź zmiany konfiguracji aplikacji, aby wskazywały docelową bazę danych w usłudze Azure SQL Managed Instance.
    3. Wykonaj wszystkie kopie zapasowe dziennika tail dla źródłowej bazy danych w określonej lokalizacji kopii zapasowej.
    4. Upewnij się, że wszystkie kopie zapasowe bazy danych mają stan Przywrócony na stronie szczegółów monitorowania.
    5. Na stronie szczegółów monitorowania wybierz pozycję Zakończ przeniesienie.

Tworzenie kopii zapasowej i przywracanie

Jedną z kluczowych funkcji usługi Azure SQL Managed Instance w celu umożliwienia szybkiej i łatwej migracji bazy danych jest natywne przywracanie plików kopii zapasowej bazy danych (.bak) przechowywanych w usłudze Azure Storage. Tworzenie kopii zapasowych i przywracanie to operacje asynchroniczne na podstawie rozmiaru bazy danych.

Poniższy diagram zawiera ogólne omówienie procesu:

Diagram shows SQL Server with an arrow labeled BACKUP / Upload to URL flowing to Azure Storage and a second arrow labeled RESTORE from URL flowing from Azure Storage to a SQL Managed Instance.

Uwaga

Czas na utworzenie kopii zapasowej, przekazanie jej do usługi Azure Storage i wykonanie natywnej operacji przywracania w usłudze Azure SQL Managed Instance zależy od rozmiaru bazy danych. Uwzględnij wystarczający przestój, aby uwzględnić operację dla dużych baz danych.

Poniższa tabela zawiera więcej informacji na temat metod, których można użyć w zależności od używanej wersji źródłowej programu SQL Server:

Krok Aparat SQL i wersja Metoda tworzenia/przywracania kopii zapasowej
Umieszczanie kopii zapasowej w usłudze Azure Storage Przed 2012 r. z dodatkiem SP1 CU2 Przekazywanie pliku bak bezpośrednio do usługi Azure Storage
2012 SP1 CU2 - 2016 Bezpośrednia kopia zapasowa przy użyciu przestarzałej składni POŚWIADCZEŃ
2016 i nowsze Bezpośrednie tworzenie kopii zapasowej przy użyciu POŚWIADCZEŃ SYGNATURY dostępu współdzielonego
Przywracanie z usługi Azure Storage do wystąpienia zarządzanego PRZYWRACANIE Z ADRESU URL przy użyciu POŚWIADCZEŃ SYGNATURY DOSTĘPU WSPÓŁDZIELONEGO

Ważne

  • W przypadku migrowania bazy danych chronionej przez funkcję Transparent Data Encryption do wystąpienia zarządzanego przy użyciu natywnej opcji przywracania odpowiedni certyfikat z lokalnej maszyny wirtualnej lub programu SQL Server maszyny wirtualnej platformy Azure musi zostać zmigrowany przed przywróceniem bazy danych. Aby uzyskać szczegółowe instrukcje, zobacz Migrowanie certyfikatu TDE do wystąpienia zarządzanego.
  • Przywracanie systemowych baz danych nie jest obsługiwane. Aby przeprowadzić migrację obiektów na poziomie wystąpienia (przechowywanych w master bazach danych lub msdb bazach danych), zalecamy wykonanie skryptów języka T-SQL i uruchomienie ich w wystąpieniu docelowym.

Aby przeprowadzić migrację przy użyciu kopii zapasowej i przywracania, wykonaj następujące kroki:

  1. Utwórz kopię zapasową bazy danych w usłudze Azure Blob Storage. Na przykład użyj kopii zapasowej do adresu URL w programie SQL Server Management Studio. Użyj narzędzia Microsoft Azure, aby obsługiwać bazy danych starsze niż SQL Server 2012 SP1 CU2.

  2. Połączenie do usługi Azure SQL Managed Instance przy użyciu programu SQL Server Management Studio.

  3. Utwórz poświadczenia przy użyciu sygnatury dostępu współdzielonego, aby uzyskać dostęp do konta usługi Azure Blob Storage przy użyciu kopii zapasowych bazy danych. Przykład:

    CREATE CREDENTIAL [https://mitutorials.blob.core.windows.net/databases]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE'
    , SECRET = 'sv=2017-11-09&ss=bfqt&srt=sco&sp=rwdlacup&se=2028-09-06T02:52:55Z&st=2018-09-04T18:52:55Z&spr=https&sig=WOTiM%2FS4GVF%2FEEs9DGQR9Im0W%2BwndxW2CQ7%2B5fHd7Is%3D'
    
  4. Przywróć kopię zapasową z kontenera obiektów blob usługi Azure Storage. Przykład:

    RESTORE DATABASE [TargetDatabaseName] FROM URL =
      'https://mitutorials.blob.core.windows.net/databases/WideWorldImporters-Standard.bak'
    
  5. Po zakończeniu przywracania wyświetl bazę danych w Eksplorator obiektów w programie SQL Server Management Studio.

Aby dowiedzieć się więcej na temat tej opcji migracji, zobacz Przywracanie bazy danych do usługi Azure SQL Managed Instance przy użyciu programu SSMS.

Uwaga

Operacja przywracania bazy danych jest asynchroniczna i może zostać ponowiona. Jeśli połączenie wygaśnie lub upłynął limit czasu, może wystąpić błąd w programie SQL Server Management Studio. Usługa Azure SQL Database będzie nadal próbować przywrócić bazę danych w tle i śledzić postęp przywracania przy użyciu widoków sys.dm_exec_requests i sys.dm_operation_status .

Synchronizacja danych i migracja jednorazowa

W przypadku korzystania z opcji migracji, które stale replikują/synchronizują zmiany danych ze źródła do miejsca docelowego, dane źródłowe i schemat mogą zmieniać się i dryfować z miejsca docelowego. Podczas synchronizacji danych upewnij się, że wszystkie zmiany w źródle są przechwytywane i stosowane do obiektu docelowego podczas procesu migracji.

Po sprawdzeniu, czy dane są takie same zarówno w źródle, jak i docelowym, można wyciąć ze źródła do środowiska docelowego. Ważne jest, aby zaplanować proces migracji jednorazowej z zespołami biznesowymi/zespołami aplikacji, aby zapewnić minimalną przerwę podczas migracji jednorazowej, nie ma wpływu na ciągłość działalności biznesowej.

Ważne

Aby uzyskać szczegółowe informacje na temat konkretnych kroków związanych z wykonywaniem migracji jednorazowej w ramach migracji przy użyciu usługi DMS, zobacz Wykonywanie migracji jednorazowej.

Po migracji

Po pomyślnym zakończeniu etapu migracji zapoznaj się z serią zadań wykonywanych po migracji, aby upewnić się, że wszystko działa bezproblemowo i wydajnie.

Faza po migracji ma kluczowe znaczenie dla uzgadniania wszelkich problemów z dokładnością danych i weryfikowania kompletności oraz rozwiązywania problemów z wydajnością obciążenia.

Monitorowanie i korygowanie aplikacji

Po zakończeniu migracji do wystąpienia zarządzanego należy śledzić zachowanie aplikacji i wydajność obciążenia. Ten proces obejmuje następujące działania:

Wykonywanie testów

Podejście testowe do migracji bazy danych składa się z następujących działań:

  1. Opracowywanie testów weryfikacji: aby przetestować migrację bazy danych, należy użyć zapytań SQL. Należy utworzyć zapytania sprawdzania poprawności, aby działały zarówno względem źródłowych, jak i docelowych baz danych. Zapytania sprawdzania poprawności powinny obejmować zdefiniowany zakres.
  2. Konfigurowanie środowiska testowego: środowisko testowe powinno zawierać kopię źródłowej bazy danych i docelowej bazy danych. Pamiętaj, aby odizolować środowisko testowe.
  3. Uruchom testy weryfikacyjne: uruchom testy weryfikacyjne względem źródła i elementu docelowego, a następnie przeanalizuj wyniki.
  4. Uruchamianie testów wydajnościowych: uruchom test wydajnościowy względem źródła i obiektu docelowego, a następnie przeanalizuj i porównaj wyniki.

Korzystanie z funkcji zaawansowanych

Możesz skorzystać z zaawansowanych funkcji opartych na chmurze oferowanych przez usługę SQL Managed Instance, takich jak wbudowana wysoka dostępność, wykrywanie zagrożeń i monitorowanie i dostrajanie obciążenia.

Usługa Azure SQL Analytics umożliwia monitorowanie dużego zestawu wystąpień zarządzanych w scentralizowany sposób.

Niektóre funkcje programu SQL Server są dostępne tylko po zmianie poziomu zgodności bazy danych na najnowszy poziom zgodności (150).

Następne kroki