Mengonfigurasi replika eksternal

Halaman ini menjelaskan cara menyiapkan instance Cloud SQL untuk dipublikasikan kepada pelanggan yang berada di luar Cloud SQL atau yang berada di dalam Cloud SQL. Replikasi eksternal di Cloud SQL untuk SQL Server menggunakan replikasi transaksional, dan Cloud SQL bertindak sebagai penayang ke pelanggan.

Replikasi transaksional mendukung publikasi beberapa jenis objek, seperti yang didokumentasikan oleh Microsoft. Selain itu, di Cloud SQL, batasan untuk fitur ini serupa dengan batasan yang didokumentasikan oleh Microsoft.

Beberapa objek yang didukung adalah sebagai berikut:

  • Tables
  • Prosedur Tersimpan
  • Tabel Virtual
  • Tampilan Indeks
  • Fungsi yang Ditentukan Pengguna (UDF)

Meskipun contoh proses publikasi tersedia di halaman ini, lihat Memublikasikan Data dan Objek Database dalam dokumentasi Microsoft untuk mengetahui detailnya. Pertimbangkan menggunakan SQL Server Management Studio (SSMS) dalam proses publikasi Anda, karena opsi yang tersedia mungkin lebih terlihat di SSMS.

Lihat juga Tentang replikasi di Cloud SQL.

Menerapkan replikasi transaksional

Instance Cloud SQL dapat bertindak sebagai penayang dan distributor untuk pelanggan eksternal, melalui replikasi transaksional.

Untuk menyiapkan replikasi transaksional, Anda dapat:

  • Gunakan prosedur tersimpan yang disediakan oleh Cloud SQL. URL tersebut diawali dengan: gcloudsql_transrepl_
  • Meningkatkan replikasi menggunakan prosedur tersimpan yang disediakan oleh Microsoft

Batasan dan prasyarat

Saat Anda merencanakan replikasi transaksional, tinjau bagian ini.

Batasan

Instance yang menggunakan Ketersediaan Tinggi (HA) tidak memiliki, alamat IP keluar yang konsisten. Instance tersebut tidak boleh menjadi penayang jika mereka menggunakan konektivitas IP publik. Oleh karena itu, jika instance menggunakan HA, instance tersebut harus menggunakan konektivitas IP Pribadi.

Untuk menentukan artikel, lihat Menentukan Artikel dalam dokumentasi Microsoft, termasuk untuk batasan dan batasannya.

Prosedur tersimpan yang disediakan oleh Cloud SQL hanya mendukung langganan push.

Prasyarat

Konektivitas jaringan dua arah harus disiapkan antara instance Cloud SQL dan instance pelanggan. Pelanggan dapat bersifat eksternal, misalnya pelanggan lokal, atau pelanggan dapat bersifat internal untuk Cloud SQL.

Untuk instance Cloud SQL yang menggunakan IP publik, Cloud SQL menggunakan alamat IP yang berbeda pada jalur egress dan ingress-nya. Replika harus mengizinkan daftar instance utama yang dapat diambil menggunakan perintah gcloud:

gcloud sql instances describe [PRIMARY_NAME] --format="default(ipAddresses)"

Untuk menggunakan IP pribadi Cloud SQL dengan instance lokal, Anda harus menyiapkan akses layanan pribadi. Hal ini memerlukan peering antara VPC Cloud SQL dan VPC pelanggan melalui IP kustom yang perlu diiklankan.

Saat terhubung dari infrastruktur lokal, firewall lokal harus mengizinkan koneksi masuk dan keluar. Secara khusus, firewall lokal harus mengizinkan koneksi tersebut di port 1433 ke rentang subnet akses layanan pribadi yang digunakan untuk layanan Google Cloud tertentu (dalam hal ini, untuk Cloud SQL). Sebaiknya izinkan rentang subnet, bukan IP tertentu untuk setiap instance yang dibuat.

Untuk informasi terkait, lihat referensi berikut:

Izin dan peran

Paket izin

Prosedur tersimpan yang disediakan oleh Cloud SQL mencakup izin yang diperlukan untuk replikasi transaksional. Ini adalah prosedur penyimpanan wrapper yang terkadang memanggil satu atau beberapa prosedur yang disimpan oleh Microsoft. Baca dokumentasi Microsof untuk mengetahui informasi tentang prosedur tersimpan Microsoft.

Peran yang diperlukan

Akun yang digunakan (termasuk untuk agen pembaca log) memerlukan db_owner peran, seperti pada pengguna sqlserver. Untuk informasi yang diperlukan, tinjau Model Keamanan Agen Replikasi.

Menggunakan prosedur tersimpan untuk memublikasikan, mendistribusikan, dan berlangganan

Bagian ini berisi langkah-langkah yang disarankan untuk menyiapkan replikasi transaksi.

Pengguna sqlserver telah menyimpan prosedur untuk menyiapkan instance Cloud SQL Anda agar bertindak sebagai penayang. Untuk informasi referensi, lihat prosedur tersimpan Cloud SQL.

Mempersiapkan replikasi transaksional dengan database pengujian

Sebelum menyiapkan replikasi transaksional untuk database produksi, Anda dapat menyiapkan instance sebagai penayang objek database pengujian. Di halaman ini, database pengujian disebut database pub_demo.

Hubungkan instance Cloud SQL Anda menggunakan pengguna sqlserver dan buat database untuk tujuan pengujian. Contoh:

Create Database pub_demo;
GO
USE pub_demo;
CREATE TABLE Employee(employeeId INT primary key);
INSERT INTO Employee([employeeId]) VALUES (1);
INSERT INTO Employee([employeeId]) VALUES (2);

-- Add procedure
CREATE OR ALTER PROCEDURE dbo.p_GetDate
AS
SELECT getdate()

-- Add view
CREATE OR ALTER VIEW dbo.v_GetDbs
AS
SELECT name from sys.databases

-- Function
CREATE OR ALTER FUNCTION dbo.fn_ListDbFiles(@id int)
RETURNS TABLE
AS
RETURN
(
select * from sys.master_files where database_id = @id
)

Menyiapkan database distribusi

Untuk database distribusi, Anda dapat menggunakan msdb.dbo.gcloudsql_transrepl_setup_distribution, yang merupakan prosedur tersimpan wrapper untuk prosedur tersimpan Microsoft ini:

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_setup_distribution @login='sqlserver', @password='<password>'

Mengaktifkan database untuk publikasi

Untuk mengaktifkan atau menonaktifkan opsi publikasi database, Anda dapat menggunakan msdb.dbo.gcloudsql_transrepl_replicationdboption. Prosedur tersimpan ini berlaku untuk opsi publikasi bagi penayang yang menggunakan sp_replicationdboption.

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_replicationdboption @db='pub_demo', @value='true'

Menambahkan agen pembaca log

Anda dapat menyiapkan agen pembaca log untuk database yang menggunakan sp_addlogreader_agent.

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_addlogreader_agent @db='pub_demo', @login='sqlserver', @password='<password>'

Membuat publikasi untuk database

Anda dapat menggunakan msdb.dbo.gcloudsql_transrepl_addpublication untuk membuat publikasi transaksional untuk database yang Anda tentukan. Prosedur yang disimpan ini menggabungkan sp_addpublication.

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_addpublication @db='pub_demo', @publication='pub1'

Membuat agen snapshot untuk publikasi yang ditentukan

Untuk membuat agen snapshot bagi database penerbit, Anda dapat menggunakan msdb.dbo.gcloudsql_transrepl_addpublication_snapshot, yang menggabungkan sp_addpublication_snapshot.

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_addpublication_snapshot @db='pub_demo',  @publication='pub1', @login='sqlserver', @password='<password>'

Membuat artikel dan menambahkannya ke publikasi

Anda dapat membuat artikel dari dalam database penerbit dan menambahkannya ke publikasi. Sebagai pengguna sqlserver, gunakan sp_addarticle.

Anda juga dapat menambahkan artikel menggunakan SSMS. Untuk informasi lebih lanjut, lihat Menambahkan Artikel ke dan Menghapus Artikel dari Publikasi.

Contoh:

USE pub_demo;
GO

EXEC sp_addarticle @publication = 'pub1',
                   @article = 'csql_dbo.employee',
                   @source_owner = 'dbo',
                   @source_object = 'Employee',
                   @description = N'cloudsql_article_table',
                   @schema_option = 0x000000000903409D,
                   @identityrangemanagementoption = N'manual',
                   @destination_table = 'Employee',
                   @destination_owner = 'dbo';

-- add function
use [pub_demo]
exec sp_addarticle  @publication = N'pub1',
                   @article = N'fn_ListDbFiles',
                   @source_owner = N'dbo',
                   @source_object = N'fn_ListDbFiles',
                   @type = N'func schema only',
                   @description = N'',
                   @creation_script = N'',
                   @pre_creation_cmd = N'drop',
                   @schema_option = 0x0000000008000001,
                   @destination_table = N'fn_ListDbFiles',
                   @destination_owner = N'dbo',
                   @status = 16

-- add procedure
use [pub_demo]
exec sp_addarticle  @publication = N'pub1',
                   @article = N'p_GetDate',
                   @source_owner = N'dbo',
                   @source_object = N'p_GetDate',
                   @type = N'proc schema only',
                   @description = N'',
                   @creation_script = N'',
                   @pre_creation_cmd = N'drop',
                   @schema_option = 0x0000000008000001,
                   @destination_table = N'p_GetDate',
                   @destination_owner = N'dbo',
                   @status = 16

-- add view
use [pub_demo]
exec sp_addarticle  @publication = N'pub1',
                   @article = N'v_GetDbs',
                   @source_owner = N'dbo',
                   @source_object = N'v_GetDbs',
                   @type = N'view schema only',
                   @description = N'',
                   @creation_script = N'',
                   @pre_creation_cmd = N'drop',
                   @schema_option = 0x0000000008000001,
                   @destination_table = N'v_GetDbs',
                   @destination_owner = N'dbo',
                   @status = 16

Menambahkan langganan ke publikasi

Dari dalam database, Anda dapat menambahkan langganan ke publikasi. Sebagai pengguna sqlserver, tetapkan status pelanggan menggunakan sp_addsubscription.

Contoh:

Use pub_demo;
GO
EXEC sp_addsubscription @publication ='pub1',
                        @subscriber = N'10.10.100.1,1433',
                        @destination_db = pub_demo,
                        @subscription_type = N'Push',
                        @sync_type = N'automatic',
                        @article = N'all',
                        @update_mode = N'read only',
                        @subscriber_type = 0

Menghubungkan ke pelanggan dan membuat database langganan

Anda dapat terhubung ke pelanggan dan membuat database langganan untuk data replikasi yang akan diisi.

Contoh:

 Create Database pub_demo

Menambahkan tugas agen terjadwal baru untuk menyinkronkan langganan push

Anda dapat menambahkan tugas agen terjadwal baru untuk menyinkronkan langganan push ke publikasi. Misalnya, pada database penayang, jalankan perintah yang mirip dengan yang di bawah ini. Perintah ini menggunakan msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent, prosedur tersimpan wrapper untuk sp_addpushsubscription_agent:

EXEC msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent
@db='pub_demo',
@publication = 'pub1',
@subscriber_db= 'pub_demo',
@subscriber_login='sqlserver',
@subscriber_password='<password>',
@subscriber='11.11.111.1,1433'

Memulai tugas agen snapshot publikasi

Anda dapat memulai tugas agen snapshot publikasi, sebagai berikut:

USE pub_demo;
EXEC sp_startpublication_snapshot
@publication = 'pub1'

Memberikan akses ke akun untuk menggunakan Pemantau Replikasi

Digunakan untuk msdb.dbo.gcloudsql_transrepl_addmonitoraccess:

  • Menyediakan akses ke Monitor Replikasi di SSMS
  • Tabel kueri dalam database distribusi

Dengan demikian, prosedur tersimpan ini memungkinkan Anda menggunakan pernyataan SELECT pada tabel terkait replikasi database distribusi, seperti tabel MSrepl_errors:

EXEC msdb.dbo.gcloudsql_transrepl_addmonitoraccess
@login = 'sqlserver'

Mengubah properti database distribusi

Anda dapat mengubah heartbeat_interval. Gunakan prosedur msdb.dbo.gcloudsql_transrepl_changedistributor_property, yang menggabungkan sp_changedistributor_property.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi untuk sp_changedistributor_property. Lihat juga dokumentasi tersebut untuk mengetahui informasi selengkapnya tentang nilai heartbeat_interval.

Contoh:

EXEC msdb.dbo.gcloudsql_transrepl_changedistributor_property
@property = N'heartbeat_interval',
@value = 90

Menggunakan Monitor Replikasi

Klik kanan node replikasi di SSMS, lalu pilih Launch Replika Monitor.

Jika mengklik tab Agen, Anda akan melihat tampilan seperti berikut:

Folder di tab Agen

Menggunakan prosedur tersimpan untuk menghapus replikasi

Bagian ini berisi langkah yang disarankan untuk menghapus replikasi transaksional.

Membatalkan langganan

Untuk membatalkan langganan, gunakan prosedur tersimpan sp_dropsubscription.

Berikut adalah contoh perintah untuk menghentikan langganan:

USE  pub_demo;
GO
EXEC sp_dropsubscription
          @publication = 'csql_pub_pub_demo',
          @article     = N'all',
          @subscriber  = N'11.11.111.1,1433'

Menghentikan pelanggan

Untuk membatalkan pelanggan, gunakan prosedur tersimpan msdb.dbo.gcloudsql_transrepl_dropsubscriber:

EXEC msdb.dbo.gcloudsql_transrepl_dropsubscriber
 @subscriber  = N'11.11.111.1,1433'

Menghapus publikasi

Untuk menghapus publikasi, gunakan prosedur tersimpan msdb.dbo.gcloudsql_transrepl_droppublication:

EXEC msdb.dbo.gcloudsql_transrepl_droppublication
  @db = 'pub_demo', @publication='pub1'

Menonaktifkan database publikasi

Untuk menonaktifkan database publikasi, gunakan prosedur tersimpan msdb.dbo.gcloudsql_transrepl_replicationdboption:

EXEC msdb.dbo.gcloudsql_transrepl_replicationdboption
@db='pub_demo',
@value=N'false'

Menghapus database distribusi

Untuk menghapus database distribusi, gunakan prosedur tersimpan msdb.dbo.gcloudsql_transrepl_remove_distribution:

EXEC msdb.dbo.gcloudsql_transrepl_remove_distribution

Tips dan langkah-langkah untuk memecahkan masalah

Menjalankan prosedur tersimpan dari database yang tepat

Anda mungkin mendapatkan error berikut saat menjalankan sp_addarticle, sp_addsubscription, atau sp_startpublication_snapshot:

Only members of the sysadmin fixed server role or db_owner fixed database role can perform this operation.

Selain itu, Anda mungkin mendapatkan error berikut saat menjalankan sp_dropsubscription:

This database is not enabled for publication.

Jika terjadi error ini, perhatikan bahwa Anda harus menjalankan prosedur tersimpan tersebut dari dalam database yang menerapkannya. Anda dapat menggunakan hal berikut untuk mengonfirmasi bahwa kode tersebut dijalankan dari database yang benar:

USE <database_name>;
GO
<Run stored proc>

Replikasi

Error replikasi disediakan dalam log error SQL dan di tempat lain. Anda dapat mengkueri beberapa tabel dalam database distribusi untuk menemukan error replikasi. Misalnya:

select * from [cloudsql_distribution]..msrepl_errors
select * from [cloudsql_distribution]..MSreplication_monitordata

Microsoft memiliki contoh lainnya di sini tentang cara mencari error menggunakan Replikasi Monitor. Misalnya, pengguna sqlserver mungkin tidak memiliki akses ke perintah.

Tugas agen replikasi

Setelah replikasi disiapkan, tugas agen SQL baru tidak akan terlihat di SSMS oleh pengguna sqlserver. Namun, Anda dapat melihatnya menggunakan hal berikut:

USE msdb
select * from dbo.sysjobs

Penayang tidak ada di Monitor Replikasi

Anda dapat menggunakan Replikasi monitor untuk melihat status dan memecahkan masalah replikasi.

Misalnya, saat Anda menyiapkan replikasi dan instance Cloud SQL penayang menggunakan alamat IP, SSMS mungkin tidak dapat menemukan penayang. Hal ini karena tidak mengetahui pemetaan antara nama host dan alamat IP.

Monitor Replikasi berisi tab Publikasi kosong:

Tidak ada baris di tab Publikasi

Sebagai solusinya, Anda dapat membuat alias di Pengelola Konfigurasi SQL Server antara nama host SQL Server penayang dan Alamat IP yang digunakan untuk terhubung dari SSMS:

  1. Mulai SQL Server Configuration Manager.

    Pengelola Konfigurasi SQL Server

  2. Temukan node Aliases, lalu pilih node tersebut.

    Node alias dipilih

  3. Klik kanan kotak di bawah Nama alias untuk membuat alias baru. Prosedur yang sama berlaku untuk alias 32-bit dan alias 64-bit:

    Kotak drop-down di bawah Nama alias

  4. Ambil nama host sebenarnya dari instance penayang menggunakan kueri ini:

    Kueri untuk nama host sebenarnya dari instance penayang Anda

  5. Di jendela alias, masukkan kolom ini sebelum memilih Oke:

    Nama Alias: Berikan nama server dari kueri di Langkah 4.

    Nomor Port: Berikan port 1433.

    Protocol (Protokol): Biarkan nilai sebagai default TCP/IP.

    Server: Berikan alamat IP instance Penayang.

    Nilai untuk nama alias, server, dll.

  6. Hubungkan menggunakan alias baru, dan luncurkan Monitor Replikasi:

    Kotak dialog Connect to Server

Informasi publikasi harus mirip dengan informasi berikut:

Monitor Replikasi kini menampilkan baris di tab Publikasi

Untuk mengetahui informasi selengkapnya tentang memecahkan masalah replikasi, lihat Pemecah masalah: Menemukan error dengan replikasi transaksional SQL Server.

Memperkirakan ukuran artikel yang diperlukan untuk replikasi

Saat Anda menggunakan instance Cloud SQL sebagai penayang, snapshot awal Artikel yang akan dihasilkan diperlukan untuk memulai replikasi. Snapshot ini disimpan secara lokal. Bergantung pada jumlah artikel, ukuran, dan jenis data, persyaratan penyimpanan dapat meningkat. Prosedur tersimpan sp_spaceused hanya memberikan perkiraan kasar kapasitas disk yang diperlukan untuk sebuah artikel.

Snapshot mencakup file yang menyimpan skema dan data.

Langkah selanjutnya