Migrasi Db2 untuk LUW ke EC2 Amazon dengan menggunakan pengiriman log untuk mengurangi waktu pemadaman - AWS Prescriptive Guidance

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

Migrasi Db2 untuk LUW ke EC2 Amazon dengan menggunakan pengiriman log untuk mengurangi waktu pemadaman

Feng Cai, Ambarish Satarkar, dan Saurabh Sharma, Amazon Web Services

Ringkasan

Ketika pelanggan memigrasikan beban kerja IBM Db2 mereka untuk LUW (Linux, UNIX, dan Windows) ke Amazon Web Services (AWS), menggunakan Amazon Elastic Compute Cloud ( EC2Amazon) dengan model Bring Your Own License (BYOL) adalah cara tercepat. Namun, memigrasikan sejumlah besar data dari Db2 lokal ke AWS dapat menjadi tantangan, terutama ketika jendela pemadaman pendek. Banyak pelanggan mencoba mengatur jendela pemadaman menjadi kurang dari 30 menit, yang menyisakan sedikit waktu untuk database itu sendiri.

Pola ini mencakup cara menyelesaikan migrasi Db2 dengan jendela pemadaman pendek dengan menggunakan pengiriman log transaksi. Pendekatan ini berlaku untuk Db2 pada platform Linux kecil.

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif

  • Instance Db2 yang berjalan pada EC2 instance yang cocok dengan tata letak sistem file lokal

  • Bucket Amazon Simple Storage Service (Amazon S3) yang dapat diakses oleh instans EC2

  • Kebijakan dan peran AWS Identity and Access Management (IAM) untuk melakukan panggilan terprogram ke Amazon S3

  • Zona waktu dan jam sistem yang disinkronkan di Amazon EC2 dan server lokal

  • Jaringan lokal yang terhubung ke AWS melalui AWS Site-to-SiteVPN atau AWS Direct Connect

Batasan

Versi produk

  • Db2 untuk LUW versi 11.5.9 dan yang lebih baru

Arsitektur

Tumpukan teknologi sumber

  • Db2 di Linux x86_64

Tumpukan teknologi target

  • Amazon EBS

  • Amazon EC2

  • AWS Identity and Access Management (IAM)

  • Amazon S3

  • AWS Site-to-Site VPN atau Direct Connect

Arsitektur target

Diagram berikut menunjukkan satu instans Db2 yang berjalan di lokasi dengan koneksi jaringan pribadi virtual (VPN) ke Db2 di Amazon. EC2 Garis putus-putus mewakili terowongan VPN antara pusat data Anda dan AWS Cloud.

Alur kerja untuk menyelesaikan migrasi Db2 dalam jendela pemadaman pendek menggunakan pengiriman log transaksi.

Alat

Layanan AWS

  • AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.

  • AWS Direct Connect menautkan jaringan internal Anda ke lokasi Direct Connect melalui kabel serat optik Ethernet standar. Dengan koneksi ini, Anda dapat membuat antarmuka virtual langsung ke layanan AWS publik sambil melewati penyedia layanan internet di jalur jaringan Anda.

  • Amazon Elastic Block Store (Amazon EBS) menyediakan volume penyimpanan tingkat blok untuk digunakan dengan instans Amazon Elastic Compute Cloud (Amazon). EC2

  • Amazon Elastic Compute Cloud (Amazon EC2) menyediakan kapasitas komputasi yang dapat diskalakan di AWS Cloud. Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan dan dengan cepat meningkatkannya ke atas atau ke bawah.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

  • AWS Site-to-Site VPN membantu Anda meneruskan lalu lintas antar instans yang Anda luncurkan di AWS dan jaringan jarak jauh Anda sendiri.

Alat-alat lainnya

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Tetapkan variabel lingkungan.

Pola ini menggunakan nama-nama berikut:

  • Nama instans: db2inst1

  • Nama database: SAMPLE

Anda dapat mengubahnya agar sesuai dengan lingkungan Anda.

DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Atur AWS CLI.

Untuk mengunduh dan menginstal AWS CLI versi terbaru, jalankan perintah berikut:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Administrator Linux

Siapkan tujuan lokal untuk log arsip Db2.

Agar database target EC2 di Amazon tetap sinkron dengan database sumber lokal, log transaksi terbaru harus diambil dari sumbernya.

Dalam pengaturan ini, /db2logs diatur oleh LOGARCHMETH2 pada sumber sebagai area pementasan. Log yang diarsipkan di direktori ini akan disinkronkan ke Amazon S3 dan diakses oleh Db2 di Amazon. EC2 Pola yang digunakan LOGARCHMETH2 karena LOGARCHMETH1 mungkin telah dikonfigurasi untuk menggunakan alat vendor pihak ketiga yang tidak dapat diakses oleh perintah AWS CLI. Untuk mengambil log, jalankan perintah berikut:

db2 connect to sample db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs
DBA

Jalankan backup database online.

Jalankan backup database online, dan simpan ke sistem file backup lokal:

db2 backup db sample online to /backup
DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Buat ember S3.

Buat bucket S3 untuk server lokal untuk mengirim image Db2 cadangan dan file log ke AWS. Bucket juga akan diakses oleh Amazon EC2:

aws s3api create-bucket --bucket logshipmig-db2 --region us-east-1
Administrator sistem AWS

Buat kebijakan IAM.

db2bucket.jsonFile berisi kebijakan IAM untuk mengakses bucket Amazon S3:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::logshipmig-db2/*", "arn:aws:s3:::logshipmig-db2" ] } ] }

Untuk membuat kebijakan, gunakan perintah AWS CLI berikut:

aws iam create-policy \ --policy-name db2s3policy \ --policy-document file://db2bucket.json

Output JSON menunjukkan Nama Sumber Daya Amazon (ARN) untuk kebijakan, yang mewakili ID aws_account_id akun Anda:

"Arn": "arn:aws:iam::aws_account_id:policy/db2s3policy"
Administrator AWS, administrator sistem AWS

Lampirkan kebijakan IAM ke peran IAM yang digunakan oleh instance. EC2

Di sebagian besar lingkungan AWS, EC2 instans yang sedang berjalan memiliki Peran IAM yang ditetapkan oleh administrator sistem Anda. Jika peran IAM tidak disetel, buat peran dan pilih Ubah peran IAM di EC2 konsol untuk mengaitkan peran dengan EC2 instance yang menghosting database Db2. Lampirkan kebijakan IAM ke peran IAM dengan kebijakan ARN:

aws iam attach-role-policy \ --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3policy" \ --role-name db2s3role

Setelah kebijakan dilampirkan, EC2 instance apa pun yang terkait dengan peran IAM dapat mengakses bucket S3.

Administrator AWS, administrator sistem AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan AWS CLI di server Db2 lokal.

Konfigurasikan AWS CLI dengan Access Key ID dan Secret Access Key dihasilkan pada langkah sebelumnya:

$ aws configure AWS Access Key ID [None]: ************* AWS Secret Access Key [None]: *************************** Default region name [None]: us-east-1 Default output format [None]: json

Administrator AWS, administrator sistem AWS

Kirim gambar cadangan ke Amazon S3.

Sebelumnya, cadangan database online disimpan ke direktori /backup lokal. Untuk mengirim gambar cadangan itu ke bucket S3, jalankan perintah berikut:

aws s3 sync /backup s3://logshipmig-db2/SAMPLE_backup
Administrator AWS, Insinyur migrasi

Kirim log arsip Db2 ke Amazon S3.

Sinkronkan log arsip Db2 lokal dengan bucket S3 yang dapat diakses oleh instans Db2 target di Amazon: EC2

aws s3 sync /db2logs s3://logshipmig-db2/SAMPLE_LOG

Jalankan perintah ini secara berkala dengan menggunakan cron atau alat penjadwalan lainnya. Frekuensi tergantung pada seberapa sering database sumber mengarsipkan file log transaksi.

Administrator AWS, Insinyur migrasi
TugasDeskripsiKeterampilan yang dibutuhkan

Buat PKCS12 keystore.

Db2 menggunakan keystore enkripsi Public-Key Cryptography Standards (PKCS) untuk menjaga kunci akses AWS tetap aman. Buat keystore dan konfigurasikan instance sumber Db2 untuk menggunakannya:

gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"
DBA

Buat alias akses penyimpanan Db2.

Untuk membuat alias akses penyimpanan, gunakan sintaks skrip berikut:

db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> container '<bucket_name>'"

Misalnya, skrip Anda mungkin terlihat seperti berikut:

db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'logshipmig-db2'"

DBA

Atur area pementasan.

Secara default, Db2 digunakan DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH sebagai area pementasan untuk mengunggah dan mengunduh file ke dan dari Amazon S3. Jalur default berada sqllib/tmp/RemoteStorage.xxxx di bawah direktori home instance, dengan xxxx mengacu pada nomor partisi Db2. Perhatikan bahwa area pementasan harus memiliki kapasitas yang cukup untuk menyimpan gambar cadangan dan file log. Anda dapat menggunakan registri untuk mengarahkan area pementasan ke direktori yang berbeda.

Kami juga merekomendasikan penggunaanDB2_ENABLE_COS_SDK=ON,DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore, dan tautan ke awssdk perpustakaan untuk melewati area pementasan Amazon S3 untuk pencadangan dan pemulihan basis data:

#By root: cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/ #By db2 instance owner: db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage db2set DB2_ENABLE_COS_SDK=ON Db2set DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore db2stop db2start
DBA

Kembalikan database dari gambar cadangan.

Kembalikan database target di Amazon EC2 dari gambar cadangan di bucket S3:

db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup replace existing
DBA

Gulung ke depan database.

Setelah pemulihan selesai, database target akan dimasukkan ke status tertunda rollforward. Konfigurasikan LOGARCHMETH1 dan LOGARCHMETH2 agar Db2 tahu di mana mendapatkan file log transaksi:

db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/' db2 update db cfg for SAMPLE using LOGARCHMETH2 OFF

Mulai rollforward database:

db2 ROLLFORWARD DATABASE sample to END OF LOGS

Perintah ini memproses semua file log yang telah ditransfer ke bucket S3. Jalankan secara berkala berdasarkan frekuensi s3 sync perintah di server Db2 lokal. Misalnya, jika s3 sync berjalan pada setiap jam, dan dibutuhkan 10 menit untuk menyinkronkan semua file log, atur perintah untuk berjalan pada 10 menit setelah setiap jam.

DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Bawa database target secara online.

Selama jendela cutover, lakukan salah satu hal berikut:

  • Masukkan database lokalADMIN MODE, dan jalankan s3 sync perintah untuk memaksa log transaksi terakhir diarsipkan.

  • Matikan database.

Setelah log transaksi terakhir disinkronkan ke Amazon S3, jalankan perintah untuk ROLLFORWARD terakhir kalinya:

db2 rollforward DB sample to END OF LOGS db2 rollforward DB sample complete Rollforward Status .... Rollforward status = not pending .... DB20000I The ROLLFORWARD command completed successfully. db2 activate db sample DB20000I The ACTIVATE DATABASE command completed successfully.

Bawa database target online, dan arahkan koneksi aplikasi ke Db2 di Amazon. EC2

DBA

Pemecahan Masalah

IsuSolusi

Jika beberapa database memiliki nama instance dan nama database yang sama pada host yang berbeda (DEV, QA, PROD), backup dan log mungkin masuk ke subdirektori yang sama.

Gunakan bucket S3 yang berbeda untuk DEV, QA, dan PROD, dan tambahkan nama host sebagai awalan subdirektori untuk menghindari kebingungan.

Jika ada beberapa gambar cadangan di lokasi yang sama, Anda akan mendapatkan kesalahan berikut saat memulihkan:

SQL2522N More than one backup file matches the time stamp value provided for the backed up database image.

Dalam restore perintah, tambahkan stempel waktu cadangan:

db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup taken at 20230628164042 replace existing

Sumber daya terkait