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 Google Cloud. Layanan ini menawarkan cara yang mudah, dengan keamanan yang ditingkatkan, andal, dan memiliki ketersediaan tinggi untuk menyimpan file.
Cloning adalah proses penyalinan database online ke server lain. Salinan tersebut tidak bergantung pada database yang ada dan dipertahankan sebagai snapshot untuk waktu tertentu. Anda dapat menggunakan database yang di-clone untuk berbagai tujuan tanpa membebani server produksi atau mempertaruhkan integritas data produksi. Beberapa tujuannya meliputi:
- Melakukan kueri analisis
- 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: Mencadangkan dan memulihkan 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 meng-clone dari instance SQL Server secara 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 Google Cloud snapshot disk | 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 titik 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 akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Compute Engine
- Cloud Storage
- Microsoft Windows and SQL server licenses
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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Aktifkan Compute Engine API. Mengaktifkan 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 ke sebuah instance dan jumlah total vCPU pada instance VM Anda. Oleh karena itu, file log dan database dapat berada di disk yang sama.
Di Konsol Google Cloud, buka halaman VM instances.
Klik Buat.
Di kolom Nama, ketik
sql-server-prod
.Untuk Region, pilih us-east1.
Untuk Zona, 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.
Di menu drop-down Versi, pilih SQL Server 2022 Standard di Windows Server 2022 Datacenter.
Pastikan nilai berikut ditetapkan:
- Jenis boot disk disetel ke Persistent disk standar.
- Size (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 Buat.
Buka Cloud Shell.
Lakukan inisialisasi variabel berikut:
VPC_NAME=
SUBNET_NAME=VPC_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 Windows Server 2022 Datacenter:
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, ini berarti 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 untuk 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 Anda buat, lalu klik Oke.
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
Untuk menyiapkan lingkungan Anda 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 perintah 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.
- Dalam sesi RDP Anda, klik tombol Mulai di taskbar Windows,
ketik
ssms
, lalu pilih Microsoft SQL Server Management Studio (Jalankan sebagai 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.
- Di pemilih file, buka
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.
Di bagian 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 OK untuk memulai operasi pemulihan.
Setelah beberapa menit, Anda akan diberi tahu bahwa database telah dipulihkan.
- Dalam sesi RDP Anda, klik tombol Mulai di taskbar Windows,
ketik
ssms
, lalu pilih Microsoft SQL Server Management Studio (Jalankan sebagai 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 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 tersebut tercantum dalam hierarki Database. 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 baru saja dikirim.
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.
Buka halaman VM instances.
Klik Buat.
Di kolom Nama, ketik
sql-server-test
.Untuk Region, pilih us-east1.
Untuk Zona, 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.
Di menu drop-down Versi, pilih SQL Server 2022 Standard di Windows Server 2022 Datacenter.
Pastikan nilai berikut ditetapkan:
- Jenis boot disk disetel ke Persistent disk standar.
- Size (GB) ditetapkan ke 50.
Klik Select.
Pada bagian Identitas dan akses API, tetapkan Cakupan akses ke Izinkan akses penuh ke semua Cloud API.
Klik Buat.
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, ini berarti 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 untuk 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 Anda buat, lalu klik Oke.
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 disk persisten 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 di instance pengujian.
Diagram berikut menunjukkan cara meng-clone database menggunakan snapshot disk.
Membuat snapshot disk
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 Lokasi, pilih Regional.
Pastikan region 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 Buat.
Setelah beberapa menit, snapshot Anda akan dibuat.
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
.
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.
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 offline, dan volumenya ditetapkan 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) sedang offline.
Pilih disk data:
select disk 1
Mengaktifkan disk:
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. Drive 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 drive 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 yang ada di instance sql-server-test
. Anda perlu mengubah kepemilikan file ke 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 di folder
sql-server-data
ke pengguna layananMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Reset semua izin di semua file dalam 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
sekarang 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.
- Dalam sesi RDP yang terhubung ke instance
sql-server-test
, klik tombol Mulai 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.
- Buka 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.
- Pada sesi RDP yang terhubung ke instance
sql-server-test
, klik tombol Mulai di taskbar Windows, ketikssms
, lalu pilih Microsoft SQL Server Management Studio (Jalankan sebagai 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 file data dan log di 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 dalam 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 baru saja dikirim.
Untuk menjalankan kueri, klik kanan jendela kueri, lalu pilih Jalankan.
Panel Hasil menampilkan informasi ringkasan.
Setelah mengetahui cara meng-clone database menggunakan snapshot disk persisten,
Anda dapat mencoba meng-clone database menggunakan pencadangan dan pemulihan. Untuk
menyelesaikan tutorial untuk pendekatan kedua ini, Anda harus menghapus database
yang di-clone dari instance sql-server-test
.
Mengapus database yang di-clone
Untuk menghapus database yang di-clone dan Anda buat menggunakan snapshot disk, lakukan langkah-langkah berikut.
- Pada sesi RDP yang terhubung ke instance
sql-server-test
, 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.
- Pada sesi RDP yang terhubung ke instance
sql-server-test
, 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 menyimpan. 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 dengan menggunakan pencadangan dan pemulihan SQL Server native. Dengan pendekatan ini, Anda akan mentransfer pencadangan 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 di 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 Anda mentransfernya dari instance sql-server-prod
ke instance sql-server-test
.
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 Buat.
Buka Cloud Shell.
Buat bucket Cloud Storage di region yang sama dengan instance VM Anda:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
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 hanya salinan sehingga tidak memengaruhi jadwal pencadangan penuh atau inkremental yang sudah ada.
- Pada sesi RDP yang terhubung ke instance
sql-server-prod
, 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 disetel ke Penuh.
- Cadangan hanya salin 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.
Pembuatan cadangan memerlukan waktu beberapa menit.
- Pada sesi RDP yang terhubung ke instance
sql-server-prod
, 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 agar server membuat cadangan. Setelah pencadangan database selesai, Anda dapat menutup jendela kueri tanpa menyimpannya.
Menyalin file cadangan ke Cloud Storage
- Dalam sesi RDP yang terhubung ke instance
sql-server-prod
, buka jendela Windows PowerShell. Salin file cadangan ke bucket Cloud Storage yang Anda buat sebelumnya:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Keluar dari PowerShell.
exit
Menyalin file cadangan dari Cloud Storage ke sql-server-test
- Dalam sesi RDP yang terhubung ke instance
sql-server-test
, buka jendela Windows PowerShell. Salin file cadangan ke bucket Cloud Storage yang Anda buat sebelumnya:
gcloud storage 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 lokalnya.
Memulihkan cadangan
Sekarang Anda dapat memulihkan cadangan salinan lengkap ke drive D (data
) dari instance sql-server-test
.
- Pada sesi RDP yang terhubung ke instance
sql-server-test
, 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.
- Di pemilih file, buka
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
.Di bagian Pilih halaman, klik File.
Pilih Pindahkan 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 selesai, Anda akan melihat pesan
Database 'WideWorldImporters' restored successfully
.
- Pada sesi RDP yang terhubung ke instance
sql-server-test
, 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, yang 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 akan 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 baru saja dikirim.
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, Anda akan menggunakan kembali cadangan yang dibuat selama 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}
Tindakan ini akan membuat instance dengan pengguna root
sqlserver
dengan sandisqlserver12@
.
Memperbarui izin objek
Izin yang benar harus ditetapkan pada bucket Cloud Storage
dan objek pencadangan, agar 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 kebijakan IAM bucket sebagai pembaca dan penulis:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
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.Anda menggunakan alat ini untuk terhubung ke Cloud SQL dari Cloud Shell agar 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;'
Jika diminta, masukkan sandi pengguna
sqlserver
dari server databasesqlserver-cloudsql
(sqlserver12@
).Kueri ini mengambil informasi ringkasan dari 100 invoice yang baru saja dikirim.
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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
- 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.