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:
- Mengonfigurasi IP pribadi (yang menyertakan link untuk menyiapkan akses layanan pribadi)
- akses layanan pribadi
- Mengonfigurasi akses layanan pribadi
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:
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:
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:
Mulai SQL Server Configuration Manager.
Temukan node Aliases, lalu pilih node tersebut.
Klik kanan kotak di bawah Nama alias untuk membuat alias baru. Prosedur yang sama berlaku untuk alias 32-bit dan alias 64-bit:
Ambil nama host sebenarnya dari instance penayang menggunakan kueri ini:
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.
Hubungkan menggunakan alias baru, dan luncurkan Monitor Replikasi:
Informasi publikasi harus mirip dengan informasi berikut:
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
- Pelajari replikasi di Cloud SQL.