Memigrasikan database SQL Server dari Windows ke Linux menggunakan pencadangan dan pemulihan
Berlaku untuk:SQL Server - Linux
Fitur pencadangan dan pemulihan SQL Server adalah cara yang disarankan untuk memigrasikan database dari SQL Server di Windows ke SQL Server di Linux. Dalam tutorial ini, Anda akan menelusuri langkah-langkah yang diperlukan untuk memindahkan database ke Linux dengan teknik pencadangan dan pemulihan.
- Membuat file cadangan di Windows dengan SSMS
- Menginstal shell Bash di Windows
- Memindahkan file cadangan ke Linux dari shell Bash
- Memulihkan file cadangan di Linux dengan Transact-SQL
- Menjalankan kueri untuk memverifikasi migrasi
Anda juga dapat membuat Grup Ketersediaan AlwaysOn SQL Server untuk memigrasikan database SQL Server dari Windows ke Linux. Lihat sql-server-linux-availability-group-cross-platform.
Prasyarat
Prasyarat berikut diperlukan untuk menyelesaikan tutorial ini:
Komputer Windows dengan yang berikut ini:
- SQL Server terinstal.
- SQL Server Management Studio terinstal.
- Database target untuk dimigrasikan.
Komputer Linux dengan yang terinstal berikut:
Membuat cadangan di Windows
Ada beberapa cara untuk membuat file cadangan database di Windows. Langkah-langkah berikut menggunakan SQL Server Management Studio (SSMS).
Mulai SQL Server Management Studio di komputer Windows Anda.
Dalam dialog koneksi, masukkan localhost.
Di Object Explorer, perluas Database.
Klik kanan database target Anda, pilih Tugas, lalu klik Cadangkan....
Dalam dialog Pencadangan Database, verifikasi bahwa Jeniscadangan penuh dan Cadangkan ke adalah Disk. Nama catatan dan lokasi file. Misalnya, database bernama YourDB di SQL Server 2016 memiliki jalur
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak
cadangan default .Pilih OK untuk mencadangkan database Anda.
Catatan
Opsi lain adalah menjalankan kueri Transact-SQL untuk membuat file cadangan. Perintah Transact-SQL berikut melakukan tindakan yang sama dengan langkah-langkah sebelumnya untuk database yang disebut YourDB:
BACKUP DATABASE [YourDB] TO DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Menginstal shell Bash di Windows
Untuk memulihkan database, Anda harus terlebih dahulu mentransfer file cadangan dari komputer Windows ke komputer Linux target. Dalam tutorial ini, kita memindahkan file ke Linux dari shell Bash (jendela terminal) yang berjalan di Windows.
Instal shell Bash di komputer Windows Anda yang mendukung perintah scp (salinan aman) dan ssh (masuk jarak jauh). Dua contoh meliputi:
- Subsistem Windows untuk Linux (Windows 10)
- Shell Git Bash (https://git-scm.com/downloads)
Buka sesi Bash di Windows.
Menyalin file cadangan ke Linux
Di sesi Bash Anda, navigasikan ke direktori yang berisi file cadangan Anda. Contohnya:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\'
Gunakan perintah scp untuk mentransfer file ke komputer Linux target. Contoh berikut mentransfer YourDB.bak ke direktori beranda pengguna1 di server Linux dengan alamat IP 192.0.2.9:
scp YourDB.bak user1@192.0.2.9:./
Tip
Ada alternatif untuk menggunakan scp untuk transfer file. Salah satunya adalah menggunakan Samba untuk mengonfigurasi berbagi jaringan SMB antara Windows dan Linux. Untuk panduan tentang Ubuntu, lihat Cara Membuat Berbagi Jaringan Via Samba. Setelah ditetapkan, Anda dapat mengaksesnya sebagai berbagi file jaringan dari Windows, seperti \\machinenameorip\share.
Memindahkan file cadangan sebelum memulihkan
Pada titik ini, file cadangan ada di server Linux Anda di direktori beranda pengguna Anda. Sebelum memulihkan database ke SQL Server, Anda harus menempatkan cadangan dalam subdirektori /var/opt/mssql, karena ini dimiliki oleh pengguna mssql
dan grup mssql
. Jika Anda ingin mengubah lokasi cadangan default, lihat artikel Mengonfigurasi dengan mssql-conf .
Dalam sesi Windows Bash yang sama, sambungkan dari jarak jauh ke komputer Linux target Anda dengan ssh. Contoh berikut terhubung ke komputer Linux 192.0.2.9 sebagai pengguna1.
ssh user1@192.0.2.9
Anda sekarang menjalankan perintah di server Linux jarak jauh.
Masukkan mode pengguna super.
sudo su
Buat direktori cadangan baru. Parameter -p tidak melakukan apa pun jika direktori sudah ada.
mkdir -p /var/opt/mssql/backup
Pindahkan file cadangan ke direktori tersebut. Dalam contoh berikut, file cadangan berada di direktori beranda pengguna1. Ubah perintah agar sesuai dengan lokasi dan nama file file cadangan Anda.
mv /home/user1/YourDB.bak /var/opt/mssql/backup/
Keluar dari mode pengguna super.
exit
Memulihkan database Anda di Linux
Untuk memulihkan cadangan database, Anda dapat menggunakan perintah RESTORE DATABASE Transact-SQL (TQL).
Catatan
Langkah-langkah berikut menggunakan alat sqlcmd . Jika Anda belum menginstal Alat SQL Server, lihat Menginstal alat baris perintah SQL Server di Linux.
Di terminal yang sama, luncurkan sqlcmd. Contoh berikut terhubung ke instans SQL Server lokal dengan pengguna SA . Masukkan kata sandi saat diminta, atau tentukan kata sandi dengan menambahkan parameter -P .
sqlcmd -S localhost -U SA
>1
Pada perintah , masukkan perintah RESTORE DATABASE berikut, tekan ENTER setelah setiap baris (Anda tidak dapat menyalin dan menempelkan seluruh perintah multibaris sekaligus). Ganti semua kemunculanYourDB
dengan nama database Anda.RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf' GO
Anda akan mendapatkan pesan bahwa database berhasil dipulihkan.
RESTORE DATABASE
mungkin mengembalikan kesalahan seperti contoh berikut:File 'YourDB_Product' cannot be restored to 'Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf'. Use WITH MOVE to identify a valid location for the file. Msg 5133, Level 16, State 1, Server servername, Line 1 Directory lookup for the file "Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf" failed with the operating system error 2(The system cannot find the file specified.).
Dalam hal ini, database berisi file sekunder. Jika file-file ini tidak ditentukan dalam
MOVE
klausulRESTORE DATABASE
, prosedur pemulihan akan mencoba membuatnya di jalur yang sama dengan server asli.Anda dapat mencantumkan semua file yang disertakan dalam cadangan:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak' GO
Anda harus mendapatkan daftar seperti yang di bawah ini (hanya mencantumkan dua kolom pertama):
LogicalName PhysicalName .............. ---------------------------------------------------------------------------------------------------------------------- YourDB Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB.mdf .............. YourDB_Product Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf .............. YourDB_Customer Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB_Customer.ndf .............. YourDB_log Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\YourDB\YourDB_Log.ldf ..............
Anda dapat menggunakan daftar ini untuk membuat
MOVE
klausa untuk file tambahan. Dalam contoh ini,RESTORE DATABASE
adalah:RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Product' TO '/var/opt/mssql/data/YourDB_Product.ndf', MOVE 'YourDB_Customer' TO '/var/opt/mssql/data/YourDB_Customer.ndf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf' GO
Verifikasi pemulihan dengan mencantumkan semua database di server. Database yang dipulihkan harus dicantumkan.
SELECT Name FROM sys.Databases GO
Jalankan kueri lain pada database anda yang dimigrasikan. Perintah berikut mengalihkan konteks ke database YourDB dan memilih baris dari salah satu tabelnya.
USE YourDB SELECT * FROM YourTable GO
Ketika Anda selesai menggunakan sqlcmd, ketik
exit
.Setelah selesai bekerja di sesi ssh jarak jauh, ketik
exit
lagi.
Langkah selanjutnya
Dalam tutorial ini, Anda mempelajari cara mencadangkan database di Windows dan memindahkannya ke server Linux yang menjalankan SQL Server. Anda mempelajari cara untuk:
- Menggunakan SSMS dan Transact-SQL untuk membuat file cadangan di Windows
- Menginstal shell Bash di Windows
- Gunakan scp untuk memindahkan file cadangan dari Windows ke Linux
- Menggunakan ssh untuk terhubung dari jarak jauh ke komputer Linux Anda
- Merelokasi file cadangan untuk mempersiapkan pemulihan
- Menggunakan sqlcmd untuk menjalankan perintah Transact-SQL
- Memulihkan cadangan database dengan perintah RESTORE DATABASE
- Menjalankan kueri untuk memverifikasi migrasi
Selanjutnya, jelajahi skenario migrasi lain untuk SQL Server di Linux.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk