เครื่องมือย้ายฐานข้อมูลส่วนใหญ่ที่มีอยู่ในปัจจุบันเป็นแบบออฟไลน์ มีความซับซ้อนและต้องมีการแทรกแซงด้วยตนเอง
ตัวอย่างเช่น หากคุณต้องการย้ายข้อมูลจาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud กระบวนการปกติคือการสำรองข้อมูล ElastiCache ของคุณไปยังบัคเก็ต Amazon S3 แล้วนำเข้าข้อมูลของคุณโดยใช้ Redis Enterprise Cloud UI กระบวนการนี้อาจต้องใช้เวลาหยุดทำงานอย่างเจ็บปวดและอาจส่งผลให้ข้อมูลสูญหาย เทคนิคอื่นๆ ที่พร้อมใช้งาน ได้แก่ การสร้างสแนปชอตแบบ point-in-time ของเซิร์ฟเวอร์ Redis ต้นทาง และการนำการเปลี่ยนแปลงไปใช้กับเซิร์ฟเวอร์ปลายทางเพื่อให้ทั้งสองเซิร์ฟเวอร์ซิงค์กัน นั่นอาจฟังดูเป็นแนวทางที่ดี แต่อาจเป็นเรื่องยากเมื่อคุณต้องดูแลสคริปต์หลายสิบตัวเพื่อใช้กลยุทธ์การย้ายข้อมูล
เราจึงได้แนวทางที่แตกต่างออกไป:
แนะนำ RIOT
RIOT คือเครื่องมือการโยกย้ายออนไลน์แบบโอเพ่นซอร์สที่สร้างโดย Julien Ruaux สถาปนิกโซลูชันที่ Redis RIOT ใช้การจำลองแบบฝั่งไคลเอ็นต์โดยใช้แนวทางของผู้ผลิต/ผู้บริโภค ผู้ผลิตคือการรวมกันของผู้อ่านคีย์และค่าที่มีการเชื่อมต่อกับ ElastiCache คอมโพเนนต์ตัวอ่านคีย์ระบุคีย์ที่จะทำซ้ำโดยใช้การแจ้งเตือนการสแกนและคีย์สเปซ สำหรับแต่ละคีย์ องค์ประกอบตัวอ่านค่าดำเนินการ DUMP และจัดการคีย์+ไบต์ที่เป็นผลลัพธ์ไปยังผู้บริโภค (ตัวเขียน) ซึ่งดำเนินการ RESTORE บนการเชื่อมต่อ Redis Enterprise
บล็อกโพสต์นี้จะแสดงวิธีการย้ายฐานข้อมูลออนไลน์อย่างราบรื่นจาก ElastiCache ไปยัง Redis Enterprise Cloud
อย่าพลาด: 6 คุณลักษณะหลักที่ควรพิจารณาเมื่อเลือกผู้ให้บริการ DBaaS และ วิธีที่ Redis Enterprise Cloud ตอบสนองความต้องการของลูกค้าองค์กรที่เติบโตเต็มที่บน AWS
ข้อกำหนดเบื้องต้น:
คุณจะต้องใช้ทรัพยากรสองสามอย่างเพื่อใช้เครื่องมือการย้ายข้อมูล:
- การสมัครใช้งาน Redis Enterprise Cloud
- Amazon ElastiCache (ปลายทางหลักในกรณีของ single-master EC และ configuration endpoint ในกรณีของคลัสเตอร์ EC:อ้างถึง Finding Connection Endpoints ในเอกสารประกอบ ElastiCache เพื่อเรียนรู้เพิ่มเติม)
- อินสแตนซ์ Amazon EC2 ที่ใช้ Linux
การตั้งค่าอินสแตนซ์ Amazon EC2
คุณสามารถสร้างอินสแตนซ์ EC2 ใหม่หรือใช้ประโยชน์จากอินสแตนซ์ที่มีอยู่ได้ ในตัวอย่างของเรา ก่อนอื่นเราจะสร้างอินสแตนซ์บน Amazon Web Services (AWS) สถานการณ์สมมติที่พบบ่อยที่สุดคือการเข้าถึงคลัสเตอร์ ElastiCache จากอินสแตนซ์ Amazon EC2 ใน Amazon Virtual Private Cloud (Amazon VPC) เดียวกัน เราใช้ Ubuntu 16.04 LTS สำหรับการตั้งค่านี้ แต่คุณสามารถเลือกการกระจาย Ubuntu หรือ Debian ตามที่คุณต้องการ
ใช้ SSH เพื่อเชื่อมต่อกับอินสแตนซ์ EC2 ใหม่นี้จากคอมพิวเตอร์ของคุณดังที่แสดงที่นี่:
ssh -i “public key” <AWS EC2 Instance>
ติดตั้งเครื่องมือ redis-cli บนอินสแตนซ์ใหม่นี้โดยเรียกใช้คำสั่งนี้:
$ sudo apt update # sudo apt install -y redis-tools
การใช้ redis-cli เพื่อตรวจสอบการเชื่อมต่อกับฐานข้อมูล ElastiCache
ไวยากรณ์:
$ redis-cli -h <Elasticache Primary Endpoint > -p 6379
คำสั่ง:
$ sudo redis-cli -h <elasticache primary endpoint> -p 6379
ตรวจสอบให้แน่ใจว่าคำสั่งดังกล่าวอนุญาตให้คุณเชื่อมต่อกับฐานข้อมูล Redis ระยะไกลได้สำเร็จ
การใช้เครื่องมือการย้ายข้อมูล RIOT
เรียกใช้คำสั่งด้านล่างเพื่อตั้งค่าเครื่องมือการย้ายข้อมูล
ข้อกำหนดเบื้องต้น:
ติดตั้ง Java:เราแนะนำให้ใช้ OpenJDK 11 หรือใหม่กว่า:
sudo add-apt-repository ppa:openjdk-r/ppa && sudo apt-get update -q && sudo apt install -y openjdk-11-jdk
กำลังติดตั้ง RIOT
เปิดเครื่องรูดแพ็คเกจและตรวจสอบให้แน่ใจว่าไบนารี RIOT อยู่ในตำแหน่งดังที่แสดงที่นี่:
wget https://github.com/Redislabs-Solution-Architects/riot/releases/download/v2.0.8/riot-redis-2.0.8.zip unzip riot-redis-2.0.8.zip cd riot-redis-2.0.8/bin/
คุณสามารถตรวจสอบเวอร์ชันของ RIOT ได้โดยเรียกใช้คำสั่งด้านล่าง:
./riot-redis --version RIOT version "2.0.8" bin/riot-redis --help Usage: riot-redis [OPTIONS] [COMMAND] -q, --quiet Log errors only -d, --debug Log in debug mode (includes normal stacktrace) -i, --info Set log level to info -h, --help Show this help message and exit. -V, --version Print version information and exit. Redis connection options -r, --redis=<uri> Redis connection string (default: redis://localhost:6379) -c, --cluster Connect to a Redis Cluster -m, --metrics Show metrics -p, --pool=<int> Max pool connections (default: 8) Commands: replicate, r Replicate a source Redis database in a target Redis database info, i Display INFO command output latency, l Calculate latency stats ping, p Execute PING command
เมื่อติดตั้ง Java และ RIOT แล้ว เราพร้อมที่จะเริ่มกระบวนการย้ายข้อมูลด้วยคำสั่งด้านล่าง ซึ่งจะจำลองข้อมูลโดยตรงจากต้นทาง (ElastiCache) ไปยังเป้าหมาย (Redis Enterprise Cloud)
ในที่สุดก็ถึงเวลาจำลองข้อมูลจาก ElastiCache ไปยัง Redis Enterprise Cloud โดยเรียกใช้คำสั่งด้านล่าง:
sudo ./riot-redis -r redis://<source Elasticache endpoint>:6379 replicate -r redis://password@<Redis Enterprise Cloud endpoint>:port --live
ElastiCache ให้คุณกำหนดค่าได้สองวิธี:แบบคลัสเตอร์และแบบไม่คลัสเตอร์ ในแผนภูมิด้านล่าง แถวแรกจะแสดงคำสั่งที่คุณควรดำเนินการสำหรับสถานการณ์ที่ไม่อยู่ในคลัสเตอร์ ในขณะที่แถวที่สองแสดงคำสั่งสำหรับสถานการณ์สมมติแบบคลัสเตอร์ที่มีเนมสเปซฐานข้อมูลเฉพาะ:
อย่างที่คุณเห็น เมื่อใดก็ตามที่คุณมี ElastiCache แบบคลัสเตอร์ คุณต้องส่งตัวเลือก –cluster ก่อนระบุปลายทาง ElastiCache ต้นทาง
หมายเหตุสำคัญ
- ดำเนินการทดสอบการยอมรับของผู้ใช้ในการย้ายข้อมูลก่อนนำไปใช้จริงในเวอร์ชันที่ใช้งานจริง
- เมื่อการย้ายข้อมูลเสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าการรับส่งข้อมูลของแอปพลิเคชันได้รับการเปลี่ยนเส้นทางไปยังปลายทาง Redis Enterprise
- ดำเนินการกระบวนการย้ายข้อมูลในช่วงที่มีการรับส่งข้อมูลต่ำเพื่อลดโอกาสที่ข้อมูลจะสูญหาย
บทสรุป
หากคุณกำลังมองหาเครื่องมือการย้ายข้อมูลแบบสดที่เรียบง่ายและใช้งานง่าย ซึ่งสามารถช่วยคุณย้ายข้อมูลจาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud โดยไม่มีการหยุดทำงาน RIOT เป็นตัวเลือกที่น่าสนใจ
อ้างอิง:
- RIOT – เครื่องมืออินพุต/เอาต์พุต Redis