ฐานข้อมูล

How to streaming export and import MySQL database to other server

netcat-ncใครเคย dump database พร้อม import database ข้ามเครืองบ้าง? ฟังดูแล้วเหมือนจะทำไม่ได้ แต่จริงๆแล้วสามารถทำได้และไม่มีอะไรสลับซับซ้อนเพียงแค่มีคำสั่ง nc (netcat) มาช่วยในการส่งข้อมูลแบบ streaming ไปยังเครื่องปลายทาง สำหรับการ streaming export and import MySQL database ไปยังเครื่องอื่นสามารถทำได้โดย รัน mysqldump ที่เครื่องต้นทาง และรัน mysql เพื่อ import ข้อมูลที่เครื่องปลายทาง โดยการรับส่งข้อมูลจะผ่านโปรแกรม nc ฟังโุแล้วอาจจะงง งั้นมาดูตัวอย่างกันเลยครับ ตัวอย่างการใช้งาน netcat (nc) ควบคู่กับ mysqldump เพื่อ online import database สมมติต้องการ dump database พร้อมด้วย import database ไปยังไปยังเครื่อง 10.10.10.10 (ใช้ port 13360) เราสามารถรันคำสั่งได้ดังนี้ เครื่องที่ใช้ export database

[root@DB1 ~]# mysqldump -uroot -p DATABASE_NAME |bzip2 -c | nc 10.10.10.10 13360

เครื่องที่จะ import database เข้าไปยังระบบ

[root@DB2 ~]# nc -l 13360 |bzip2 -dc | mysql -uroot -p DATABASE_NAME

ถ้าหากไม่สามารถรันได้ หรือพบ error ด้านล่าง

mysqldump: Got errno 32 on write

ให้ตรวจสอบ firewall ว่าสามารถติดต่อกันได้ผ่านทาง port 13360 ได้หรือยัง

EOF.← กลับไปอ่านบทความอื่น