How to streaming export and import MySQL database to other server
ใครเคย 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
[shell][root@DB1 ~]# mysqldump -uroot -p DATABASE_NAME |bzip2 -c | nc 10.10.10.10 13360[/shell]
เครื่องที่จะ import database เข้าไปยังระบบ
[shell][root@DB2 ~]# nc -l 13360 |bzip2 -dc | mysql -uroot -p DATABASE_NAME[/shell]
ถ้าหากไม่สามารถรันได้ หรือพบ error ด้านล่าง
[shell]mysqldump: Got errno 32 on write[/shell]
ให้ตรวจสอบ firewall ว่าสามารถติดต่อกันได้ผ่านทาง port 13360 ได้หรือยัง