กรณีศึกษา การสำรองข้อมูล Neo4j Graph Database

สวัสดีครับ บทความนี้เป็นกรณีศึกษาเกี่ยวกับการสำรองข้อมูล Neo4j Graph Database เรื่องมันมีอยู่ว่า สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ หรือชื่อเดิมคือ ศูนย์คอมพิวเตอร์ ได้พัฒนาระบบเอกสารอิเล็คทรอนิกส์ เวอร์ชั่นใหม่ ซึ่งได้เปลี่ยนเทคโนโลยีในการเก็บข้อมูลมาใช้ Neo4j Graph Database แทนของเดิมที่ใช้ Microsoft SQL Server จึงต้องมีการวางแผนความเสี่ยงในเรื่องของการสำรองข้อมูล คราวนี้ตัวผมเองไม่ได้มีความเชี่ยวชาญหรือรู้จักกับ Neo4j Graph Database มากเท่าไหร่ แต่น้องที่สำนักนวัตกรรมที่เป็นผู้พัฒนาระบบและเรียนรู้การใช้งานก็ได้ไปศึกษา ทดสอบวิธีการส่งออกและนำเข้าข้อมูลจนมีความรู้ ความเข้าใจ ก็ได้มาถ่ายทอดต่อ ส่วนตัวผมเองก็นำวิธีการนี้ไปบวกกับความรู้เรื่อง Batch Script + PowerShell เล็กน้อย ทำเป็นระบบสำรองข้อมูลขึ้นมา ซึ่งขณะนี้ได้ทดสอบมาประมาณ 1 เดือนก็ยังสามารถทำงานได้ จึงจะขอมาเล่าสู่กันฟังในบทความนี้ครับ ข้อมูลที่ได้รับมาก็คือ 1. Neo4j Graph Database ที่ใช้เป็นรุ่น Community ข้อดีคือ ไม่มีค่าใช้จ่ายในการใช้งาน แต่จะมีข้อจำกัดคือ ในการส่งออกและนำเข้าไฟล์ฐานข้อมูลนั้นจะไม่มีเครื่องมือให้ใช้งานมากมายจะต้องใช้คำสั่่งผ่านทาง Command Line 2. ข้อจำกัดอีกอย่างคือ การส่งออกไฟล์นั้นจะทำในขณะ Neo4j ทำงานอยู่ไม่ได้ ต้องหยุดการทำงานก่อนเสร็จแล้วจึงทำการสตาร์ท Neo4่j ขึ้นมาทำงานใหม่ นำข้อมูลที่ได้มาวางแผนการเขียน Script – เมื่อได้รับวิธีการสำรองข้อมูลมาแล้ว สิ่งหนึ่งที่อยากทราบก็คือ ระยะเวลาในการสำรองใช้เวลาเท่าไหร่ ตั้งแต่เริ่มต้นหยุดการทำงานไปจนถึงเสร็จสิ้นกระบวนการ จึงต้องมีการเขียน Log ไฟล์เอาไว้ด้วย เพื่อแสดงเวลาให้เห็น – เนื่องจากมีหลายขั้นตอนในการทำงานจีงใช้วิธีเขียนไฟล์ Script แยกการทำงานออกไป เช่น Batch File ชื่อ neo4j-stop.bat เอาไว้หยุดการทำงาน Neo4j Batch File ชื่อ neo4j-dump.bat เอาไว้ส่งออกไฟล์ฐานข้อมูล Neo4j ออกมา เมื่อได้รับข้อมูลและวางแผนการทำงานเรียบร้อยแล้ว จึงเริ่มต้นเขียน Script ตามลำดับขั้นตอนดังนี้ 1. สร้าง Batch File ชื่อ neo4j-stop.bat เอาไว้สำหรับหยุดการทำงานของ Neo4j จะมีคำสั่งที่เขียน ดังนี้ @echo off for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeStart=%%a”echo === Start Backup Neo4j On %DATE% %TimeStart% === > log.txt net stop neo4j >> log.txt call neo4j-dump.bat อธิบายได้ดังนี้– เริ่มต้นจะมีการรับค่าวันและเวลาปัจจุบัน คือ %DATE% และ %TimeStart%– จากนั้นจึงเริ่มใช้คำสั่งหยุดการทำงานของ Neo4j– สังเกตว่าทุกคำสั่งจะมีการส่งออกไปเก็บที่ log.txt– เสร็จแล้วจะมีการเรียก Batch Script neo4j-dump.bat ให้ทำงานต่อ 2. สร้าง Batch File ชื่อ neo4j-dump.bat เอาไว้สำหรับส่งออกไฟล์ Neo4j จะมีคำสั่งที่เขียน ดังนี้ @echo off for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeDumpStart=%%a” echo == Start Dump Database On %TimeDumpStart% == >> log.txt neo4j-admin dump –database=neo4j –to=C:\neo4j_dump\backup_%date:~10,4%%date:~4,2%%date:~7,2%.dump > logtmp.txt 2>> log.txt & call neo4j-start.bat อธิบายได้ดังนี้– จะมีคำสั่ง dump ฐานข้อมูล Neo4j ออกมาเก็บไว้ที่ C:\neo4j_dump ตั้งชื่อไฟล์ว่า

Read More »