Tutorial ini menunjukkan dua cara untuk meng-clone database Microsoft SQL Server yang berjalan di Compute Engine. Salah satu metode menggunakan snapshot persistent disk. Metode lainnya menggunakan pencadangan dan pemulihan SQL Server native, dengan mentransfer pencadangan menggunakan Cloud Storage. Cloud Storage adalah layanan penyimpanan objek dari Google Cloud. Layanan ini menawarkan cara yang mudah, aman, andal, dan sangat tersedia untuk menyimpan file.
Cloning adalah proses penyalinan database online ke server lain. Salinan tersebut tidak bergantung pada database yang ada dan dipertahankan sebagai snapshot point-in-time. Anda dapat menggunakan database yang di-clone untuk berbagai tujuan tanpa membebani server produksi atau mempertaruhkan integritas data produksi. Beberapa tujuannya meliputi:
- Menjalankan kueri analitis
- Pengujian muatan atau pengujian integrasi aplikasi
- Ekstraksi data untuk mengisi data warehouse
- Menjalankan eksperimen pada data
Setiap metode cloning yang dijelaskan dalam tutorial ini memiliki kelebihan dan kekurangan. Metode yang ideal bergantung pada situasi Anda. Tabel berikut menyoroti beberapa masalah utama.
Masalah | Metode 1: Snapshot disk | Metode 2: Pencadangan dan pemulihan menggunakan Cloud Storage |
---|---|---|
Kapasitas disk tambahan yang diperlukan pada instance SQL Server | Tidak memerlukan kapasitas disk tambahan | Kapasitas tambahan yang diperlukan untuk menyimpan file cadangan saat membuat dan memulihkan |
Muatan tambahan pada instance SQL Server sumber selama proses clone | Tidak ada pemuatan tambahan | Muatan tambahan pada CPU dan I/O saat membuat dan mengupload file cadangan |
Durasi cloning | Relatif cepat untuk database besar | Relatif lambat untuk database besar |
Dapat melakukan clone dari instance SQL Server eksternal ke Google Cloud | Tidak | Ya |
Kompleksitas | Urutan perintah kompleks untuk memasang disk yang di-clone | Serangkaian perintah yang relatif mudah untuk melakukan clone |
Dapat memanfaatkan sistem pencadangan yang ada | Ya, jika sistem pencadangan menggunakan snapshot disk Google Cloud | Ya, jika sistem pencadangan menulis file cadangan SQL Server native ke Cloud Storage |
Perincian cloning | Hanya dapat meng-clone seluruh disk | Hanya dapat meng-clone database yang ditentukan |
Konsistensi data | Konsisten pada titik snapshot | Konsisten pada saat pencadangan |
Tutorial ini mengasumsikan bahwa Anda sudah memahami administrasi sistem Microsoft Windows, PowerShell, dan administrasi Microsoft SQL Server menggunakan Microsoft SQL Server Management Studio.
Tujuan
- Pelajari cara menjalankan instance SQL Server di Google Cloud.
- Mempelajari cara membuat database demo di disk sekunder.
- Pelajari cara meng-clone database SQL Server menggunakan snapshot disk Compute Engine.
- Pelajari cara meng-clone database SQL Server dengan mentransfer cadangan menggunakan Cloud Storage.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cloud Storage
- Lisensi Microsoft Windows dan SQL server
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
- Aktifkan Compute Engine API. Aktifkan API
Pastikan Anda memenuhi prasyarat tambahan berikut:
- Anda menggunakan browser Google Chrome.
- Instal klien Remote Desktop Protocol (RDP) pilihan Anda. Untuk mengetahui informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh. Jika klien RDP sudah terinstal, Anda dapat melewati tugas ini.
Menyiapkan lingkungan
Untuk menyelesaikan tutorial ini, Anda perlu menyiapkan lingkungan komputasi dengan hal berikut:
- Instance SQL Server di Compute Engine (bernama
sql-server-prod
) untuk mewakili server database produksi Anda. - Disk tambahan (bernama
sql-server-prod-data
) yang terpasang ke server produksi untuk menyimpan database produksi Anda. - Salinan database contoh SQL Server Wide World Importers untuk menyimulasikan database produksi yang ingin Anda clone.
- Instance SQL Server di Compute Engine bernama
sql-server-test
untuk mewakili server database pengujian Anda. Anda meng-clone database ke server ini.
Diagram berikut mengilustrasikan arsitektur ini.
Membuat instance VM produksi
Untuk menyimulasikan lingkungan produksi, siapkan instance VM Compute Engine yang menjalankan SQL Server di Windows Server.
Instance VM untuk tutorial ini menggunakan dua disk: disk sebesar 50 GB untuk akun pengguna dan OS, serta disk sebesar 100 GB untuk penyimpanan database.
Di Compute Engine, menggunakan disk terpisah tidak memberikan manfaat performa. Performa disk ditentukan oleh total kapasitas penyimpanan semua disk yang terpasang pada sebuah instance dan jumlah total vCPU pada instance VM Anda. Oleh karena itu, file log dan database dapat berada di disk yang sama.
Konsol
Di Konsol Google Cloud, buka halaman VM instances.
Klik Create.
Di kolom Nama, ketik
sql-server-prod
.Untuk Region, pilih us-east1.
Untuk Zone, pilih us-east1-b.
Di bagian Konfigurasi mesin, ubah Jenis mesin menjadi n1-standard-2 (2 vCPU).
Di samping deskripsi Boot disk, klik Ubah.
Di panel Boot disk, klik tab Image publik.
Di menu drop-down Sistem Operasi, pilih SQL Server di Windows Server.
Pada menu drop-down Version, pilih SQL Server 2022 Standard di Windows Server 2022 Datacenter.
Pastikan nilai berikut telah ditetapkan:
- Jenis boot disk disetel ke Persistent disk standar.
- Ukuran (GB) ditetapkan ke 50.
Klik Select.
Pada bagian Identitas dan akses API, tetapkan Cakupan akses ke Izinkan akses penuh ke semua Cloud API.
Perluas Pengelolaan, keamanan, disk, jaringan, tenancy tunggal.
Klik tab Disk.
Klik Tambahkan disk baru add.
Di kolom Nama, ketik
sql-server-prod-data
.Di kolom Ukuran (GB), ketik
100
.Klik Done.
Klik Create.
Cloud Shell
Buka Cloud Shell.
Lakukan inisialisasi variabel berikut:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dengan keterangan:
VPC_NAME
: nama VPC AndaSUBNET_NAME
: nama subnet Anda
Tetapkan project ID default Anda:
gcloud config set project
PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.Tetapkan region default Anda:
gcloud config set compute/region
REGION
Ganti
REGION
dengan ID region tempat Anda ingin men-deploy.Tetapkan zona default Anda:
gcloud config set compute/zone
ZONE
Ganti
ZONE
dengan ID zona tempat Anda ingin men-deploy.Buat instance Compute Engine menggunakan image aplikasi untuk SQL Server 2022 Standard di Datacenter Windows Server 2022:
REGION=$(gcloud config get-value compute/region) ZONE=$(gcloud config get-value compute/zone) gcloud compute instances create sql-server-prod \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --image-family=sql-std-2022-win-2022 \ --image-project=windows-sql-cloud \ --boot-disk-size=50GB \ --boot-disk-device-name=sql-server-prod \ --create-disk="mode=rw,size=100,type=pd-standard,name=sql-server-prod-data,device-name=sql-server-prod-data" \ --subnet=$SUBNET_NAME
Perintah ini memberi instance akses penuh ke Google Cloud API, membuat disk sekunder sebesar 100 GB, dan memasang disk ke instance. Abaikan peringatan performa disk karena Anda tidak memerlukan performa tinggi untuk tutorial ini.
Terhubung ke instance VM
Di konsol Google Cloud, buka halaman instance VM.
Tunggu sekitar 5 menit hingga instance VM siap.
Untuk memantau proses inisialisasi VM, lihat output port serial-nya di Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Saat Anda melihat pesan berikut, artinya inisialisasi selesai.
Instance setup finished. sql-server-prod is ready to use.
Tekan Control+C untuk berhenti memantau port serial.
Klik nama instance
sql-server-prod
untuk membuka halaman detail instance VM.Pada bagian Akses jarak jauh, klik Tetapkan sandi Windows, lalu klik Tetapkan untuk membuat akun Anda di komputer jarak jauh.
Langkah ini akan membuat sandi untuk Anda. Catat atau salin sandi tersebut ke file sementara yang aman.
Di bagian Compute Engine pada konsol Google Cloud, klik menu dropdown RDP dan pilih opsi Download file RDP agar dapat mendownload file RDP untuk instance Anda.
Gunakan file ini untuk terhubung ke instance menggunakan klien RDP. Untuk mengetahui informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh.
Saat diminta, masukkan sandi yang baru saja dibuat, lalu klik OK.
Untuk menyetujui sertifikat server dan login ke instance Windows jarak jauh, klik Lanjutkan.
Saat ditanya apakah Anda ingin komputer dapat ditemukan oleh PC dan perangkat lain di jaringan, klik Tidak.
Menyiapkan disk tambahan
Disk kedua yang terpasang ke instance produksi digunakan untuk menyimpan database produksi Anda. Disk ini kosong, jadi Anda perlu mempartisi, memformat, dan memasangnya.
- Dalam sesi RDP yang terhubung ke instance
sql-server-prod
, klik tombol Mulai di taskbar Windows, ketikdiskpart
, lalu klik diskpart untuk membuka DiskPart. - Saat Anda diminta untuk mengizinkan aplikasi membuat perubahan, klik Ya.
Tampilkan daftar disk yang terpasang ke instance Anda:
list disk
Outputnya adalah sebagai berikut:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Online 100 GB 100 GB
Disk 1 (100 GB) adalah disk data Anda.
Pilih disk data:
select disk 1
Lakukan inisialisasi disk:
clean
Buat tabel partisi GUID:
convert gpt
Buat partisi data menggunakan seluruh disk:
create partition primary
Cantumkan volume yang tersedia:
list volume
Outputnya adalah sebagai berikut:
Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 C NTFS Partition 49 GB Healthy Boot Volume 1 FAT32 Partition 100 MB Healthy System Volume 2 RAW Partition 99 GB Healthy
Volume 2 (99 GB) adalah disk data Anda.
Pilih volume:
select volume 2
Format partisi dengan sistem file NTFS dan beri label
data
:format quick fs=ntfs label=data
Pasang disk sebagai drive D:
assign letter=d
Keluar dari DiskPart:
exit
Mendownload database contoh
Guna menyiapkan lingkungan untuk latihan cloning ini, Anda perlu melakukan hal berikut:
- Buat struktur direktori di drive D (
data
) untuk menyimpan database Anda. - Download file pencadangan penuh database contoh SQL Server Wide World Importers. Database ini menyimulasikan database produksi yang ingin Anda clone.
Untuk membuat direktori dan mendownload file cadangan, ikuti langkah-langkah berikut:
Dalam sesi RDP Anda, klik tombol Mulai di taskbar Windows, ketik
PowerShell
, lalu pilih aplikasi Windows PowerShell.Pada prompt PowerShell, buat struktur direktori untuk penyimpanan database:
mkdir D:\sql-server-data\wideworldimporters
Download file cadangan ke drive D:
bitsadmin /transfer sampledb /dynamic /download /priority FOREGROUND ` https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak ` D:\sql-server-data\WideWorldImporters-Full.bak
Memulihkan database contoh
Anda perlu memulihkan database contoh ke drive D (data
), baik secara interaktif menggunakan wizard Microsoft SQL Server Management Studio (SSMS), maupun secara langsung dengan menjalankan perintah Transact-SQL.
SSMS Wizard
- Dalam sesi RDP, klik tombol Start di taskbar Windows,
ketik
ssms
, lalu pilih Microsoft SQL Server Management Studio (Run as Administrator). - Setelah aplikasi dimulai, klik Hubungkan untuk terhubung ke mesin database
sql-server-prod
menggunakan Windows Authentication. - Di Object Explorer, klik kanan Database, lalu pilih Pulihkan Database.
- Pada Sumber, pilih Perangkat, lalu klik tombol [...] di samping nama perangkat.
- Pada dialog Pilih perangkat cadangan, pastikan File dipilih untuk Jenis media cadangan, lalu klik Tambahkan.
- Dalam pemilih file, cari
D:\sql-server-data
, klik fileWideWorldImporters-Full.bak
, lalu klik OK. Klik OK untuk menutup dialog Pilih perangkat cadangan.
Dialog Pulihkan Database kini diisi dengan data tentang pencadangan database Wide World Importers.
Pada Pilih halaman, klik File.
Centang kotak Relokasi semua file ke folder.
Di kolom Folder file data dan Folder file log, masukkan
D:\sql-server-data\wideworldimporters
.Klik Oke untuk memulai operasi pemulihan.
Setelah beberapa menit, Anda akan diberi tahu bahwa database telah dipulihkan.
Transact-SQL
- Dalam sesi RDP, klik tombol Start di taskbar Windows,
ketik
ssms
, lalu pilih Microsoft SQL Server Management Studio (Run as Administrator). - Setelah aplikasi dimulai, klik Hubungkan untuk terhubung ke mesin database
sql-server-prod
menggunakan Windows Authentication. - Pilih File > Baru > Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru.
Mulai pemulihan dari file cadangan yang Anda download:
USE [master] GO RESTORE DATABASE [WideWorldImporters] FROM DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-Full.bak' WITH FILE = 1, MOVE N'WWI_Primary' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf', MOVE N'WWI_UserData' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf', MOVE N'WWI_Log' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf', MOVE N'WWI_InMemory_Data_1' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1', NOUNLOAD, STATS = 5 GO
Perintah ini akan memulihkan database dan file log ke dalam direktori
D:\sql-server-data\wideworldimporters
.Klik kanan kode kueri, lalu klik Jalankan.
Tunggu beberapa menit hingga pemulihan database selesai. Anda dapat mengklik Refresh refresh di Object Explorer untuk melihat apakah database tercantum di hierarki Database atau tidak. Setelah pemulihan database selesai, Anda dapat menutup jendela kueri tanpa menyimpannya.
Untuk memverifikasi bahwa database contoh berfungsi, Anda dapat menjalankan sebuah kueri.
Di Microsoft SQL Server Management Studio, pilih File > Baru > Jalankan Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru, lalu salin kode berikut:
SELECT top(100) i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName, i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy FROM WideWorldImporters.Sales.Invoices i JOIN WideWorldImporters.Sales.Customers c ON i.CustomerID=c.CustomerID WHERE i.ConfirmedDeliveryTime IS NOT NULL ORDER BY i.InvoiceDate desc;
Kueri ini mengambil informasi ringkasan dari 100 invoice yang terakhir dikirimkan.
Klik kanan jendela kueri, lalu klik Jalankan.
Panel Hasil menampilkan informasi ringkasan.
Membuat instance VM pengujian
Di bagian ini, Anda akan membuat instance SQL Server bernama sql-server-test
sebagai
tujuan untuk database yang di-clone. Konfigurasi instance ini identik dengan instance produksi. Namun, Anda tidak membuat disk data kedua. Sebagai gantinya, Anda akan memasang disk data tersebut nanti dalam tutorial ini.
Konsol
Buka halaman VM instances.
Klik Create.
Di kolom Nama, ketik
sql-server-test
.Untuk Region, pilih us-east1.
Untuk Zone, pilih us-east1-b.
Di bagian Konfigurasi mesin, ubah Jenis mesin menjadi n1-standard-2 (2 vCPU).
Di samping image Boot disk, klik Ubah.
Di panel Boot disk, klik tab Image publik.
Di menu drop-down Sistem Operasi, pilih SQL Server di Windows Server.
Pada menu drop-down Version, pilih SQL Server 2022 Standard di Windows Server 2022 Datacenter.
Pastikan nilai berikut telah ditetapkan:
- Jenis boot disk disetel ke Persistent disk standar.
- Ukuran (GB) ditetapkan ke 50.
Klik Select.
Pada bagian Identitas dan akses API, tetapkan Cakupan akses ke Izinkan akses penuh ke semua Cloud API.
Klik Create.
Cloud Shell
Buka Cloud Shell.
Buat instance SQL Server pengujian:
gcloud compute instances create sql-server-test \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --image-family=sql-std-2022-win-2022 \ --image-project=windows-sql-cloud \ --boot-disk-size=50GB \ --boot-disk-device-name=sql-server-test \ --subnet=$SUBNET_NAME
Anda dapat mengabaikan peringatan performa disk karena tidak memerlukan performa tinggi untuk tutorial ini.
Terhubung ke instance VM
Di konsol Google Cloud, buka halaman instance VM.
Tunggu sekitar 5 menit hingga instance VM siap.
Untuk memantau proses inisialisasi VM, lihat output port serial-nya di Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Saat Anda melihat pesan berikut, artinya inisialisasi selesai.
Instance setup finished. sql-server-test is ready to use.
Tekan Control+C untuk berhenti memantau port serial.
Klik nama instance
sql-server-test
untuk menampilkan halaman Detail instance VM.Pada bagian Akses jarak jauh, klik Tetapkan sandi Windows, lalu klik Tetapkan untuk membuat akun Anda di komputer jarak jauh.
Langkah ini akan membuat sandi untuk Anda. Catat atau salin sandi tersebut ke file sementara yang aman.
Di bagian Compute Engine pada konsol Google Cloud, klik menu dropdown RDP dan pilih opsi Download file RDP agar dapat mendownload file RDP untuk instance Anda.
Gunakan file ini untuk terhubung ke instance menggunakan klien RDP. Untuk mengetahui informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh.
Saat diminta, masukkan sandi yang baru saja dibuat, lalu klik OK.
Untuk menyetujui sertifikat server dan login ke instance Windows jarak jauh, klik Lanjutkan.
Saat ditanya apakah Anda ingin PC dapat ditemukan, klik Tidak.
Meng-clone database menggunakan snapshot disk Compute Engine
Salah satu cara untuk meng-clone database SQL Server yang berjalan di Compute Engine adalah dengan menyimpan database di disk data terpisah dan menggunakan snapshot persistent disk untuk membuat clone disk tersebut.
Snapshot persistent disk memungkinkan Anda mendapatkan salinan data dalam disk untuk waktu tertentu. Menjadwalkan snapshot disk adalah salah satu cara untuk mencadangkan data Anda secara otomatis.
Di bagian tutorial ini, Anda akan melakukan hal-hal berikut:
- Mengambil snapshot disk data server produksi.
- Membuat disk baru dari snapshot.
- Memasang disk baru ke server pengujian.
- Lampirkan database di disk ini ke SQL Server pada instance pengujian.
Diagram berikut menunjukkan cara meng-clone database menggunakan snapshot disk.
Membuat snapshot disk
Konsol
Di Konsol Google Cloud, buka halaman VM instances.
Klik nama instance
sql-server-prod
.Di halaman Detail instance VM, klik disk
sql-server-prod-data
.Klik Buat Snapshot.
Beri nama snapshot
sql-server-prod-data-snapshot
.Untuk Location, pilih Regional.
Pastikan region telah ditetapkan ke
us-east1
(sama dengan instance VM Anda).Pilih opsi Aktifkan VSS.
Opsi ini menggunakan Volume Shadow Copy Service di Microsoft Windows untuk membuat snapshot yang konsisten.
Klik Create.
Setelah beberapa menit, snapshot Anda akan dibuat.
Cloud Shell
Buka Cloud Shell.
Buat snapshot disk data Anda di zona yang sama dengan instance VM:
gcloud compute disks snapshot sql-server-prod-data \ --snapshot-names=sql-server-prod-data-snapshot \ --guest-flush \ --zone="${ZONE}"
Opsi
--guest-flush
menggunakan Volume Shadow Copy Service di Microsoft Windows untuk membuat snapshot yang konsisten. Setelah beberapa menit, snapshot Anda akan dibuat.
Memasang snapshot disk ke instance pengujian
Anda harus membuat disk data baru dari snapshot yang telah dibuat, lalu memasangnya ke instance sql-server-test
.
Konsol
Pada langkah-langkah berikut, Anda akan membuat persistent disk baru, menggunakan snapshot disk produksi untuk kontennya, lalu memasang disk ke instance pengujian.
Di konsol Google Cloud, buka halaman instance VM.
Klik nama instance
sql-server-test
.Di halaman VM instance details, klik Edit.
Klik Tambahkan disk baru add.
Beri nama disk baru
sql-server-test-data
.Untuk Jenis Sumber, pilih Snapshot.
Untuk instance
sql-server-prod-data-snapshot
yang Anda buat, pilih Sumber snapshot.Pastikan Mode disetel ke Baca/Tulis.
Klik Done.
Cloud Shell
Buka Cloud Shell.
Buat persistent disk baru menggunakan snapshot disk produksi untuk kontennya:
gcloud beta compute disks create sql-server-test-data \ --size=100GB \ --source-snapshot=sql-server-prod-data-snapshot \ --zone="${ZONE}"
Pasang disk baru ke instance
sql-server-test
Anda dengan izin baca-tulis:gcloud compute instances attach-disk sql-server-test \ --disk=sql-server-test-data --mode=rw
Memasang disk data baru di Windows
Disk yang Anda buat terpasang ke instance VM, tetapi sedang offline, dan volumenya disetel ke hanya baca. Untuk mengonfigurasi volume sebagai baca-tulis dan dapat dipasang, lakukan langkah-langkah berikut:
- Di jendela klien RDP yang terhubung ke instance
sql-server-test
Anda, klik tombol Mulai di taskbar Windows, ketikdiskpart
, lalu klik diskpart untuk membuka DiskPart. - Saat Anda diminta untuk mengizinkan aplikasi membuat perubahan, klik Ya.
Tampilkan daftar disk yang terpasang ke instance Anda:
list disk
Outputnya adalah sebagai berikut:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Offline 100 GB 0 B *
Disk data Anda (Disk 1, 100 GB) offline.
Pilih disk data:
select disk 1
Pindahkan disk secara online:
online disk
Cantumkan volume yang tersedia:
list volume
Outputnya adalah sebagai berikut:
Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 C NTFS Partition 49 GB Healthy Boot Volume 1 FAT32 Partition 100 MB Healthy System Volume 2 RAW Partition 99 GB Healthy
Volume 2 (99 GB) adalah volume data Anda. Folder tersebut tercantum sebagai Tersembunyi tanpa huruf drive yang ditetapkan.
Pilih volume:
select volume 2
Hapus atribut yang ditetapkan saat Anda membuat volume dari snapshot:
attr volume clear readonly hidden nodefaultdriveletter shadowcopy
Perintah ini membuat volume dapat dipasang.
Pasang volume sebagai kandar D:
assign letter=d
Keluar dari DiskPart:
exit
Mereset kepemilikan dan izin file
Karena Anda membuat disk data dengan mengambil snapshot pada instance sql-server-prod
, ID pengguna untuk kepemilikan dan izin file berbeda dengan
ID pada instance sql-server-test
. Anda perlu mengubah kepemilikan
file kepada pengguna di instance sql-server-test
dan memperbarui izin agar
file dapat dibaca oleh pengguna lokal dan pengguna MSSQLSERVER
.
- Di jendela klien RDP yang terhubung ke instance
sql-server-test
, klik tombol Mulai di taskbar Windows, lalu ketikcmd
. - Buka aplikasi Command Prompt sebagai administrator.
Tetapkan pemilik file dalam folder
sql-server-data
ke pengguna layananMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Reset semua izin pada semua file di folder
sql-server-data
level atas:icacls d:\sql-server-data /reset /t
Perbarui daftar kontrol akses (ACL) untuk folder
sql-server-data
:icacls d:\sql-server-data /grant Administrators:(oi)(ci)f "nt service\mssqlserver":(oi)(ci)f "owner rights":(oi)(ci)f %USERNAME%:(oi)(ci)f
Nonaktifkan pewarisan dari folder root drive, sehingga hanya izin sebelumnya yang diterapkan:
icacls d:\sql-server-data /inheritancelevel:r
Keluar dari aplikasi Command Prompt:
exit
Instance SQL Server dan pengguna lokal di instance sql-server-test
kini dapat mengakses file database.
Melampirkan database yang di-clone
Sekarang, tambahkan database yang di-clone di drive D (data
) ke instance SQL Server pengujian. Anda dapat melampirkan database secara interaktif menggunakan wizard Microsoft SQL Server Management Studio, maupun secara langsung dengan menjalankan perintah Transact-SQL.
SSMS Wizard
- Pada sesi RDP yang terhubung ke instance
sql-server-test
Anda, klik tombol Start di taskbar Windows, ketikssms
, lalu pilih Microsoft SQL Server Management Studio (Run as Administrator). - Klik Hubungkan untuk terhubung ke mesin database
sql-server-test
menggunakan Windows Authentication. - Di Object Explorer, klik kanan Database, lalu pilih Pasang.
- Di wizard Pasang Database, klik Tambahkan.
- Cari direktori
D:\sql-server-data\wideworldimporters
, klik fileWideWorldImporters.mdf
, lalu klik OK. Klik OK untuk melampirkan database.
Setelah beberapa saat, database yang di-clone akan disertakan. Anda dapat mengklik Refresh refresh di Object Explorer untuk melihat apakah database tercantum di hierarki Database.
Transact-SQL
- Dalam sesi RDP yang terhubung ke instance
sql-server-test
Anda, klik tombol Start di taskbar Windows, ketikssms
, lalu pilih Microsoft SQL Server Management Studio (Run as Administrator). - Klik Hubungkan untuk terhubung ke mesin database
sql-server-prod
menggunakan Windows Authentication. - Pilih File > Baru > Jalankan Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru.
Lampirkan data dan file log dalam direktori
D:\sql-server-data\wideworldimporters
:USE [master] GO CREATE DATABASE [WideWorldImporters] ON ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.mdf' ), ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.ldf' ), ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters_UserData.ndf' ) FOR ATTACH GO
Klik kanan kode kueri, lalu klik Jalankan.
Setelah beberapa saat, database yang di-clone akan disertakan. Anda dapat mengklik Refresh refresh di Object Explorer untuk melihat apakah database Anda tercantum di hierarki Database. Setelah database disertakan, Anda dapat menutup jendela kueri tanpa menyimpannya.
Untuk memverifikasi bahwa database contoh berfungsi, Anda dapat menjalankan sebuah kueri.
Di SQL Server Management Studio, pilih File > Baru > Jalankan Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru, lalu salin kode berikut:
SELECT top(100) i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName, i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy FROM WideWorldImporters.Sales.Invoices i JOIN WideWorldImporters.Sales.Customers c ON i.CustomerID=c.CustomerID WHERE i.ConfirmedDeliveryTime IS NOT NULL ORDER BY i.InvoiceDate desc;
Kueri ini mengambil informasi ringkasan dari 100 invoice yang terakhir dikirimkan.
Untuk menjalankan kueri, klik kanan jendela kueri, lalu pilih Jalankan.
Panel Hasil menampilkan informasi ringkasan.
Setelah mengetahui cara meng-clone database menggunakan snapshot persistent disk, Anda dapat mencoba meng-clone database menggunakan fitur pencadangan dan pemulihan. Guna menyelesaikan tutorial untuk pendekatan kedua ini, Anda harus menghapus database yang telah di-clone dari instance sql-server-test
.
Mengapus database yang di-clone
Untuk menghapus database yang di-clone yang Anda buat dengan menggunakan snapshot disk, lakukan langkah-langkah berikut.
SSMS Wizard
- Di sesi RDP yang terhubung ke instance
sql-server-test
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-test
. - Di Object Explorer, luaskan Database, klik kanan
database
WorldWideImporters
, lalu pilih Hapus. - Di wizard Hapus Objek, pastikan untuk mencentang kotak Tutup koneksi yang ada.
- Klik Oke.
Transact-SQL
- Di sesi RDP yang terhubung ke instance
sql-server-test
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-test
. Untuk menutup semua koneksi ke database
WideWorldImporters
dan menghapusnya, salin skrip berikut ke jendela kueri baru, klik kanan kode, lalu klik Jalankan:USE [master] GO ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DROP DATABASE [WideWorldImporters] GO
Setelah database dihapus, Anda dapat menutup jendela kueri tanpa menyimpannya. Anda dapat mengklik Refresh refresh di Object Explorer untuk mengonfirmasi bahwa database telah dihapus.
Meng-clone menggunakan pencadangan dan pemulihan
Metode kedua untuk meng-clone database SQL Server yang berjalan di Compute Engine adalah menggunakan pencadangan dan pemulihan SQL Server native. Dengan pendekatan ini, Anda mentransfer cadangan menggunakan Cloud Storage.
Bagian tutorial ini menggunakan resource yang Anda buat di bagian Meng-clone database menggunakan snapshot disk Compute Engine dalam tutorial ini. Jika belum menyelesaikan bagian tersebut, Anda harus melakukannya sebelum melanjutkan.
Di bagian tutorial ini, Anda akan melakukan hal-hal berikut:
- Membuat bucket Cloud Storage.
- Cadangkan database di server produksi.
- Salin file cadangan dari server produksi ke Cloud Storage.
- Salin file cadangan dari Cloud Storage ke server pengujian.
- Pulihkan cadangan pada instance pengujian.
Diagram berikut menunjukkan cara database di-clone dengan mentransfer cadangan menggunakan Cloud Storage.
Karena sistem di luar Google Cloud dapat diberi akses ke Cloud Storage, Anda dapat menggunakan pendekatan ini untuk meng-clone database dari instance SQL Server eksternal.
Membuat bucket Cloud Storage
Anda perlu membuat bucket Cloud Storage yang menyimpan file cadangan saat mentransfernya dari instance sql-server-prod
ke instance sql-server-test
.
Konsol
Di konsol Google Cloud, buka halaman Browser Cloud Storage.
Klik Create bucket.
Beri nama bucket
project-name
-bucket.Ganti kode berikut:
project-name
: ID project Google Cloud Anda.
Luaskan Pilih kelas penyimpanan default, lalu pilih Regional.
Untuk Lokasi, pilih us-east1.
Klik Create.
Cloud Shell
Buka Cloud Shell.
Buat bucket Cloud Storage di region yang sama dengan instance VM Anda:
gsutil mb -l "${REGION}" "gs://$(gcloud config get-value project)-bucket"
Membuat cadangan database secara penuh pada titik waktu tertentu
Di lingkungan produksi, Anda mungkin sudah membuat cadangan. Anda dapat menggunakan cadangan ini sebagai dasar untuk meng-clone database. Dalam tutorial ini, Anda akan membuat pencadangan salinan saja sehingga tidak memengaruhi jadwal pencadangan penuh atau inkremental yang sudah ada.
SSMS Wizard
- Di sesi RDP yang terhubung ke instance
sql-server-prod
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-prod
. - Di Object Explorer, luaskan Database, klik kanan
database
WorldWideImporters
, lalu pilih Tugas > Cadangkan. - Di wizard Cadangkan Database, pastikan nilai berikut telah ditetapkan:
- Jenis cadangan ditetapkan ke Penuh.
- Pencadangan salinan saja dipilih.
- Cadangkan ke disetel ke Disk.
- Untuk menambahkan file cadangan, klik Tambahkan.
Di kolom Tujuan, masukkan
D:\sql-server-data\WideWorldImporters-copy.bak
.Pilih halaman Opsi Media, lalu pilih Timpa semua set cadangan yang ada.
Pilih halaman Opsi Cadangan, lalu ubah kompresi Tetapkan cadangan menjadi Kompresi cadangan.
Untuk membuat cadangan, klik OK.
Cadangan memerlukan waktu beberapa menit untuk dibuat.
Transact-SQL
- Di sesi RDP yang terhubung ke instance
sql-server-prod
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-prod
. Untuk melakukan pencadangan
WideWorldImporters
databaseyang dikompresi hanya salinannya ke file
d:\sql-server-data\WideWorldImporters-copy.bak
, salin skrip berikut ke jendela kueri baru, klik kanan kode, dan lalu klik Jalankan.BACKUP DATABASE [WideWorldImporters] TO DISK = N'd:\sql-server-data\WideWorldImporters-copy.bak' WITH COPY_ONLY, NOFORMAT, INIT, NAME = N'WideWorldImporters-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 GO
Tunggu beberapa menit hingga server membuat cadangan. Setelah pencadangan database selesai, Anda dapat menutup jendela kueri tanpa menyimpannya.
Menyalin file cadangan ke Cloud Storage
- Di sesi RDP yang terhubung ke instance
sql-server-prod
, buka jendela Windows PowerShell. Salin file cadangan ke dalam bucket Cloud Storage yang Anda buat sebelumnya:
gsutil cp -n d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/"
Keluar dari PowerShell.
exit
Menyalin file cadangan dari Cloud Storage ke sql-server-test
- Di sesi RDP yang terhubung ke instance
sql-server-test
, buka jendela Windows PowerShell. Salin file cadangan ke dalam bucket Cloud Storage yang Anda buat sebelumnya:
gsutil cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
Keluar dari PowerShell.
exit
Instance pengujian Anda kini memiliki cadangan salinan lengkap database Anda di disk lokal.
Memulihkan cadangan
Anda kini dapat memulihkan cadangan salinan lengkap ke drive D (data
) dari
instance sql-server-test
.
SSMS Wizard
- Di sesi RDP yang terhubung ke instance
sql-server-test
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-test
. - Di Object Explorer, klik kanan Database, lalu pilih Pulihkan Database.
- Untuk Sumber, pilih Perangkat, lalu klik tombol [...] di samping nama perangkat.
- Dalam dialog Pilih perangkat cadangan, pilih File dalam daftar Jenis media cadangan, lalu klik Tambahkan ini.
- Dalam pemilih file, cari
D:\sql-server-data
, klik fileWideWorldImporters-copy.bak
, lalu klik OK. Klik OK untuk menutup dialog Pilih perangkat cadangan.
Dialog Pulihkan Database kini diisi dengan data tentang pencadangan database
WideWorldImporters
.Pada Pilih halaman, klik File.
Pilih Relokasi semua file ke folder.
Di kolom Folder file data dan Folder file log, masukkan
D:\sql-server-data\wideworldimporters
.Untuk memulai operasi pemulihan, klik OK.
Setelah proses ini selesai, Anda akan melihat pesan
Database 'WideWorldImporters' restored successfully
.
Transact-SQL
- Di sesi RDP yang terhubung ke instance
sql-server-test
Anda, buka Microsoft SQL Server Management Studio, lalu hubungkan ke mesin databasesql-server-test
. - Pilih File > Baru > Jalankan Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru.
Salin perintah T-SQL berikut untuk memulai pemulihan dari file cadangan yang Anda salin dari Cloud Storage, sehingga memulihkan database dan file log ke direktori
D:\sql-server-data\wideworldimporters
:USE [master] GO RESTORE DATABASE [WideWorldImporters] FROM DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-copy.bak' WITH FILE = 1, MOVE N'WWI_Primary' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf', MOVE N'WWI_UserData' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf', MOVE N'WWI_Log' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf', MOVE N'WWI_InMemory_Data_1' TO N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1', NOUNLOAD, STATS = 5 GO
Klik kanan kode, lalu klik Jalankan.
Setelah beberapa menit, pemulihan database selesai. Anda dapat mengklik Refresh refresh di Object Explorer untuk melihat apakah database tersebut sudah tercantum dalam hierarki Database. Setelah pemulihan database selesai, Anda dapat menutup jendela kueri tanpa menyimpannya.
Untuk menunjukkan bahwa database berfungsi, Anda dapat menjalankan sebuah kueri.
Di Microsoft SQL Management Studio, pilih File > Baru > Jalankan Kueri dengan Koneksi Saat Ini untuk membuka jendela kueri baru, lalu salin kode berikut:
SELECT top(100) i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName, i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy FROM WideWorldImporters.Sales.Invoices i JOIN WideWorldImporters.Sales.Customers c ON i.CustomerID=c.CustomerID WHERE i.ConfirmedDeliveryTime IS NOT NULL ORDER BY i.InvoiceDate desc;
Kueri ini mengambil informasi ringkasan dari 100 invoice yang terakhir dikirimkan.
Klik kanan jendela kueri, lalu klik Jalankan.
Panel Hasil menampilkan informasi ringkasan.
Menggunakan Cloud SQL sebagai tujuan clone
Jika database tujuan Anda dihosting di Cloud SQL, dan database asalnya berada di Compute Engine, satu-satunya mekanisme clone yang didukung adalah dengan mencadangkan database ke Cloud Storage, lalu memulihkan database ke Cloud SQL.
Untuk tutorial ini, gunakan kembali cadangan yang Anda buat di bagian sebelumnya.
Membuat Cloud SQL untuk instance SQL Server
Buka Cloud Shell.
Buat instance Cloud SQL untuk SQL Server yang menjalankan versi database yang sama dengan instance
sql-server-prod
Anda:gcloud sql instances create sqlserver-cloudsql \ --database-version=SQLSERVER_2022_STANDARD \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --region=${REGION}
Ini akan membuat instance dengan pengguna root
sqlserver
dengan sandisqlserver12@
.
Memperbarui izin objek
Izin yang benar harus ditetapkan pada bucket Cloud Storage dan objek cadangan sehingga akun layanan Cloud SQL dapat membacanya.
Izin ini ditetapkan secara otomatis saat Anda menggunakan konsol Google Cloud untuk mengimpor objek, atau Anda dapat menetapkannya menggunakan perintah gcloud
.
Buka Cloud Shell.
Tetapkan variabel lingkungan yang berisi alamat akun layanan instance Cloud SQL Anda:
CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
Tambahkan akun layanan ke ACL bucket sebagai penulis, dan ke objek ekspor sebagai pembaca:
gsutil acl ch -u "${CLOUDSQL_SA}":W "gs://$(gcloud config get-value project)-bucket/" gsutil acl ch -u "${CLOUDSQL_SA}":R \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak"
Mengimpor database yang diekspor
Buka Cloud Shell.
Impor file yang diekspor ke instance Cloud SQL Anda:
gcloud sql import bak sqlserver-cloudsql \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \ --database WideWorldImporters
Saat diminta, masukkan
y
.Instal paket alat SQL Server:
sudo apt install -y mssql-tools
Jika Anda menyetujui persyaratan lisensi, masukkan
yes
saat diminta.Gunakan alat ini untuk terhubung ke Cloud SQL dari Cloud Shell sehingga Anda dapat menjalankan kueri di instance Cloud SQL.
Hubungkan proxy Cloud SQL ke instance SQL Server Anda:
CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)') cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Untuk memverifikasi bahwa database yang di-clone berfungsi, jalankan kueri:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q \ 'SELECT top(100) i.InvoiceDate, i.InvoiceID, i.CustomerID, LEFT(c.CustomerName,20) CustomerName, i.ConfirmedDeliveryTime, LEFT(i.ConfirmedReceivedBy,20) ConfirmedReceivedBy FROM WideWorldImporters.Sales.Invoices i JOIN WideWorldImporters.Sales.Customers c ON i.CustomerID=c.CustomerID WHERE i.ConfirmedDeliveryTime IS NOT NULL ORDER BY i.InvoiceDate desc;'
Saat diminta, masukkan sandi pengguna
sqlserver
dari server databasesqlserver-cloudsql
(sqlserver12@
).Kueri ini mengambil informasi ringkasan dari 100 invoice yang terakhir dikirimkan.
Outputnya adalah sebagai berikut:
InvoiceDate InvoiceID CustomerID CustomerName ConfirmedDeliveryTime ConfirmedReceivedBy ---------------- ----------- ----------- -------------------- -------------------------------------- -------------------- 2016-05-30 70349 581 Wingtip Toys (Munich 2016-05-31 07:05:00.0000000 Youssef Eriksson 2016-05-30 70350 123 Tailspin Toys (Roe P 2016-05-31 07:10:00.0000000 Ella Zvirbule 2016-05-30 70351 175 Tailspin Toys (San A 2016-05-31 07:15:00.0000000 Julio Correa 2016-05-30 70352 1029 Veronika Necesana 2016-05-31 07:20:00.0000000 Veronika Necesana 2016-05-30 70353 1014 Narendra Tickoo 2016-05-31 07:25:00.0000000 Narendra Tickoo 2016-05-30 70354 930 Shantanu Huq 2016-05-31 07:30:00.0000000 Shantanu Huq 2016-05-30 70355 963 Be Trang 2016-05-31 07:35:00.0000000 Be Trang 2016-05-30 70356 567 Wingtip Toys (Jerome 2016-05-31 07:40:00.0000000 Severins Polis 2016-05-30 70357 510 Wingtip Toys (Grabil 2016-05-31 07:45:00.0000000 Manish Ghosh ...
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, Anda dapat menghapus project Google Cloud yang Anda buat untuk tutorial ini.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Pelajari cara menggunakan cadangan Microsoft SQL Server untuk pemulihan point-in-time di Compute Engine.
- Pelajari praktik terbaik untuk menjalankan instance SQL Server di Compute Engine.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.