Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

การย้ายฐานข้อมูลออนไลน์จาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud เป็นเรื่องง่าย

เครื่องมือย้ายฐานข้อมูลส่วนใหญ่ที่มีอยู่ในปัจจุบันเป็นแบบออฟไลน์ มีความซับซ้อนและต้องมีการแทรกแซงด้วยตนเอง

ตัวอย่างเช่น หากคุณต้องการย้ายข้อมูลจาก 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

การย้ายฐานข้อมูลออนไลน์จาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud เป็นเรื่องง่าย

บล็อกโพสต์นี้จะแสดงวิธีการย้ายฐานข้อมูลออนไลน์อย่างราบรื่นจาก ElastiCache ไปยัง Redis Enterprise Cloud

อย่าพลาด: 6 คุณลักษณะหลักที่ควรพิจารณาเมื่อเลือกผู้ให้บริการ DBaaS และ วิธีที่ Redis Enterprise Cloud ตอบสนองความต้องการของลูกค้าองค์กรที่เติบโตเต็มที่บน AWS

ข้อกำหนดเบื้องต้น:

คุณจะต้องใช้ทรัพยากรสองสามอย่างเพื่อใช้เครื่องมือการย้ายข้อมูล:

  1. การสมัครใช้งาน Redis Enterprise Cloud
  2. Amazon ElastiCache (ปลายทางหลักในกรณีของ single-master EC และ configuration endpoint ในกรณีของคลัสเตอร์ EC:อ้างถึง Finding Connection Endpoints ในเอกสารประกอบ ElastiCache เพื่อเรียนรู้เพิ่มเติม)
  3. อินสแตนซ์ 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

การย้ายฐานข้อมูลออนไลน์จาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud เป็นเรื่องง่าย

เรียกใช้คำสั่งด้านล่างเพื่อตั้งค่าเครื่องมือการย้ายข้อมูล

ข้อกำหนดเบื้องต้น:

ติดตั้ง 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 ให้คุณกำหนดค่าได้สองวิธี:แบบคลัสเตอร์และแบบไม่คลัสเตอร์ ในแผนภูมิด้านล่าง แถวแรกจะแสดงคำสั่งที่คุณควรดำเนินการสำหรับสถานการณ์ที่ไม่อยู่ในคลัสเตอร์ ในขณะที่แถวที่สองแสดงคำสั่งสำหรับสถานการณ์สมมติแบบคลัสเตอร์ที่มีเนมสเปซฐานข้อมูลเฉพาะ:

การย้ายฐานข้อมูลออนไลน์จาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud เป็นเรื่องง่าย

อย่างที่คุณเห็น เมื่อใดก็ตามที่คุณมี ElastiCache แบบคลัสเตอร์ คุณต้องส่งตัวเลือก –cluster ก่อนระบุปลายทาง ElastiCache ต้นทาง

หมายเหตุสำคัญ

  • ดำเนินการทดสอบการยอมรับของผู้ใช้ในการย้ายข้อมูลก่อนนำไปใช้จริงในเวอร์ชันที่ใช้งานจริง
  • เมื่อการย้ายข้อมูลเสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าการรับส่งข้อมูลของแอปพลิเคชันได้รับการเปลี่ยนเส้นทางไปยังปลายทาง Redis Enterprise
  • ดำเนินการกระบวนการย้ายข้อมูลในช่วงที่มีการรับส่งข้อมูลต่ำเพื่อลดโอกาสที่ข้อมูลจะสูญหาย

บทสรุป

หากคุณกำลังมองหาเครื่องมือการย้ายข้อมูลแบบสดที่เรียบง่ายและใช้งานง่าย ซึ่งสามารถช่วยคุณย้ายข้อมูลจาก Amazon ElastiCache ไปยัง Redis Enterprise Cloud โดยไม่มีการหยุดทำงาน RIOT เป็นตัวเลือกที่น่าสนใจ

อ้างอิง:

  • RIOT – เครื่องมืออินพุต/เอาต์พุต Redis