Bermigrasi dari SQL Server yang dikelola sendiri menggunakan Grup Ketersediaan Terdistribusi

Panduan ini menunjukkan cara memigrasikan database dari instance SQL Server Enterprise Edition yang dikelola sendiri ke Cloud SQL untuk SQL Server Enterprise Edition melalui koneksi jaringan pribadi menggunakan Distributed Availability Group (DAG) di Database Migration Service.

Dengan migrasi DAG, Database Migration Service menstreaming pemuatan penuh awal (dikenal sebagai fase FULL_DUMP) dan replikasi log transaksi berkelanjutan (dikenal sebagai fase Change Data Capture - CDC) langsung melalui jaringan antara Grup Ketersediaan sumber dan Grup Ketersediaan Cloud SQL untuk SQL Server tujuan Anda. Untuk mengetahui informasi selengkapnya tentang arsitektur, prasyarat, dan batasan migrasi DAG, lihat Tentang migrasi Distributed Availability Group (DAG). Untuk melakukan migrasi menggunakan file cadangan yang disimpan di Cloud Storage, lihat Memigrasikan database SQL Server ke Cloud SQL untuk SQL Server.

Untuk melakukan migrasi Distributed Availability Group, selesaikan tugas-tugas umum berikut:

  1. Membuat dan menyiapkan instance Cloud SQL untuk SQL Server tujuan Anda.
  2. Siapkan instance SQL Server dan Grup Ketersediaan sumber Anda.
  3. Buat konektivitas jaringan pribadi dua arah dan konfigurasikan Linked Server.
  4. Membuat profil koneksi dan menjalankan tugas migrasi.
  5. Pantau dan verifikasi migrasi Anda.
  6. Mempromosikan, melakukan failback, atau menyelesaikan migrasi.

Biaya

Untuk migrasi homogen ke Cloud SQL, Database Migration Service ditawarkan tanpa biaya tambahan. Namun, harga standar Cloud SQL dan jaringan tetap berlaku. Untuk memperkirakan biaya penggunaan, gunakan kalkulator harga.

Sebelum memulai

  1. Pastikan database sumber dan tujuan Anda memenuhi semua prasyarat dan batasan untuk migrasi Distributed Availability Group (termasuk menjalankan Enterprise Edition, menyimpan file data di direktori data default, dan tidak menggunakan sa sebagai pemilik database). Lihat Tentang migrasi Distributed Availability Group (DAG).
  2. Pilih region Google Cloud untuk migrasi Anda. Database Migration Service adalah produk yang sepenuhnya regional; semua entity yang terkait dengan migrasi Anda (profil koneksi sumber dan tujuan, tugas migrasi, dan instance Cloud SQL untuk SQL Server tujuan) harus berada di region yang sama.
  3. Di konsol Google Cloud , pada halaman pemilih project, pilih atau buat project Google Cloud .

    Buka pemilih project

  4. Aktifkan API Database Migration Service, Compute Engine, dan Cloud SQL Admin.

    Aktifkan API

Peran yang diperlukan

Pastikan peran IAM berikut diberikan di projectGoogle Cloud Anda:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Membuat dan menyiapkan instance Cloud SQL untuk SQL Server tujuan Anda

Pada langkah ini, Anda akan membuat instance Cloud SQL untuk SQL Server Enterprise Edition tujuan dan mengaktifkan flag database yang diperlukan untuk Server Tertaut.

  1. Buat instance Cloud SQL untuk SQL Server tujuan Anda. Untuk mengetahui petunjuk pembuatan yang mendetail, lihat Membuat instance Cloud SQL untuk SQL Server. Pastikan instance Anda memenuhi persyaratan berikut untuk migrasi Distributed Availability Group:
    • Pilih Enterprise Edition (versi 2017, 2019, 2022, atau 2025).
    • Konfigurasikan jaringan pribadi agar sesuai dengan cara Anda berencana menghubungkan instance SQL Server sumber dan instance Cloud SQL untuk SQL Server tujuan. Aktifkan Akses Layanan Pribadi jika Anda berencana menghubungkan instance melalui peering Virtual Private Cloud, atau gunakan Private Service Connect jika Anda berencana menghubungkan instance menggunakan endpoint Private Service Connect masuk dan lampiran jaringan Private Service Connect keluar.

      Jangan aktifkan Akses Layanan Pribadi dan Private Service Connect pada instance Cloud SQL untuk SQL Server tujuan yang sama. Cloud SQL untuk SQL Server tidak mendukung Server Tertaut jika keduanya diaktifkan. Untuk mengetahui detail penyiapan jaringan selengkapnya, lihat Membuat konektivitas jaringan pribadi dua arah.

    • Biarkan Pemulihan point-in-time (PITR) dinonaktifkan dan jangan tambahkan replika baca hingga Anda menyelesaikan dan menghapus tugas migrasi DAG.
    • Jika ada database sumber yang dimiliki oleh login Windows Active Directory, ubah pemilik database sumber menjadi login SQL sebelum bermigrasi, atau gabungkan instance Cloud SQL untuk SQL Server tujuan ke Active Directory agar Database Migration Service dapat otomatis membuat login Windows yang sesuai di instance tujuan saat tugas migrasi dimulai. Untuk mengetahui petunjuknya, lihat Mengonfigurasi Microsoft AD Terkelola untuk Cloud SQL untuk SQL Server.
  2. Aktifkan flag database cloudsql enable linked servers (tetapkan ke on) di instance Cloud SQL untuk SQL Server tujuan Anda. Untuk mengetahui petunjuk tentang cara menetapkan flag, lihat Mengelola server tertaut dan Mengonfigurasi flag database.

    Flag ini diperlukan pada tahap selanjutnya dalam panduan ini saat Anda membuat dan memverifikasi Server Tertaut di instance Cloud SQL untuk SQL Server tujuan.

Menyiapkan instance SQL Server sumber

Pada langkah ini, Anda akan mengaktifkan Grup Ketersediaan Always On di instance SQL Server sumber, membuat endpoint dan sertifikat Database Mirroring, membuat login SQL khusus untuk Database Migration Service, dan menyiapkan Grup Ketersediaan sumber.

Mengaktifkan Grup Ketersediaan Always On

Pastikan fitur Always On Availability Groups diaktifkan di instance SQL Server sumber Anda:

Membuat endpoint dan sertifikat Database Mirroring

Di SQL Server, Grup Ketersediaan Terdistribusi mengalirkan data dan log transaksi antar-instance melalui endpoint TCP DATABASE_MIRRORING (DBM) (port default 5022). Karena instance SQL Server yang Anda kelola sendiri dan instance Cloud SQL untuk SQL Server tujuan Anda adalah instance mandiri, keduanya memerlukan autentikasi bersama berbasis sertifikat dan enkripsi AES untuk membangun kepercayaan melalui endpoint DBM.

Anda hanya perlu membuat sertifikat dan mengikatnya ke endpoint DATABASE_MIRRORING di instance SQL Server sumber. Anda tidak perlu mengekspor file sertifikat secara manual atau membuat sertifikat di instance Cloud SQL untuk SQL Server tujuan:

  • Saat Anda memulai tugas migrasi, Database Migration Service akan otomatis mengonfigurasi endpoint dan sertifikat DATABASE_MIRRORING di instance Cloud SQL untuk SQL Server tujuan dan menggunakan Server Tertaut Anda untuk bertukar kunci publik antara kedua instance.
  • Saat Anda menghapus tugas migrasi setelah menyelesaikan peralihan, Database Migration Service akan otomatis menghapus sertifikat yang diimpor dari kedua instance.

Jika instance SQL Server sumber Anda belum memiliki endpoint DATABASE_MIRRORING yang diautentikasi dengan sertifikat, buat endpoint:

  1. Hubungkan ke instance sumber Anda dengan klien SQL, misalnya utilitas sqlcmd.
  2. Jalankan perintah T-SQL berikut untuk membuat kunci master database, sertifikat, dan endpoint DATABASE_MIRRORING yang memproses port DBM yang Anda pilih (default 5022):
    USE [master];
    GO
    
    IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
    BEGIN
        CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MASTER_KEY_PASSWORD';
    END
    GO
    
    CREATE CERTIFICATE [SOURCE_CERT_NAME]
        WITH SUBJECT = 'AlwaysOn AG Certificate',
        EXPIRY_DATE = 'CERT_EXPIRY_DATE';
    GO
    
    CREATE ENDPOINT [HADR_ENDPOINT_NAME]
        STATE = STARTED
        AS TCP (LISTENER_PORT = SOURCE_DBM_PORT_NUMBER)
        FOR DATABASE_MIRRORING (
            ROLE = ALL,
            AUTHENTICATION = CERTIFICATE [SOURCE_CERT_NAME],
            ENCRYPTION = REQUIRED ALGORITHM AES
        );
    GO

    Ganti kode berikut:

    • MASTER_KEY_PASSWORD dengan sandi untuk mengenkripsi kunci master database.
    • SOURCE_CERT_NAME dengan nama untuk sertifikat Database Mirroring sumber Anda (misalnya, dbmCertificate).
    • CERT_EXPIRY_DATE dengan tanggal habis masa berlaku untuk sertifikat dalam format YYYYMMDD.
    • HADR_ENDPOINT_NAME dengan nama endpoint Database Mirroring Anda.
    • SOURCE_DBM_PORT_NUMBER dengan nomor port TCP untuk traffic Database Mirroring (default 5022).

Membuat login dan izin Database Migration Service khusus

Database Migration Service terhubung ke instance SQL Server sumber Anda melalui Server Tertaut menggunakan login SQL khusus yang Anda berikan di profil koneksi sumber. Anda dapat mengonfigurasi login ini dengan memberikan peran server sysadmin atau dengan mengonfigurasi izin hak istimewa terendah dengan database helper gcp_dms_db:

Memberikan peran sysadmin

Jika kebijakan keamanan Anda mengizinkan pemberian peran server sysadmin ke login migrasi, jalankan perintah T-SQL berikut:

USE [master];
GO
CREATE LOGIN [SOURCE_USERNAME] WITH PASSWORD = 'SOURCE_PASSWORD';
CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME];
ALTER SERVER ROLE [sysadmin] ADD MEMBER [SOURCE_USERNAME];
GRANT CONNECT ON ENDPOINT::[HADR_ENDPOINT_NAME] TO [SOURCE_USERNAME];
GO

Ganti kode berikut:

  • SOURCE_USERNAME dengan nama login SQL yang digunakan Database Migration Service untuk terhubung ke instance sumber Anda (misalnya, cloud_dms_login).
  • SOURCE_PASSWORD dengan sandi untuk login SOURCE_USERNAME.
  • SOURCE_USER dengan nama pengguna database yang dipetakan ke SOURCE_USERNAME (misalnya, cloud_dms_user).
  • HADR_ENDPOINT_NAME dengan nama endpoint Database Mirroring Anda (misalnya, Hadr_endpoint).

Hak istimewa terendah (gcp_dms_db)

Jika kebijakan keamanan Anda melarang pemberian sysadmin ke login migrasi, buat database helper gcp_dms_db khusus (dimiliki oleh sa dengan TRUSTWORTHY ON), buat tiga prosedur tersimpan wrapper Database Migration Service, dan berikan izin terperinci ke login migrasi Anda:

USE [master];
GO

CREATE DATABASE [gcp_dms_db];
GO

ALTER AUTHORIZATION ON DATABASE::[gcp_dms_db] TO [sa];
ALTER DATABASE [gcp_dms_db] SET TRUSTWORTHY ON;
GO

USE [gcp_dms_db];
GO

CREATE OR ALTER PROCEDURE dbo.gcp_dms_set_dag_commit_mode
    @dag_name NVARCHAR(128),
    @source_ag NVARCHAR(128),
    @dest_ag NVARCHAR(128),
    @commit_mode NVARCHAR(30)
WITH EXECUTE AS 'dbo'
AS
BEGIN
    SET NOCOUNT ON;
    IF @commit_mode NOT IN ('SYNCHRONOUS_COMMIT', 'ASYNCHRONOUS_COMMIT')
    BEGIN
        RAISERROR('Invalid commit mode. Must be SYNCHRONOUS_COMMIT or ASYNCHRONOUS_COMMIT.', 16, 1);
        RETURN;
    END
    DECLARE @sql NVARCHAR(MAX);
    SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) +
               N' MODIFY AVAILABILITY GROUP ON ' +
               QUOTENAME(@source_ag, '''') + N' WITH (AVAILABILITY_MODE = ' + @commit_mode + N'), ' +
               QUOTENAME(@dest_ag, '''') + N' WITH (AVAILABILITY_MODE = ' + @commit_mode + N');';
    EXECUTE sp_executesql @sql;
END;
GO

CREATE OR ALTER PROCEDURE dbo.gcp_dms_set_dag_secondary
    @dag_name NVARCHAR(128)
WITH EXECUTE AS 'dbo'
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @sql NVARCHAR(MAX);
    SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) + N' SET (ROLE = SECONDARY);';
    EXECUTE sp_executesql @sql;
END;
GO

CREATE OR ALTER PROCEDURE dbo.gcp_dms_failover_dag
    @dag_name NVARCHAR(128)
WITH EXECUTE AS 'dbo'
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @sql NVARCHAR(MAX);
    SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) + N' FORCE_FAILOVER_ALLOW_DATA_LOSS;';
    EXECUTE sp_executesql @sql;
END;
GO

USE [master];
GO

CREATE LOGIN [SOURCE_USERNAME] WITH PASSWORD = 'SOURCE_PASSWORD';
CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME];
GRANT VIEW SERVER STATE TO [SOURCE_USERNAME];
-- Note: Run GRANT VIEW SERVER PERFORMANCE STATE on SQL Server 2022 and later:
GRANT VIEW SERVER PERFORMANCE STATE TO [SOURCE_USERNAME];
GRANT VIEW ANY DEFINITION TO [SOURCE_USERNAME];
GRANT ALTER ANY AVAILABILITY GROUP TO [SOURCE_USERNAME];
GRANT CONNECT ON ENDPOINT::[HADR_ENDPOINT_NAME] TO [SOURCE_USERNAME];
GRANT CREATE CERTIFICATE TO [SOURCE_USER];
GO

USE [gcp_dms_db];
GO

CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME];
GRANT EXECUTE ON dbo.gcp_dms_set_dag_commit_mode TO [SOURCE_USER];
GRANT EXECUTE ON dbo.gcp_dms_set_dag_secondary TO [SOURCE_USER];
GRANT EXECUTE ON dbo.gcp_dms_failover_dag TO [SOURCE_USER];
GO

-- Repeat the following block for EACH user database in your source Availability Group:
USE [DATABASE_NAME];
GO

CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME];
ALTER ROLE [db_backupoperator] ADD MEMBER [SOURCE_USER];
GO

Ganti kode berikut:

  • SOURCE_USERNAME dengan nama login SQL yang digunakan Database Migration Service untuk terhubung ke instance sumber Anda (misalnya, cloud_dms_login).
  • SOURCE_PASSWORD dengan sandi untuk login SOURCE_USERNAME.
  • SOURCE_USER dengan nama pengguna database yang dipetakan ke SOURCE_USERNAME (misalnya, cloud_dms_user).
  • HADR_ENDPOINT_NAME dengan nama endpoint Database Mirroring Anda (misalnya, Hadr_endpoint).
  • DATABASE_NAME dengan nama setiap database sumber di Grup Ketersediaan Anda. Pemberian db_backupoperator pada setiap database yang dimigrasikan diperlukan oleh verifikasi preflight Database Migration Service dan memungkinkan pengosongan log transaksi dengan CHECKPOINT selama promosi.

Menyiapkan database sumber dan Grup Ketersediaan

Anda dapat memigrasikan database dari Grup Ketersediaan Always On yang ada atau membuat Grup Ketersediaan mandiri baru (CLUSTER_TYPE = NONE). Sebelum melanjutkan, verifikasi persyaratan berikut:

  • Setiap database dalam Grup Ketersediaan menggunakan model pemulihan FULL, tidak dimiliki oleh sa, dan menyimpan file datanya (.mdf dan .ndf) di direktori data default.
  • Jika Anda menggunakan kembali Grup Ketersediaan yang ada, pastikan endpoint Pencerminan Database Anda dikonfigurasi di port 5022 (atau port DBM yang Anda pilih), bahwa SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL) diaktifkan pada replika sehingga database sekunder tetap dapat dibaca dengan string koneksi standar setelah promosi membalik peran DAG, dan login migrasi Anda memiliki CONNECT ON ENDPOINT. Jika Grup Ketersediaan sumber Anda memiliki beberapa replika dan pemroses Grup Ketersediaan yang dikonfigurasi, gunakan alamat IP pemroses sebagai <var>SOURCE_HOST_IP_ADDRESS</var> saat mengonfigurasi Server Tertaut dan profil koneksi sumber agar migrasi dapat dilanjutkan jika terjadi failover di Grup Ketersediaan sumber.

Untuk menyiapkan database dan membuat Grup Ketersediaan mandiri baru (CLUSTER_TYPE = NONE), jalankan perintah T-SQL berikut:

USE [master];
GO

ALTER DATABASE [DATABASE_NAME] SET RECOVERY FULL;
GO

-- If the database is owned by 'sa', change the owner to another login:
ALTER AUTHORIZATION ON DATABASE::[DATABASE_NAME] TO [DB_OWNER_LOGIN];
GO

-- Initialize the local SQL Server transaction log chain for the Availability Group:
BACKUP DATABASE [DATABASE_NAME] TO DISK = 'NUL';
GO

CREATE AVAILABILITY GROUP [SOURCE_AVAILABILITY_GROUP_NAME] WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON N'SOURCE_SERVER_NAME' WITH (
        ENDPOINT_URL = N'TCP://localhost:SOURCE_DBM_PORT_NUMBER',
        FAILOVER_MODE = MANUAL,
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        SEEDING_MODE = MANUAL,
        PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE),
        SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
    );
GO

ALTER AVAILABILITY GROUP [SOURCE_AVAILABILITY_GROUP_NAME] ADD DATABASE [DATABASE_NAME];
GO

Ganti kode berikut:

  • DATABASE_NAME dengan nama database yang akan disertakan dalam Grup Ketersediaan Anda.
  • DB_OWNER_LOGIN dengan login non-sa untuk memiliki database.
  • SOURCE_AVAILABILITY_GROUP_NAME dengan nama Grup Ketersediaan sumber Anda (misalnya, source_ag).
  • SOURCE_SERVER_NAME dengan nama server instance SQL Server sumber Anda (yang cocok dengan nilai yang ditampilkan oleh SELECT @@SERVERNAME).
  • SOURCE_DBM_PORT_NUMBER dengan nomor port TCP endpoint Database Mirroring Anda (default 5022).

Membuat konektivitas jaringan pribadi dua arah

Untuk migrasi DAG, Database Migration Service berkomunikasi dengan instance Cloud SQL untuk SQL Server tujuan Anda melalui API Google Cloud internal, menjalankan kueri orkestrasi pada instance SQL Server sumber Anda melalui Server Tertaut di instance Cloud SQL untuk SQL Server tujuan, dan mengalirkan data langsung antara kedua instance melalui jaringan pribadi. Migrasi ini mengharuskan Anda membuat konektivitas IP pribadi dua arah secara langsung antara host SQL Server sumber dan instance Cloud SQL untuk SQL Server tujuan melalui jaringan Virtual Private Cloud Anda. Konektivitas IP publik antara instance sumber dan tujuan tidak didukung.

Port dan alamat IP yang diperlukan

Konfigurasi jaringan Anda harus mengizinkan traffic antara instance SQL Server sumber dan instance Cloud SQL untuk SQL Server tujuan di dua port TCP berikut:

Port Arah Tujuan
Port database SQL Server (default 1433) Dari instance Cloud SQL untuk SQL Server tujuan ke instance SQL Server sumber Digunakan oleh Server Tertaut di instance Cloud SQL untuk SQL Server tujuan Anda untuk menjalankan validasi preflight, pertukaran sertifikat, dan kueri orkestrasi DAG di instance sumber Anda.
Port Database Mirroring (DBM) (default 5022) Dua arah antara instance SQL Server sumber dan instance Cloud SQL untuk SQL Server tujuan Digunakan oleh Grup Ketersediaan sumber dan tujuan untuk melakukan streaming pemuatan penuh awal selama FULL_DUMP, perubahan database yang sedang berlangsung selama CDC, dan replikasi terbalik selama FAILBACK.

Saat mengonfigurasi Server Tertaut dan profil koneksi nanti dalam panduan ini, Anda akan memberikan dua alamat IP pribadi:

  • SOURCE_HOST_IP_ADDRESS (digunakan dalam parameter @datasrc Server Tertaut dan flag --host profil koneksi sumber) adalah alamat IP pribadi host SQL Server sumber Anda (atau alamat IP pemroses Grup Ketersediaan, yang lebih disukai jika dikonfigurasi untuk Grup Ketersediaan sumber multi-replika sehingga migrasi dapat dilanjutkan jika terjadi failover di Grup Ketersediaan sumber) yang dapat dijangkau dari instance Cloud SQL untuk SQL Server tujuan Anda.
  • DESTINATION_HOST_IP_ADDRESS (digunakan dalam flag profil koneksi tujuan --host) adalah alamat IP pribadi instance Cloud SQL untuk SQL Server tujuan Anda (atau alamat IP endpoint Private Service Connect-nya) yang dapat dijangkau dari host SQL Server sumber Anda.

Mengonfigurasi metode jaringan pribadi Anda

Selesaikan konfigurasi pemilihan rute jaringan untuk metode jaringan (Akses Layanan Pribadi atau Private Service Connect) yang Anda aktifkan di instance Cloud SQL untuk SQL Server tujuan:

Akses Layanan Pribadi

Akses Layanan Pribadi melakukan peering jaringan Virtual Private Cloud Anda dengan jaringan Virtual Private Cloud produsen layanan yang dikelola Google yang menghosting instance Cloud SQL untuk SQL Server tujuan Anda:

  1. Pastikan jaringan Virtual Private Cloud Anda memiliki rentang alamat IPv4 internal yang dialokasikan dan koneksi pribadi (peering Virtual Private Cloud ke servicenetworking-googleapis-com) yang diaktifkan untuk instance Cloud SQL untuk SQL Server tujuan Anda. Untuk mengetahui petunjuknya, lihat Mengonfigurasi IP pribadi untuk Cloud SQL untuk SQL Server.
  2. Konfigurasikan pemilihan rute ke host SQL Server sumber berdasarkan tempat host tersebut dihosting:
    • Jika instance sumber Anda berjalan di virtual machine Compute Engine dalam jaringan Virtual Private Cloud yang sama, perutean tambahan tidak diperlukan. Mesin virtual dan instance Cloud SQL untuk SQL Server dapat menjangkau alamat IP pribadi satu sama lain secara langsung melalui koneksi peering Virtual Private Cloud.
    • Jika instance sumber Anda berjalan secara lokal, di penyedia cloud lain, atau di jaringan Virtual Private Cloud lain, selesaikan langkah-langkah berikut agar rute dipertukarkan di seluruh batas peering transitif:
      1. Hubungkan jaringan eksternal ke jaringan Virtual Private Cloud menggunakan Cloud VPN atau Cloud Interconnect. Untuk mengetahui petunjuknya, lihat Mengakses instance Cloud SQL dari sumber eksternal.
      2. Di Cloud Router, beritahukan rentang alamat IP yang dialokasikan Cloud SQL untuk SQL Server ke jaringan sumber Anda. Untuk mengetahui petunjuknya, lihat Memberitahukan rentang IP kustom.
      3. Perbarui koneksi peering servicenetworking-googleapis-com di jaringan Virtual Private Cloud Anda untuk mengaktifkan Ekspor rute kustom agar instance Cloud SQL untuk SQL Server mempelajari rute ke jaringan sumber Anda. Untuk mengetahui petunjuknya, lihat Memperbarui koneksi peering.
  3. Catat alamat IP pribadi untuk migrasi Anda:
    • Gunakan alamat IP internal host SQL Server sumber Anda sebagai SOURCE_HOST_IP_ADDRESS.
    • Gunakan Alamat IP pribadi yang ditetapkan ke instance Cloud SQL untuk SQL Server tujuan Anda (ditampilkan di halaman Ringkasan instance) sebagai DESTINATION_HOST_IP_ADDRESS.

Private Service Connect

Jika Anda menggunakan Private Service Connect, bukan Akses Layanan Pribadi, Anda harus mengonfigurasi endpoint Private Service Connect masuk (agar instance sumber Anda dapat terhubung ke Cloud SQL untuk SQL Server di port 5022) dan antarmuka Private Service Connect keluar (agar Cloud SQL untuk SQL Server dapat memulai koneksi Linked Server dan DAG ke instance sumber Anda di port 1433 dan 5022):

  1. Pastikan instance Cloud SQL untuk SQL Server tujuan Anda telah mengaktifkan Private Service Connect (tanpa IP Pribadi) dan menentukan project konsumen yang diizinkan. Untuk mengetahui petunjuknya, lihat Mengonfigurasi Private Service Connect.
  2. Untuk mengizinkan koneksi masuk dari host SQL Server sumber ke instance Cloud SQL untuk SQL Server tujuan, cadangkan alamat IP internal di subnet Virtual Private Cloud Anda dan buat endpoint Private Service Connect (aturan penerusan) yang menargetkan lampiran layanan instance Cloud SQL untuk SQL Server Anda. Untuk mengetahui petunjuknya, lihat Membuat endpoint Private Service Connect.
  3. Untuk mengizinkan koneksi keluar dari instance Cloud SQL untuk SQL Server tujuan ke host SQL Server sumber (diperlukan untuk koneksi Linked Server dan DAG keluar), buat lampiran jaringan Virtual Private Cloud di subnet yang dapat merutekan ke host sumber dan konfigurasikan konektivitas keluar Private Service Connect di instance Cloud SQL untuk SQL Server tujuan. Untuk mengetahui petunjuknya, lihat Membuat dan mengelola lampiran jaringan dan Mengonfigurasi konektivitas keluar Private Service Connect.
  4. Catat alamat IP pribadi untuk migrasi Anda:
    • Gunakan alamat IP pribadi host SQL Server sumber Anda sebagai SOURCE_HOST_IP_ADDRESS.
    • Gunakan alamat IP internal endpoint Private Service Connect (aturan penerusan) di jaringan Virtual Private Cloud Anda sebagai DESTINATION_HOST_IP_ADDRESS.

Mengonfigurasi Virtual Private Cloud dan aturan firewall host sumber

  1. Di jaringan Virtual Private Cloud Anda, buat aturan firewall ingress dan egress yang mengizinkan traffic TCP antara alamat IP SQL Server sumber Anda (SOURCE_HOST_IP_ADDRESS) dan rentang IP Cloud SQL untuk SQL Server tujuan Anda (atau endpoint Private Service Connect dan subnet lampiran jaringan) di port database (default 1433) dan port Database Mirroring (default 5022). Untuk mengetahui informasi selengkapnya tentang cara membuat aturan firewall, lihat Membuat aturan firewall.
  2. Di mesin SQL Server sumber, verifikasi setelan firewall jaringan dan host berikut:
    • TCP/IP diaktifkan di SQL Server Configuration Manager (atau mssql-conf di Linux) dan instance memproses port TCP statis (default 1433).
    • Firewall sistem operasi (seperti Windows Defender Firewall atau iptables atau firewalld Linux) mengizinkan koneksi TCP masuk di port database (default 1433) dan port Database Mirroring (default 5022), serta koneksi TCP keluar ke DESTINATION_HOST_IP_ADDRESS di port 5022.

Memverifikasi keterjangkauan dengan uji konektivitas Cloud SQL

Sebelum mengonfigurasi Server Tertaut, sebaiknya jalankan tiga uji konektivitas dari tab Connections > Connectivity tests pada instance Cloud SQL untuk SQL Server di konsol Google Cloud . Untuk mengetahui petunjuk tentang cara menjalankan uji konektivitas, lihat Mengelola uji konektivitas:

  1. Untuk menguji konektivitas Linked Server keluar di port 1433, tetapkan Source ke Current Cloud SQL instance, Destination ke SOURCE_HOST_IP_ADDRESS, dan Destination port ke 1433 (atau port database kustom Anda).
  2. Untuk menguji konektivitas Pencerminan Database keluar di port 5022, tetapkan Source ke Current Cloud SQL instance, Destination ke SOURCE_HOST_IP_ADDRESS, dan Destination port ke 5022 (atau port DBM kustom Anda).
  3. Untuk menguji konektivitas Database Mirroring masuk pada port 5022, tetapkan Source ke SOURCE_HOST_IP_ADDRESS, Destination ke Current Cloud SQL instance (atau DESTINATION_HOST_IP_ADDRESS jika Anda menggunakan Private Service Connect), dan Destination port ke 5022 (atau port DBM kustom Anda).

Membuat dan memverifikasi Server Tertaut di instance Cloud SQL untuk SQL Server tujuan Anda

Setelah konektivitas jaringan Anda siap, hubungkan ke instance Cloud SQL untuk SQL Server tujuan dan buat Server Tertaut yang mengarah ke instance SQL Server sumber Anda:

  1. Hubungkan ke instance Cloud SQL Anda dengan klien SQL. Anda dapat menggunakan metode berikut:
    • Klien sqlcmd. Anda dapat menggunakan metode ini untuk terhubung ke IP pribadi instance, tetapi Anda mungkin perlu membuat virtual machine Compute Engine.
    • Perintah gcloud sql connect. Perintah ini hanya berfungsi untuk instance Cloud SQL yang telah mengaktifkan alamat IP publik.
  2. Login sebagai pengguna sqlserver dan jalankan perintah T-SQL berikut untuk versi Cloud SQL untuk SQL Server tujuan Anda guna membuat Server Tertaut yang mengarah ke instance SQL Server sumber, memetakan @locallogin = N'sqlserver' ke login migrasi sumber, mengaktifkan rpc out, dan menguji koneksi dengan OPENQUERY (untuk mengetahui informasi selengkapnya tentang opsi Server Tertaut di Cloud SQL, lihat Mengelola server tertaut):

    Cloud SQL untuk SQL Server 2017, 2019, dan 2022

    USE [master];
    GO
    
    EXEC master.dbo.sp_addlinkedserver
        @server = N'LINKED_SERVER_NAME',
        @srvproduct = N'',
        @provider = N'SQLNCLI',
        @datasrc = N'SOURCE_HOST_IP_ADDRESS,SOURCE_PORT_NUMBER';
    GO
    
    EXEC master.dbo.sp_addlinkedsrvlogin
        @rmtsrvname = N'LINKED_SERVER_NAME',
        @useself = N'False',
        @locallogin = N'sqlserver',
        @rmtuser = N'SOURCE_USERNAME',
        @rmtpassword = N'SOURCE_PASSWORD';
    GO
    
    EXEC master.dbo.sp_serveroption
        @server = N'LINKED_SERVER_NAME',
        @optname = N'rpc out',
        @optvalue = N'TRUE';
    GO
    
    SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT @@VERSION AS SourceServerVersion');
    GO

    Cloud SQL untuk SQL Server 2025

    USE [master];
    GO
    
    EXEC master.dbo.sp_addlinkedserver
        @server = N'LINKED_SERVER_NAME',
        @srvproduct = N'',
        @provider = N'MSOLEDBSQL19',
        @datasrc = N'SOURCE_HOST_IP_ADDRESS,SOURCE_PORT_NUMBER',
        @provstr = N'Encrypt=Optional;TrustServerCertificate=Yes;Authentication=SqlPassword;UID=Placeholder;';
    GO
    
    EXEC master.dbo.sp_addlinkedsrvlogin
        @rmtsrvname = N'LINKED_SERVER_NAME',
        @useself = N'False',
        @locallogin = N'sqlserver',
        @rmtuser = N'SOURCE_USERNAME',
        @rmtpassword = N'SOURCE_PASSWORD';
    GO
    
    EXEC master.dbo.sp_serveroption
        @server = N'LINKED_SERVER_NAME',
        @optname = N'rpc out',
        @optvalue = N'TRUE';
    GO
    
    SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT @@VERSION AS SourceServerVersion');
    GO

    Ganti kode berikut:

    • LINKED_SERVER_NAME dengan nama untuk Server Tertaut Anda di Cloud SQL untuk SQL Server (misalnya, source_sql_linked_server).
    • SOURCE_HOST_IP_ADDRESS dengan alamat IP pribadi instance SQL Server sumber Anda (atau alamat IP pemroses Grup Ketersediaan jika dikonfigurasi untuk Grup Ketersediaan sumber multi-replika).
    • SOURCE_PORT_NUMBER dengan nomor port tempat mesin database SQL Server sumber Anda menerima koneksi (default 1433).
    • SOURCE_USERNAME dengan nama login SQL khusus yang Anda buat di instance sumber di Membuat login dan izin Database Migration Service khusus.
    • SOURCE_PASSWORD dengan sandi untuk login SOURCE_USERNAME.

Membuat profil koneksi dan menjalankan tugas migrasi

Gunakan Google Cloud CLI untuk membuat profil koneksi sumber dan tujuan, membuat tugas migrasi DAG berkelanjutan, memverifikasi konfigurasi migrasi, dan memulai tugas migrasi:

  1. Buat profil koneksi sumber.
    Jalankan perintah gcloud database-migration connection-profiles create sqlserver (klik untuk meluaskan):

    gcloud database-migration connection-profiles create sqlserver

    Contoh ini menggunakan flag --no-async opsional sehingga semua operasi dilakukan secara sinkron. Artinya, beberapa perintah mungkin memerlukan waktu beberapa saat untuk diselesaikan. Anda dapat melewati flag --no-async untuk menjalankan perintah secara asinkron. Jika ya, Anda harus menggunakan perintah gcloud database-migration operations describe untuk memverifikasi apakah operasi Anda berhasil.

    gcloud database-migration connection-profiles create sqlserver SOURCE_CONNECTION_PROFILE_ID \
        --no-async \
        --display-name=SOURCE_CONNECTION_PROFILE_NAME \
        --region=REGION \
        --role=SOURCE \
        --host=SOURCE_HOST_IP_ADDRESS \
        --port=SOURCE_PORT_NUMBER \
        --dbm-port=SOURCE_DBM_PORT_NUMBER \
        --username=SOURCE_USERNAME \
        --password=SOURCE_PASSWORD

    Ganti kode berikut:

    • SOURCE_CONNECTION_PROFILE_ID dengan ID yang dapat dibaca mesin untuk profil koneksi sumber Anda (misalnya, sqlserver-dag-source-profile).
    • SOURCE_CONNECTION_PROFILE_NAME dengan nama yang dapat dibaca manusia untuk profil koneksi sumber Anda. Nilai ini ditampilkan di Database Migration Service di konsol Google Cloud .
    • REGION dengan ID region tempat Anda ingin menyimpan profil koneksi (misalnya, us-central1).
    • SOURCE_HOST_IP_ADDRESS dengan alamat IP pribadi instance SQL Server sumber Anda (atau alamat IP pemroses Grup Ketersediaan jika dikonfigurasi untuk Grup Ketersediaan sumber multi-replika).
    • SOURCE_PORT_NUMBER dengan nomor port tempat mesin database SQL Server sumber Anda menerima koneksi (default 1433).
    • SOURCE_DBM_PORT_NUMBER dengan nomor port TCP endpoint Database Mirroring sumber Anda (default 5022).
    • SOURCE_USERNAME dengan nama login SQL khusus yang Anda buat di instance sumber di Membuat login dan izin Database Migration Service khusus.
    • SOURCE_PASSWORD dengan sandi untuk login SOURCE_USERNAME.
  2. Buat profil koneksi tujuan.
    Jalankan perintah gcloud database-migration connection-profiles create sqlserver (klik untuk meluaskan):

    gcloud database-migration connection-profiles create sqlserver

    Contoh ini menggunakan flag --no-async opsional sehingga semua operasi dilakukan secara sinkron. Artinya, beberapa perintah mungkin memerlukan waktu beberapa saat untuk diselesaikan. Anda dapat melewati flag --no-async untuk menjalankan perintah secara asinkron. Jika ya, Anda harus menggunakan perintah gcloud database-migration operations describe untuk memverifikasi apakah operasi Anda berhasil.

    gcloud database-migration connection-profiles create sqlserver DESTINATION_CONNECTION_PROFILE_ID \
        --no-async \
        --display-name=DESTINATION_CONNECTION_PROFILE_NAME \
        --region=REGION \
        --role=DESTINATION \
        --cloudsql-instance=CLOUDSQL_INSTANCE_ID \
        --host=DESTINATION_HOST_IP_ADDRESS \
        --port=DESTINATION_PORT_NUMBER \
        --dbm-port=DESTINATION_DBM_PORT_NUMBER \
        --username=sqlserver \
        --password=CLOUD_SQL_DB_USER_PASSWORD

    Ganti kode berikut:

    • DESTINATION_CONNECTION_PROFILE_ID dengan ID yang dapat dibaca mesin untuk profil koneksi tujuan Anda (misalnya, sqlserver-dag-dest-profile).
    • DESTINATION_CONNECTION_PROFILE_NAME dengan nama yang dapat dibaca manusia untuk profil koneksi tujuan Anda. Nilai ini ditampilkan di Database Migration Service di konsol Google Cloud .
    • REGION dengan ID region tempat Anda ingin menyimpan profil koneksi.
    • CLOUDSQL_INSTANCE_ID dengan nama instance Cloud SQL untuk SQL Server tujuan Anda.
    • DESTINATION_HOST_IP_ADDRESS dengan alamat IP pribadi instance Cloud SQL untuk SQL Server tujuan Anda (atau alamat IP endpoint Private Service Connect-nya) yang dapat dijangkau dari instance SQL Server sumber Anda.
    • DESTINATION_PORT_NUMBER dengan nomor port database instance Cloud SQL untuk SQL Server tujuan Anda (1433).
    • DESTINATION_DBM_PORT_NUMBER dengan nomor port Database Mirroring instance Cloud SQL untuk SQL Server tujuan Anda (5022).
    • CLOUD_SQL_DB_USER_PASSWORD dengan sandi untuk pengguna sqlserver di instance Cloud SQL untuk SQL Server tujuan Anda (--username harus ditetapkan ke sqlserver).
  3. Buat tugas migrasi DAG berkelanjutan.
    Jalankan perintah gcloud database-migration migration-jobs create (klik untuk meluaskan):

    gcloud database-migration migration-jobs create

    Contoh ini menggunakan flag --no-async opsional sehingga semua operasi dilakukan secara sinkron. Artinya, beberapa perintah mungkin memerlukan waktu beberapa saat untuk diselesaikan. Anda dapat melewati flag --no-async untuk menjalankan perintah secara asinkron. Jika ya, Anda harus menggunakan perintah gcloud database-migration operations describe untuk memverifikasi apakah operasi Anda berhasil.

    gcloud database-migration migration-jobs create MIGRATION_JOB_ID \
        --no-async \
        --display-name=MIGRATION_JOB_NAME \
        --region=REGION \
        --type=CONTINUOUS \
        --source=SOURCE_CONNECTION_PROFILE_ID \
        --destination=DESTINATION_CONNECTION_PROFILE_ID \
        --sqlserver-dag-source-ag=SOURCE_AVAILABILITY_GROUP_NAME \
        --sqlserver-dag-linked-server=LINKED_SERVER_NAME

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID yang dapat dibaca mesin untuk tugas migrasi Anda (misalnya, sqlserver-dag-job).
    • MIGRATION_JOB_NAME dengan nama yang dapat dibaca manusia untuk tugas migrasi Anda. Nilai ini ditampilkan di konsol Google Cloud .
    • REGION dengan ID region tempat Anda ingin membuat tugas migrasi.
    • SOURCE_CONNECTION_PROFILE_ID dengan ID profil koneksi sumber Anda.
    • DESTINATION_CONNECTION_PROFILE_ID dengan ID profil koneksi tujuan Anda.
    • SOURCE_AVAILABILITY_GROUP_NAME dengan nama Grup Ketersediaan di instance SQL Server sumber Anda.
    • LINKED_SERVER_NAME dengan nama Server Tertaut yang Anda konfigurasi di instance Cloud SQL untuk SQL Server tujuan di Membuat dan memverifikasi Server Tertaut di instance Cloud SQL untuk SQL Server tujuan.
  4. Verifikasi konfigurasi tugas migrasi.
    Sebelum memulai tugas migrasi DAG, Anda harus menjalankan verify untuk memvalidasi konektivitas jaringan dua arah, akses RPC Server Tertaut, izin gcp_dms_db (jika menggunakan hak istimewa terendah), pemilik database sumber (memastikan tidak ada database yang dimiliki oleh sa), dan jalur file data default. Jalankan perintah gcloud database-migration migration-jobs verify (klik untuk meluaskan):

    gcloud database-migration migration-jobs verify

    gcloud database-migration migration-jobs verify MIGRATION_JOB_ID \
        --region=REGION

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.

    Anda dapat memeriksa status operasi verifikasi dengan menjalankan perintah gcloud database-migration operations describe.

  5. Mulai tugas migrasi.
    Setelah verifikasi berhasil, jalankan perintah gcloud database-migration migration-jobs start (klik untuk meluaskan):

    gcloud database-migration migration-jobs start

    gcloud database-migration migration-jobs start MIGRATION_JOB_ID \
        --region=REGION

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.

Memantau dan memverifikasi migrasi Anda

Saat tugas migrasi DAG berjalan, Anda dapat memantau progresnya di konsol Google Cloud , mengkueri database tujuan dalam mode hanya baca selama CDC, dan mengelola replikasi aktif.

Memantau progres di konsol Google Cloud

Anda dapat memantau tugas migrasi DAG yang sedang berjalan di konsol Google Cloud di halaman Detail tugas migrasi, sama seperti tugas migrasi Database Migration Service lainnya:

  • Di tabel Databases pada halaman detail tugas migrasi, lihat fase real-time (Full dump selama pemuatan penuh awal, CDC selama replikasi berkelanjutan, dan pesan error tingkat database) serta Restore lag untuk setiap database di Grup Ketersediaan Anda.
  • Di tab Monitoring, lihat diagram Restore lag (datamigration.googleapis.com/migration_job/max_replica_sec_lag, yang melaporkan jeda replikasi Grup Ketersediaan Terdistribusi dalam detik per database).

Untuk mengetahui informasi selengkapnya tentang metrik pemantauan dan status tugas, lihat Metrik tugas migrasi dan Kode status tugas migrasi.

Memverifikasi database yang dimigrasikan dalam mode hanya baca selama CDC

Tidak seperti migrasi berbasis cadangan (tempat database tujuan tetap dalam status RESTORING hingga promosi), migrasi Distributed Availability Group memungkinkan Anda mengkueri database Cloud SQL untuk SQL Server tujuan dalam mode hanya baca segera setelah memasuki fase CDC.

Untuk setiap database yang dimiliki oleh login SQL di instance sumber, Database Migration Service otomatis membuat login di instance Cloud SQL untuk SQL Server tujuan yang diawali dengan gcp_dms_, ID 6 karakter, dan nama pemilik sumber (misalnya, gcp_dms_a1b2c3_myowner). Untuk mengkueri database dengan login tersebut sebelum promosi, hubungkan ke instance Cloud SQL untuk SQL Server tujuan sebagai sqlserver, temukan nama login yang dihasilkan di sys.server_principals, dan reset sandinya:

SELECT name FROM sys.server_principals WHERE name LIKE 'gcp_dms_%';
GO
ALTER LOGIN [GENERATED_DMS_OWNER_LOGIN] WITH PASSWORD = 'NEW_OWNER_PASSWORD';
GO

Ganti kode berikut:

  • GENERATED_DMS_OWNER_LOGIN dengan nama login pemilik database yang dihasilkan yang ditampilkan oleh kueri.
  • NEW_OWNER_PASSWORD dengan sandi baru untuk login.

Untuk mengetahui informasi selengkapnya tentang cara memverifikasi objek dan data yang dimigrasikan, lihat Memverifikasi migrasi.

Mengelola tugas migrasi DAG yang aktif (Opsional)

Saat tugas migrasi berjalan dalam fase CDC, Anda dapat melakukan operasi pengelolaan berikut:

  • Tambahkan atau hapus database di Grup Ketersediaan sumber pada instance SQL Server sumber dengan menjalankan ALTER AVAILABILITY GROUP ... ADD DATABASE atau ALTER AVAILABILITY GROUP ... REMOVE DATABASE. Database Migration Service akan otomatis mendeteksi perubahan pada siklus polling berikutnya dan memperbarui instance Cloud SQL untuk SQL Server tujuan.
  • Hentikan sementara replikasi data dengan menjalankan gcloud database-migration migration-jobs stop. Menghentikan tugas migrasi DAG hanya boleh digunakan untuk jangka waktu yang ditentukan dan singkat, karena pembaruan terus terakumulasi dalam log transaksi saat replikasi dihentikan dan dapat menyebabkan disk log transaksi penuh. Dari status dihentikan, Anda dapat menjalankan gcloud database-migration migration-jobs resume untuk melanjutkan replikasi data, atau menjalankan gcloud database-migration migration-jobs delete untuk menyelesaikan migrasi dan melakukan pembersihan yang diperlukan.
  • Mulai ulang tugas migrasi yang gagal dengan menjalankan gcloud database-migration migration-jobs restart. Memulai ulang tugas migrasi DAG akan menghapus database yang dimigrasikan di instance Cloud SQL untuk SQL Server tujuan, membuat ulang Distributed Availability Group, dan menjalankan ulang pemuatan penuh awal melalui jaringan.

Mempromosikan, melakukan failback, atau menyelesaikan migrasi

Jika Anda sudah siap mengalihkan aplikasi ke Cloud SQL untuk SQL Server, promosikan tugas migrasi. Dalam migrasi DAG, mempromosikan tugas akan mengalihkan Cloud SQL untuk SQL Server ke Primer baca/tulis dan mentransisikan tugas migrasi ke fase FAILBACK (PHASE_FAILBACK dalam respons Google Cloud CLI dan API) dengan replikasi balik aktif kembali ke instance SQL Server sumber Anda:

  1. Hentikan penulisan aplikasi ke database SQL Server sumber dan periksa metrik Restore lag di konsol Google Cloud untuk mengonfirmasi bahwa jeda replikasi telah mencapai nol.
  2. Mempromosikan tugas migrasi untuk beralih ke Cloud SQL.
    Jalankan perintah gcloud database-migration migration-jobs promote (klik untuk meluaskan):

    gcloud database-migration migration-jobs promote

    gcloud database-migration migration-jobs promote MIGRATION_JOB_ID \
        --region=REGION

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.

    Selama promosi, Database Migration Service melakukan tindakan berikut:

    • Menetapkan Grup Ketersediaan Terdistribusi ke commit sinkron, mengeluarkan CHECKPOINT di semua database sumber, menunggu semua transaksi disinkronkan tanpa kehilangan data, dan membalikkan peran Grup Ketersediaan sehingga instance Cloud SQL untuk SQL Server tujuan Anda menjadi Primer baca/tulis dan instance SQL Server sumber asli Anda menjadi Sekunder.
    • Mempertahankan tugas migrasi dalam status Running dan mentransisikan substatus ke fase FAILBACK (PHASE_FAILBACK di Google Cloud CLI dan respons API), terus mereplikasi penulisan baru dari Cloud SQL untuk SQL Server tujuan kembali ke instance SQL Server sumber.

    Setelah promosi selesai, hubungkan aplikasi Anda ke instance Cloud SQL untuk SQL Server yang baru.

  3. (Opsional) Lakukan failback ke instance SQL Server sumber Anda.
    Jika Anda mengalami masalah setelah mengalihkan aplikasi ke Cloud SQL untuk SQL Server saat tugas migrasi berada dalam fase FAILBACK, Anda dapat mengembalikan migrasi tanpa kehilangan data dengan menghentikan penulisan aplikasi di Cloud SQL untuk SQL Server dan menjalankan perintah gcloud database-migration migration-jobs promote dengan flag --failback (klik untuk meluaskan):

    gcloud database-migration migration-jobs promote --failback

    gcloud database-migration migration-jobs promote MIGRATION_JOB_ID \
        --region=REGION \
        --failback

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.

    Menjalankan promote dengan flag --failback selama fase FAILBACK akan menyinkronkan semua perubahan yang ditulis ke Cloud SQL untuk SQL Server, mengalihkan arah replikasi lagi sehingga Grup Ketersediaan SQL Server sumber asli Anda menjadi Primer baca/tulis dan Cloud SQL untuk SQL Server menjadi Sekunder, dan mengembalikan tugas migrasi ke fase CDC. Perhatikan bahwa --failback hanya valid jika tugas migrasi berada dalam fase FAILBACK; menjalankan promote tanpa --failback selama fase FAILBACK (atau meneruskan --failback selama fase CDC) akan gagal dalam validasi dengan error FAILED_PRECONDITION dan membuat tugas migrasi tetap berjalan.

  4. (Opsional) Hentikan replikasi data sebelum menghapus tugas migrasi.
    Jika Anda ingin menghentikan replikasi data sebelum menghapus tugas migrasi secara permanen, jalankan perintah gcloud database-migration migration-jobs stop (klik untuk meluaskan):

    gcloud database-migration migration-jobs stop

    gcloud database-migration migration-jobs stop MIGRATION_JOB_ID \
        --region=REGION

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.
  5. Selesaikan migrasi dan hapus tugas migrasi.
    Setelah Anda memverifikasi bahwa aplikasi Anda beroperasi sepenuhnya dengan instance tujuan Cloud SQL untuk SQL Server yang baru, dan Anda tidak lagi memerlukan replikasi terbalik ke instance SQL Server sumber, hapus tugas migrasi (dari status Running atau Stopped) untuk menyelesaikan migrasi dan melakukan pembersihan yang diperlukan. Jalankan perintah gcloud database-migration migration-jobs delete (klik untuk meluaskan):

    gcloud database-migration migration-jobs delete

    Perintah ini menampilkan dialog konfirmasi interaktif yang memerlukan input Anda untuk menyelesaikannya. Anda dapat melewati perintah konfirmasi menggunakan flag --quiet opsional.

    gcloud database-migration migration-jobs delete MIGRATION_JOB_ID \
        --region=REGION

    Ganti kode berikut:

    • MIGRATION_JOB_ID dengan ID tugas migrasi Anda.
    • REGION dengan ID region tempat tugas migrasi disimpan.

    Menghapus tugas migrasi akan menyelesaikan migrasi, menghentikan replikasi balik yang aktif, menghapus sertifikat Distributed Availability Group dan Database Mirroring di kedua instance, serta memungkinkan Anda mengaktifkan fitur Cloud SQL untuk SQL Server yang dibatasi selama replikasi DAG (seperti Pemulihan point-in-time (PITR) atau replika baca).

    Setelah menghapus tugas migrasi, Anda dapat menonaktifkan atau menghapus flag database cloud sql enable dag support di instance Cloud SQL untuk SQL Server tujuan, menghapus Server Tertaut di instance Cloud SQL untuk SQL Server (EXEC master.dbo.sp_dropserver @server = N'LINKED_SERVER_NAME', @droplogins = 'droplogins';), dan menghapus database helper gcp_dms_db dan login migrasi di instance SQL Server sumber.