การย้ายข้อมูลจาก Cassandra ไปยัง Bigtable ด้วยพร็อกซีการเขียนแบบคู่

1. บทนำ

Bigtable คือบริการฐานข้อมูล NoSQL ที่มีประสิทธิภาพสูงและมีการจัดการครบวงจร ซึ่งออกแบบมาสำหรับภาระงานด้านการวิเคราะห์และการดำเนินงานที่มีขนาดใหญ่ การย้ายข้อมูลจากฐานข้อมูลที่มีอยู่ เช่น Apache Cassandra ไปยัง Bigtable มักต้องมีการวางแผนอย่างรอบคอบเพื่อลดเวลาหยุดทำงานและผลกระทบต่อแอปพลิเคชัน

Codelab นี้แสดงกลยุทธ์การย้ายข้อมูลจาก Cassandra ไปยัง Bigtable โดยใช้เครื่องมือพร็อกซีร่วมกัน

  1. พร็อกซี Cassandra-Bigtable: อนุญาตให้ไคลเอ็นต์และเครื่องมือของ Cassandra (เช่น cqlsh หรือไดรเวอร์) โต้ตอบกับ Bigtable โดยใช้โปรโตคอล Cassandra Query Language (CQL) ด้วยการแปลการค้นหา
  2. พร็อกซีการย้ายข้อมูลแบบไม่มีการหยุดทำงาน (ZDM) ของ Datastax: พร็อกซีโอเพนซอร์สที่อยู่ระหว่างแอปพลิเคชันและบริการฐานข้อมูล (Cassandra ต้นทางและ Bigtable เป้าหมายผ่านพร็อกซี Cassandra-Bigtable) โดยจะจัดระเบียบการเขียนแบบคู่และจัดการการกำหนดเส้นทางการรับส่งข้อมูล ซึ่งช่วยให้ย้ายข้อมูลได้โดยมีการเปลี่ยนแปลงแอปพลิเคชันและช่วงหยุดทำงานน้อยที่สุด
  3. เครื่องมือย้ายข้อมูล Cassandra (CDM): เครื่องมือโอเพนซอร์สที่ใช้สำหรับการย้ายข้อมูลย้อนหลังแบบกลุ่มจากคลัสเตอร์ Cassandra ต้นทางไปยังอินสแตนซ์ Bigtable เป้าหมาย

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าคลัสเตอร์ Cassandra พื้นฐานใน Compute Engine
  • วิธีสร้างอินสแตนซ์ Bigtable
  • วิธีติดตั้งใช้งานและกำหนดค่าพร็อกซี Cassandra-Bigtable เพื่อแมปสคีมา Cassandra กับ Bigtable
  • วิธีติดตั้งใช้งานและกำหนดค่าพร็อกซี ZDM ของ Datastax สำหรับการเขียนแบบคู่
  • วิธีใช้เครื่องมือย้ายข้อมูล Cassandra เพื่อย้ายข้อมูลที่มีอยู่จำนวนมาก
  • เวิร์กโฟลว์โดยรวมสำหรับการย้ายข้อมูลจาก Cassandra ไปยัง Bigtable โดยใช้พร็อกซี

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน ผู้ใช้ใหม่มีสิทธิ์ทดลองใช้ฟรี
  • มีความรู้พื้นฐานเกี่ยวกับแนวคิดของ Google Cloud เช่น โปรเจ็กต์, Compute Engine, เครือข่าย VPC และกฎไฟร์วอลล์ มีความคุ้นเคยกับเครื่องมือบรรทัดคำสั่งของ Linux ในระดับพื้นฐาน
  • สิทธิ์เข้าถึงเครื่องที่ติดตั้งและกำหนดค่า gcloud CLI หรือใช้ Google Cloud Shell

สำหรับ Codelab นี้ เราจะใช้เครื่องเสมือน (VM) ใน Compute Engine ภายในเครือข่าย VPC และภูมิภาคเดียวกันเป็นหลักเพื่อลดความซับซ้อนของเครือข่าย เราขอแนะนำให้ใช้ที่อยู่ IP ภายใน

2. ตั้งค่าสภาพแวดล้อม

1. เลือกหรือสร้างโปรเจ็กต์ Google Cloud

ไปที่ Google Cloud Console แล้วเลือกโปรเจ็กต์ที่มีอยู่หรือสร้างโปรเจ็กต์ใหม่ จดรหัสโปรเจ็กต์ของคุณ

2. เลือกภูมิภาคและโซน

เลือกภูมิภาคและโซนสำหรับทรัพยากร เราจะใช้ us-central1 และ us-central1-c เป็นตัวอย่าง กำหนดค่าเหล่านี้เป็นตัวแปรสภาพแวดล้อมเพื่อความสะดวก

export PROJECT_ID="<your-project-id>"
export REGION="us-central1"
export ZONE="us-central1-c"

gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
gcloud config set compute/zone $ZONE

3. เปิดใช้ API ที่จำเป็น

ตรวจสอบว่าได้เปิดใช้ Compute Engine API และ Bigtable API สำหรับโปรเจ็กต์แล้ว

gcloud services enable compute.googleapis.com bigtable.googleapis.com bigtableadmin.googleapis.com

4. กำหนดค่ากฎไฟร์วอลล์

เราต้องอนุญาตการสื่อสารระหว่าง VM ภายในเครือข่าย VPC เริ่มต้นในพอร์ตต่างๆ ดังนี้

  • พอร์ต CQL ของ Cassandra/พร็อกซี: 9042
  • พอร์ตการตรวจสอบประสิทธิภาพการทำงานของพร็อกซี ZDM: 14001
  • SSH: 22

สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเข้าชมภายในในพอร์ตเหล่านี้ เราจะใช้แท็ก cassandra-migration เพื่อใช้กฎนี้กับ VM ที่เกี่ยวข้องได้อย่างง่ายดาย

gcloud compute firewall-rules create allow-migration-internal \
--network=default \
--action=ALLOW \
--rules=tcp:22,tcp:9042,tcp:7000,tcp:14001 \
--source-ranges=10.0.0.0/8 \
--target-tags=cassandra-migration

3. ติดตั้งใช้งานคลัสเตอร์ Cassandra (ต้นทาง)

ใน Codelab นี้ เราจะตั้งค่าคลัสเตอร์ Cassandra แบบโหนดเดียวอย่างง่ายใน Compute Engine ในสถานการณ์จริง คุณจะต้องเชื่อมต่อกับคลัสเตอร์ที่มีอยู่

1. สร้าง VM ใน GCE สำหรับ Cassandra

gcloud compute instances create cassandra-origin \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--scopes=cloud-platform \
--zone="$ZONE"

SSH ไปยังอินสแตนซ์ Cassandra

gcloud compute ssh --zone="$ZONE" "cassandra-origin"

2. ติดตั้ง Cassandra

# Install Java (Cassandra dependency)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless

# Add Cassandra repository
echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

# Install Cassandra
sudo apt update
sudo apt install -y cassandra

# (Optional) Verify Cassandra is running
sudo systemctl status cassandra

3. กำหนดค่า Cassandra

เราต้องกำหนดค่า Cassandra เพื่อให้เข้าถึงได้ภายในเครือข่ายส่วนตัว

รับ IP ส่วนตัวของ cassandra-origin โดยการเรียกใช้คำสั่งต่อไปนี้

hostname -I

แก้ไขการกำหนดค่า Cassandra โดยคุณไม่จำเป็นต้องเพิ่มบรรทัดการกำหนดค่าใหม่ เพียงแค่อัปเดตบรรทัดที่มีอยู่แล้ว

sudo vim /etc/cassandra/cassandra.yaml
  1. ตั้งค่า seed_provider.parameters.seeds เป็น "CASSANDRA_ORIGIN_PRIVATE_IP:7000"
  2. ตั้งค่า rpc_address เป็น CASSANDRA_ORIGIN_PRIVATE_IP
  3. ตั้งค่า listen_address เป็น CASSANDRA_ORIGIN_PRIVATE_IP

บันทึกไฟล์

สุดท้าย ให้รีสตาร์ท Cassandra เพื่อโหลดการเปลี่ยนแปลงการกำหนดค่า

sudo systemctl restart cassandra

# (Optional) Verify Cassandra is running
sudo systemctl status cassandra

4. สร้างคีย์สเปซและตาราง

เราจะใช้ตัวอย่างตารางพนักงานและสร้างคีย์สเปซชื่อ "zdmbigtable"

หมายเหตุ: Cassandra อาจใช้เวลาสักครู่ในการเริ่มยอมรับการเชื่อมต่อ

# Start cqlsh
cqlsh $(hostname -I)

ภายใน cqlsh

-- Create keyspace (adjust replication for production)
CREATE KEYSPACE zdmbigtable WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

-- Use the keyspace
USE zdmbigtable;

-- Create the employee table
CREATE TABLE employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

-- Exit cqlsh
EXIT;

เปิดเซสชัน SSH ไว้หรือจดที่อยู่ IP ของ VM นี้ (hostname -I)

4. ตั้งค่า Bigtable (เป้าหมาย)

ระยะเวลา 0:01

สร้างอินสแตนซ์ Bigtable เราจะใช้ zdmbigtable เป็นรหัสอินสแตนซ์

gcloud bigtable instances create zdmbigtable \
--display-name="ZDM Bigtable Target" \
--cluster="bigtable-c1" \
--cluster-zone="$ZONE" \
--cluster-num-nodes=1 # Use 1 node for dev/testing; scale as needed

สคริปต์การตั้งค่าพร็อกซี Cassandra-Bigtable จะสร้างตาราง Bigtable เองในภายหลัง

5. ตั้งค่าพร็อกซี Cassandra-Bigtable

1. สร้าง VM ของ Compute Engine สำหรับพร็อกซี Cassandra-Bigtable

gcloud iam service-accounts create bigtable-proxy-sa \
    --description="Service account for Bigtable Proxy access" \
    --display-name="Bigtable Proxy Access SA"

export BIGTABLE_PROXY_SA_EMAIL=$(gcloud iam service-accounts list --filter="displayName='Bigtable Proxy Access SA'" --format="value(email)")

gcloud bigtable instances add-iam-policy-binding zdmbigtable \
  --member="serviceAccount:$BIGTABLE_PROXY_SA_EMAIL" \
  --role="roles/bigtable.admin"

gcloud compute instances create bigtable-proxy-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--zone=$ZONE \
--scopes=cloud-platform \
--service-account="$BIGTABLE_PROXY_SA_EMAIL"

SSH เข้าสู่ bigtable-proxy-vm โดยใช้คำสั่งต่อไปนี้

gcloud compute ssh --zone="$ZONE" "bigtable-proxy-vm"

เรียกใช้คำสั่งต่อไปนี้ใน bigtable-proxy-vm

# Install Git and Go
sudo apt-get update
sudo apt-get install -y git

wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz

echo 'export GOPATH=$HOME/go' >> ~/.profile
echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile
source ~/.profile

# Clone the proxy repository
git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-ecosystem.git
cd cloud-bigtable-ecosystem/cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/

2. เริ่มพร็อกซี Cassandra-Bigtable

เริ่มพร็อกซีเซิร์ฟเวอร์

# At the root of the cassandra-to-bigtable-proxy directory
go run proxy.go --project-id="$(gcloud config get-value project)" --instance-id=zdmbigtable --keyspace-id=zdmbigtable --rpc-address=$(hostname -I)

พร็อกซีจะเริ่มทำงานและรอการเชื่อมต่อ CQL ขาเข้าที่พอร์ต 9042 เปิดเซสชันเทอร์มินัลนี้ไว้ จดที่อยู่ IP ของ VM นี้ (hostname -I)

3. สร้างตารางผ่าน CQL

เชื่อมต่อ CQLSH กับที่อยู่ IP ของ VM พร็อกซี Cassandra-Bigtable คุณดูที่อยู่ IP ได้โดยเรียกใช้คำสั่งต่อไปนี้ในเครื่อง

gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)'

ในหน้าต่างอื่น ให้ SSH ไปยัง VM ของ cassandra-origin แล้วใช้ cqlsh กับ bigtable-proxy โปรดทราบว่าเราตั้งค่าการหมดเวลาของคำขอนานกว่าค่าเริ่มต้นเพื่อให้ Bigtable มีเวลาเพียงพอในการสร้างตารางพื้นฐาน คุณควรเห็นข้อความ "เชื่อมต่อกับ cassandra-bigtable-proxy-v0.2.3" หรือข้อความที่คล้ายกัน ซึ่งบ่งชี้ว่าคุณได้เชื่อมต่อกับพร็อกซี Bigtable ไม่ใช่เซิร์ฟเวอร์ Cassandra ในเครื่อง

# Replace <your-bigtable-proxy-vm-ip> with the ip from the above command
export BIGTABLE_PROXY_IP=<your-bigtable-proxy-vm-ip>
cqlsh --request-timeout=60 $BIGTABLE_PROXY_IP
-- Create the employee table
CREATE TABLE zdmbigtable.employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

ใน CQLSH ให้ตรวจสอบว่ามีการสร้างตารางโดยเรียกใช้คำสั่งต่อไปนี้

DESC TABLE zdmbigtable.employee;

6. ตั้งค่า ZDM Proxy

เราจะสร้างอินสแตนซ์เดียวของพร็อกซี ZDM สำหรับ Lab นี้ แต่คุณจะต้องตั้งค่าแบบหลายโหนดสำหรับการย้ายข้อมูลเวอร์ชันที่ใช้งานจริง

1. สร้าง VM พร็อกซี ZDM

gcloud compute instances create zdm-proxy-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--scopes=cloud-platform \
--zone=$ZONE

จดที่อยู่ IP ของ VM ทั้ง 2 รายการ

2. เตรียมพร็อกซี ZDM

gcloud compute ssh --zone="$ZONE" zdm-proxy-vm
export ZDM_VERSION="2.3.4"
wget "https://github.com/datastax/zdm-proxy/releases/download/v$ZDM_VERSION/zdm-proxy-linux-amd64-v$ZDM_VERSION.tgz"
tar -xvzf "zdm-proxy-linux-amd64-v$ZDM_VERSION.tgz"

# replace YOUR_ZONE
gcloud config set compute/zone "YOUR_ZONE"
export ZDM_ORIGIN_CONTACT_POINTS=$(gcloud compute instances describe cassandra-origin --format='get(networkInterfaces[0].networkIP)') 
export ZDM_TARGET_CONTACT_POINTS=$(gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)')
export ZDM_ORIGIN_USERNAME=""
export ZDM_ORIGIN_PASSWORD=""
export ZDM_TARGET_USERNAME=""
export ZDM_TARGET_PASSWORD=""
export ZDM_PROXY_LISTEN_ADDRESS=0.0.0.0
export ZDM_PROXY_LISTEN_PORT=9042
./zdm-proxy-v${ZDM_VERSION}

7. กำหนดค่าแอปพลิเคชันและเริ่มการเขียนแบบคู่

ระยะเวลา 0:05

ในขั้นตอนนี้ของการย้ายข้อมูลจริง คุณจะต้องกำหนดค่าแอปพลิเคชันใหม่ให้ชี้ไปยังที่อยู่ IP ของ VM พร็อกซี ZDM (เช่น :9042) แทนการเชื่อมต่อกับ Cassandra โดยตรง

เมื่อแอปพลิเคชันเชื่อมต่อกับ ZDM Proxy แล้ว ระบบจะแสดงการอ่านจากต้นทาง (Cassandra) โดยค่าเริ่มต้น ระบบจะส่งการเขียนไปยังทั้งต้นทาง (Cassandra) และเป้าหมาย (Bigtable ผ่านพร็อกซี Cassandra-Bigtable) ซึ่งจะช่วยให้แอปพลิเคชันของคุณทำงานต่อไปได้ตามปกติ ขณะเดียวกันก็มั่นใจได้ว่าระบบจะเขียนข้อมูลใหม่ลงในฐานข้อมูลทั้ง 2 พร้อมกัน คุณทดสอบการเชื่อมต่อได้โดยใช้ cqlsh ที่ชี้ไปยังพร็อกซี ZDM ดังนี้

cqlsh $(gcloud compute instances describe zdm-proxy-vm --format='get(networkInterfaces[0].networkIP)')

ลองแทรกข้อมูลบางอย่าง

INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alice', 30, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Anna', 45, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Albert', 50, false); 
SELECT * FROM zdmbigtable.employee;

ควรเขียนข้อมูลนี้ไปยังทั้ง Cassandra และ Bigtable คุณยืนยันได้ใน Bigtable โดยไปที่ Google Cloud Console แล้วเปิดโปรแกรมแก้ไขการค้นหา Bigtable สำหรับอินสแตนซ์ เรียกใช้การค้นหา "SELECT * FROM employee" แล้วคุณจะเห็นข้อมูลที่แทรกเมื่อเร็วๆ นี้

8. ย้ายข้อมูลย้อนหลังโดยใช้ Cassandra Data Migrator

ตอนนี้การเขียนแบบคู่ใช้งานได้กับข้อมูลใหม่แล้ว ให้ใช้เครื่องมือ Cassandra Data Migrator (CDM) เพื่อคัดลอกข้อมูลประวัติที่มีอยู่จาก Cassandra ไปยัง Bigtable

1. สร้าง VM ของ Compute Engine สำหรับ CDM

VM นี้ต้องมีหน่วยความจำเพียงพอสำหรับ Spark

gcloud compute instances create cdm-migrator-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=40GB \
--scopes=cloud-platform \
--zone=$ZONE

2. ติดตั้งข้อกำหนดเบื้องต้น (Java 11, Spark)

SSH เข้าสู่ cdm-migrator-vm โดยใช้คำสั่งต่อไปนี้

gcloud compute ssh cdm-migrator-vm

ภายใน VM

# Install Java 11 
sudo apt-get update 
sudo apt-get install -y openjdk-11-jdk
 
# Verify Java installation 
java -version 

# Download and Extract Spark (Using version 3.5.3 as requested) 
# Check the Apache Spark archives for the correct URL if needed

wget  https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3-scala2.13.tgz
tar -xvzf spark-3.5.3-bin-hadoop3-scala2.13.tgz

echo 'export SPARK_HOME=$PWD/spark-3.5.3-bin-hadoop3-scala2.13' >> ~/.profile
echo 'export PATH=$PATH:$SPARK_HOME/bin' >> ~/.profile
source ~/.profile

3. ดาวน์โหลดเครื่องมือย้ายข้อมูล Cassandra

เปิดหน้าแพ็กเกจ CDM ในเบราว์เซอร์ แล้วคัดลอกลิงก์ .jar จากแผงเนื้อหา หากไม่มีเวอร์ชัน 5.4.0 ให้เลือกเวอร์ชันที่ใกล้เคียงที่สุดถัดไป วางลิงก์ลงในคำสั่งด้านล่าง แล้วเรียกใช้ในอินสแตนซ์ cdm-migrator-vm โดยคงเครื่องหมายคำพูดเดี่ยวรอบ URL ไว้

wget 'JAR_URL_GOES_HERE' -O cassandra-data-migrator.jar

ตรวจสอบว่าดาวน์โหลดไฟล์ JAR อย่างถูกต้องโดยสแกนด้วยเครื่องมือ jar คุณควรเห็นรายการไฟล์ ".class" ยาวๆ

jar tf cassandra-data-migrator.jar 

4. เพิ่มข้อมูล

เราต้องเพิ่มข้อมูลบางอย่างเพื่อย้ายข้อมูลโดยการเขียนไปยัง cassandra-origin โดยตรง (ไม่ใช่ zdm-proxy-vm)

INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alfred', 67, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Bobby', 12, false); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Carol', 29, true); 

5. เรียกใช้งานการย้ายข้อมูล

ดำเนินการย้ายข้อมูลโดยใช้ spark-submit คำสั่งนี้จะบอกให้ Spark เรียกใช้ไฟล์ JAR ของ CDM โดยใช้ไฟล์พร็อพเพอร์ตี้ของคุณ และระบุคีย์สเปซและตารางที่จะย้ายข้อมูล ปรับการตั้งค่าหน่วยความจำ (–driver-memory, –executor-memory) ตามขนาด VM และปริมาณข้อมูล

ตรวจสอบว่าคุณอยู่ในไดเรกทอรีที่มีไฟล์ JAR และไฟล์พร็อพเพอร์ตี้ของ CDM

เคล็ดลับ: คุณดู IP ภายในของ VM Cassandra และพร็อกซีได้โดยเรียกใช้คำสั่งต่อไปนี้จากเครื่องของคุณ

gcloud compute instances describe cassandra-origin --format='get(networkInterfaces[0].networkIP)'
gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)'
export ORIGIN_HOST="<your-cassandra-origin-ip>"
export TARGET_HOST="<your-bigtable-proxy-vm-ip>"
export KEYSPACE_TABLE="zdmbigtable.employee"
spark-submit --verbose --master "local[*]" \
--driver-memory 3G --executor-memory 3G \
--conf spark.cdm.schema.origin.keyspaceTable="$KEYSPACE_TABLE" \
--conf spark.cdm.connect.origin.host="$ORIGIN_HOST" \
--conf spark.cdm.connect.origin.port=9042 \
--conf spark.cdm.connect.target.host="$TARGET_HOST" \
--conf spark.cdm.connect.target.port=9042 \
--conf spark.cdm.feature.origin.ttl.automatic=false \
--conf spark.cdm.feature.origin.writetime.automatic=false \
--conf spark.cdm.feature.target.ttl.automatic=false \
--conf spark.cdm.feature.target.writetime.automatic=false \
--conf spark.cdm.schema.origin.column.ttl.automatic=false \
--conf spark.cdm.schema.ttlwritetime.calc.useCollections=false \
--class com.datastax.cdm.job.Migrate cassandra-data-migrator.jar

6. ยืนยันการย้ายข้อมูล

เมื่องาน CDM เสร็จสมบูรณ์แล้ว ให้ตรวจสอบว่ามีข้อมูลย้อนหลังอยู่ใน Bigtable

cqlsh <bigtable-proxy-vm-ip>

ภายใน cqlsh

SELECT COUNT(*) FROM zdmbigtable.employee; -- Check row count matches origin 
SELECT * FROM zdmbigtable.employee LIMIT 10; -- Check some sample data

9. Cutover (แนวคิด)

หลังจากตรวจสอบความสอดคล้องของข้อมูลระหว่าง Cassandra กับ Bigtable อย่างละเอียดแล้ว คุณสามารถดำเนินการตัดข้อมูลขั้นสุดท้ายได้

เมื่อใช้พร็อกซี ZDM การเปลี่ยนระบบจะเกี่ยวข้องกับการกำหนดค่าใหม่เพื่อให้พร็อกซีอ่านจากเป้าหมาย (Bigtable) เป็นหลักแทนที่จะอ่านจากต้นทาง (Cassandra) โดยปกติแล้ว การดำเนินการนี้จะทำผ่านการกำหนดค่าของ ZDM Proxy ซึ่งจะเปลี่ยนการเข้าชมการอ่านของแอปพลิเคชันไปยัง Bigtable ได้อย่างมีประสิทธิภาพ

เมื่อมั่นใจว่า Bigtable ให้บริการการเข้าชมทั้งหมดอย่างถูกต้องแล้ว คุณจะทำสิ่งต่อไปนี้ได้

  • หยุดการเขียนคู่โดยการกำหนดค่าพร็อกซี ZDM ใหม่
  • เลิกใช้งานคลัสเตอร์ Cassandra เดิม
  • นำพร็อกซี ZDM ออกและให้แอปพลิเคชันเชื่อมต่อกับพร็อกซี Cassandra-Bigtable โดยตรง หรือใช้ไคลเอ็นต์ CQL ของ Bigtable ดั้งเดิมสำหรับ Java

รายละเอียดการกำหนดค่าพร็อกซี ZDM ใหม่สำหรับการเปลี่ยนระบบนั้นอยู่นอกเหนือจาก Codelab พื้นฐานนี้ แต่มีรายละเอียดอยู่ในเอกสารประกอบ ZDM ของ Datastax

10. ล้างข้อมูล

โปรดลบทรัพยากรที่สร้างขึ้นระหว่างการทำ Codelab นี้เพื่อไม่ให้มีการเรียกเก็บเงิน

1. ลบ VM ของ Compute Engine

gcloud compute instances delete cassandra-origin zdm-proxy-vm bigtable-proxy-vm cdm-migrator-vm --zone=$ZONE --quiet

2. ลบอินสแตนซ์ Bigtable

gcloud bigtable instances delete zdmbigtable

3. ลบกฎไฟร์วอลล์

gcloud compute firewall-rules delete allow-migration-internal

4. ลบฐานข้อมูล Cassandra (หากติดตั้งในเครื่องหรือคงอยู่)

หากคุณติดตั้ง Cassandra นอก VM ของ Compute Engine ที่สร้างขึ้นที่นี่ ให้ทำตามขั้นตอนที่เหมาะสมเพื่อนำข้อมูลออกหรือถอนการติดตั้ง Cassandra

11. ยินดีด้วย

คุณได้ทำตามขั้นตอนการตั้งค่าเส้นทางการย้ายข้อมูลที่ใช้พร็อกซีจาก Apache Cassandra ไปยัง Bigtable เรียบร้อยแล้ว

คุณได้เรียนรู้วิธีการต่อไปนี้

ติดตั้งใช้งาน Cassandra และ Bigtable

  • กำหนดค่าพร็อกซี Cassandra-Bigtable เพื่อให้เข้ากันได้กับ CQL
  • ติดตั้งใช้งานพร็อกซี ZDM ของ Datastax เพื่อจัดการการเขียนแบบคู่และการรับส่งข้อมูล
  • ใช้เครื่องมือย้ายข้อมูล Cassandra เพื่อย้ายข้อมูลย้อนหลัง

แนวทางนี้ช่วยให้ย้ายข้อมูลได้โดยมีช่วงหยุดทำงานน้อยที่สุดและไม่ต้องเปลี่ยนแปลงโค้ดด้วยการใช้ประโยชน์จากเลเยอร์พร็อกซี

ขั้นตอนถัดไป

  • สำรวจเอกสารประกอบของ Bigtable
  • โปรดดูเอกสารประกอบของ Datastax ZDM Proxy เพื่อดูการกำหนดค่าขั้นสูงและขั้นตอนการเปลี่ยน
  • ดูรายละเอียดเพิ่มเติมได้ที่ที่เก็บพร็อกซี Cassandra-Bigtable
  • ดูการใช้งานขั้นสูงได้ที่ที่เก็บ Cassandra Data Migrator
  • ลองใช้ Codelab อื่นๆ ของ Google Cloud