View a markdown version of this page

Fase 3: Migrasi - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fase 3: Migrasi

Tugas utama migrasi database adalah menyelesaikan migrasi dengan waktu henti minimal. Karena kedua database harus menggunakan bahasa pemrograman dan protokol komunikasi yang sama, Anda mungkin perlu mengonversi kode dan skema untuk sintaks, prosedur, dan fungsi kueri yang serupa. Saat mengonversi skema, pertimbangkan aspek-aspek berikut:

  • Ubah koneksi database yang sesuai untuk mesin baru.

  • Perbaiki peringatan dan kesalahan apa pun dari konversi kode.

  • Ubah pemetaan tabel dan kode yang sesuai untuk skema yang dikonversi.

  • Identifikasi dan refactor fungsionalitas khusus vendor yang digunakan aplikasi Anda.

Anda dapat menggunakan alat migrasi pihak ketiga untuk konversi kode skema, seperti database SAP ASE dan Amazon RDS for SQL Server. Anda mungkin perlu mengonversi beberapa kode secara manual karena non-ANSI SQL tidak didukung di SQL Server.

Setelah Anda mengonversi kode, mengonversi kode aplikasi atau aplikasi Dynamic SQL, lalu lakukan pengujian unit dan fungsional. Untuk informasi selengkapnya, lihat Menguji Objek Database Bermigrasi (SybaseToSQL).

Mengonversi data

Ubah data mentah agar lebih berguna dengan membersihkan, menstandarisasi, memverifikasi, dan menyortirnya. Dalam migrasi database, proses ekstrak, transformasi, dan beban (ETL) digunakan dengan cara berikut:

  • Di dalam database

  • Dengan skrip eksternal

  • Menggunakan alat pihak ketiga

Contoh alat ETL termasuk AWS Glue, Informatica, dan Talend. Untuk migrasi dari SAP ASE ke SQL Server, beberapa alat gratis dapat mengonversi prosedur dan fungsi yang disimpan secara otomatis.

Memvalidasi objek database

Memvalidasi database Anda membantu mencegah masalah pada tahap migrasi berikutnya. Setelah konversi kode, validasi skema database Anda dengan membandingkan elemen-elemen berikut antara SAP ASE dan RDS SQL Server:

  • Skema

  • Tabel

  • Tampilan

  • Fungsi

  • Indeks prosedur tersimpan

  • Pemicu

  • Kendala (misalnya, kunci utama, kunci asing, cek, dan default)

Periksa apakah setiap objek bermigrasi dengan benar. Jika Anda menemukan perbedaan, identifikasi alasan kegagalan tersebut. Anda mungkin perlu membuat objek yang hilang secara manual di database target atau mengonversi kode Transact-SQL. Untuk informasi selengkapnya, lihat Memvalidasi objek database setelah bermigrasi dari SAP ASE ke Amazon RDS for SQL Server atau Microsoft SQL Server.

Migrasi data menggunakan AWS DMS

Jika Anda memiliki beberapa pengguna database, aplikasi Anda mungkin perlu dimigrasi sesuai jadwal. Bergantung pada ukuran database dan jendela migrasi, migrasi data tersebut memerlukan pengetahuan tentang beban penuh dan beban tambahan. Untuk alasan ini, AWS DMS dapat menghubungkan sumber dan target database untuk mereplikasi isi database sesuai dengan proses berikut:

  • Membuat server replikasi.

  • Buat titik akhir sumber dan target yang menggambarkan koneksi penyimpanan data.

  • Buat satu atau beberapa tugas migrasi untuk memigrasikan data antara penyimpanan data sumber dan target.

  • Replikasi yang sedang berlangsung dari SAP ASE ke SQL Server

  • (Opsional) Selesaikan migrasi data dari SAP ASE ke SQL Server dengan perubahan pengambilan data

Anda mungkin perlu mengoptimalkan AWS DMS untuk menangani tipe data tertentu. Untuk informasi selengkapnya, lihat Menggunakan database SAP ASE sebagai sumber untuk AWS DMS.

Migrasi data offline

Anda dapat menggunakannya AWS Storage Gateway untuk mengintegrasikan database SAP ASE Anda dengan Amazon Simple Storage Service (Amazon S3), yang menyediakan penyimpanan yang hemat biaya, terukur, dan aman untuk backup database SAP ASE lokal. Untuk informasi selengkapnya, lihat Mengintegrasikan database SAP ASE ke Amazon AWS Storage Gateway S3 menggunakan.

Menggunakan alat pihak ketiga

Beberapa aplikasi berfungsi sebagai titik kontak tunggal (SPOC) yang berinteraksi dengan aplikasi lain. Saat bermigrasi ke platform database SQL Server, interkoneksi ini mungkin terpengaruh, dan pemantauan basis data mungkin memerlukan alat asli atau pihak ketiga yang menggunakan protokol komunikasi khusus server. Penting untuk menilai apakah aplikasi dan alat dependen ini sudah mendukung SQL Server atau jika mereka memerlukan modifikasi agar berfungsi dengan baik.

Untuk aplikasi yang dikemas, konsultasikan dengan vendor untuk menentukan apakah mereka mendukung Amazon RDS for SQL Server. Untuk aplikasi kustom, Anda mungkin perlu memodifikasi kode untuk memastikan kompatibilitas dengan database yang dimigrasi.

Memantau database

Terlepas dari jalur migrasi yang Anda pilih, Amazon CloudWatch berperan dalam mengumpulkan metrik, seperti jenis CPU, memori, dan I/O fungsi. Ini juga mampu mengatur ambang metrik dan memulai tindakan saat ambang batas dipicu.

Misalnya, Anda dapat membuat alarm untuk metrik, notifikasi, dan tindakan klaster Amazon RDS untuk mendeteksi dan mematikan instans pembaca yang tidak digunakan atau kurang dimanfaatkan. Menyetel alarm pada metrik dan peristiwa dapat membantu meminimalkan waktu henti dan dampak bisnis. Layanan AWS seperti Amazon S3, Amazon RDS Performance Insights, Amazon CloudWatch, dan AWS CloudTrail sudah terintegrasi dengan platform database RDS, dan kami merekomendasikan mereka untuk memantau kinerja.

Memvalidasi data

Setelah migrasi data dari SAP ASE ke Amazon RDS for SQL Server selesai, validasi data untuk memastikan akurasi dan konsistensi. Gunakan kueri SQL berikut untuk menghasilkan pernyataan metadata untuk setiap tabel dalam database Anda.

Langkah 1: Buat pernyataan metadata dan daftar kolom

SELECT dt.schema_name, dt.table_name, STRING_AGG(dt.column_name, ',') AS column_name, STRING_AGG(dt.cname, ',') AS column_order FROM ( SELECT object_name(a.id) AS table_name, a.name colname, c.name col_type, a.isnullable, a.name AS cname, schema_name(b.uid) AS schema_name, CASE WHEN a.isnullable = 1 THEN CASE WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name WHEN (c.name LIKE '%int%' OR c.name = 'numeric') THEN 'coalesce('+a.name+',0) as '+a.name WHEN c.name IN ('decimal','float','money') THEN 'coalesce('+a.name+',0.0) as '+a.name WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name ELSE a.name END WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name ELSE a.name END AS column_name FROM syscolumns a INNER JOIN sysobjects b ON a.id = b.id AND b.type = 'U' INNER JOIN systypes c ON a.usertype = c.usertype AND a.xusertype = c.xusertype AND c.name != 'varbinary' INNER JOIN ( SELECT OBJECT_NAME(ic.OBJECT_ID) AS table_name, COL_NAME(ic.OBJECT_ID, ic.column_id) AS column_name FROM sys.indexes AS i INNER JOIN sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id AND i.is_primary_key = 1 ) pk ON pk.table_name = object_name(a.id) AND pk.column_name = a.name ) dt GROUP BY dt.schema_name, dt.table_name;

Tabel berikut mencantumkan contoh output:

Nama skema

Nama tabel

Nama kolom

Urutan kolom

Orang

Alamat

AlamatSid

AlamatSid

Orang

AddressType

AddressTypeID

AddressTypeID

Orang

BusinessEntity

BusinessEntityID

BusinessEntityID

Orang

BusinessEntityAddress

BusinessEntityID, AlamatID, ID AddressType

BusinessEntityID, AlamatID, ID AddressType

Langkah 2: Buat kueri perbandingan menggunakan hasil metadata dan buat pernyataan SELECT

SELECT <column_name> FROM [schema_name].[table_name] ORDER BY <column_order>;

Berikut ini adalah contoh dari query yang dihasilkan:

SELECT BusinessEntityID, AddressID, AddressTypeID FROM [Person].[BusinessEntityAddress] ORDER BY BusinessEntityID, AddressID, AddressTypeID;

Langkah 3: Validasi

  1. Jalankan kueri metadata di kedua database.

  2. Menghasilkan dan menjalankan SELECT pernyataan untuk setiap tabel.

  3. Bandingkan hasil antara basis data sumber dan target:

    • Jumlah baris harus cocok.

    • Nilai data harus identik.

    • Periksa masalah konversi tipe data.

Langkah 4: Validasi jumlah baris

SELECT COUNT(1) AS total_rows FROM [schema_name].[table_name];

Langkah 5: Perbarui konfigurasi aplikasi Anda untuk menunjuk ke database baru

  1. Perbarui grup keamanan.

  2. Ubah string koneksi DNS sesuai kebutuhan untuk terhubung ke database target.

Menguji migrasi

Proses pengujian dapat membantu Anda mengidentifikasi masalah yang diabaikan selama pengembangan, seperti kueri yang dikonversi secara tidak benar atau indeks yang hilang. Dan itu mungkin mengungkapkan perlunya penyetelan mesin database atau modifikasi kueri berdasarkan kinerja beban kerja.

Pengujian fungsional, yang mencakup pengujian unit untuk alur kerja aplikasi, membantu memastikan integrasi yang mulus dengan database baru Anda. Pengujian kinerja membantu mengoptimalkan database Anda dengan memverifikasi waktu respons yang dapat diterima dan mengidentifikasi kemacetan.

Meskipun ada metode pengujian manual dan otomatis, kami merekomendasikan metode otomatis karena lebih efisien, terutama untuk siklus pengujian tambahan.