[MySQL] การ copy multi database ไปอีกเครื่อง Server นึง

           การ Copy database จากอีกเครื่อง server นึง ไปอีก Server นึง บางทีเราต้องใช้เวลามานั่ง copy ทีละฐานข้อมูลไปทำให้เสียเวลา

shell> mysqldump –all-databases -uuser -ppassword | mysql -hremoteserver -uremoteuser -premoteserver

ตัวอักษรสีเขียวคือที่ต้องแก้ไขเป็นข้อมูลของ Server

  • User  : username ของ MySQL เครื่อง Server หลักที่จะทำการ Copy
  • Password  : password ของ MySQL เครื่อง Server หลักที่จะทำการ Copy
  • Remoteserver : ที่อยู่ของเครื่อง Server เครื่องที่จำทำการ Copy Database ไป ยกตัวอย่างเช่น IP 10.0.0.2
  • Remoteuser : username ของ MySQL เครื่อง Server ที่จะทำการ Copy ไปใส่
  • Remoteserver : password ของ MySQL เครื่อง Server ที่จะทำการ Copy ไปใส่

ตัวอย่างคำสั่ง

shell> mysqldump –all-databases -umyroot -pmypassword | mysql -h10.0.0.2 -umyroot       -pmypassword

 

หากต้องการแค่บาง Database ให้ใช้คำสั่ง

shell> mysqldump –databases database1 database2 database3 -umyroot -pmypassword | mysql -h10.0.0.2 -umyroot       -pmypassword

 

 

MySQL Dump ข้ามเครื่องเซิฟเวอร์

การย้ายฐานข้อมูลจากอีกเครื่องไปอีกเครื่อง อาจจะใช้ คำสั่งง่าย

# Mysqldump DATABASE_NAME > FILE.sql

แล้วนำไปโยนใส่เครื่องเซิฟเวอร์อีกเครื่องและทำการ Restore ด้วยคำสั่ง

# Mysql DATABASE_NAME < FILE.sql

แต่ทว่า เราลดระยะเวลาการโยนไฟล์ด้วยการ DUMP มันข้าม Server ไปลงฐานข้อมูลซะเลย ด้วยคำสั่ง

# Mysqldump DATABASE_NAME | ssh USER@IP_SERVER mysql -v DATABASE_NAME

 

โยนฐานข้อมูลออกมาซะ แล้วทำการโยนไปด้วย ssh ติดต่อเซิฟเวอร์  แค่นี้ก็ลดระยะเวลาไปได้เยอะ