Mysql version 5.0 ว ธ ม อการใช งาน

4.เลื่อนหน้าต่างลงมาด้านล่าง ในส่วนของ Global Privileges สามารถกำหนดสิทธิ์การใช้งานของ User บนฐานข้อมูล MySQL ได้ ทั้งการ Create, Edit, Delete, Insert, Update, Select,.... เมื่อกำหนดสิทธิ์ของผู้ใช้งานเรียบร้อยแล้วให้คลิ๊ก Add User

จากตัวอย่าง หมายความว่า ใช้ user root ในการสำรองฐานข้อมูลที่ชื่อ mindphp เก็บไว้ใน ไฟล์ mindphp_backup.sql

  • การสำรองฐานข้อมูล mindphp เฉพาะ บางตาราง

$ mysqldump -u root -p mindphp tb_users tb_tutorials  > mindphp_sametable_backup.sql

  • การสำรองฐานข้อมูลหลายๆ ก้อนพร้อมกัน

$ mysqldump -u root -p --databases db1 db2 db3 > dbs_backup.sql

  • การสำรองฐานข้อมูลทุกก้อนในคำสั่งเดียว

$ mysqldump -u root -p --all-databases > alldb_backup.sql

  • การสำรองฐานข้อมูลพร้อมทั้งบีบอัดไฟล์ที่ได้

$ mysqldump -u [uname] -p[pass] [dbname] | gzip -9 > [backupfile.sql.gz]

ตัวอย่าง Option (ออฟชั่น) ในการสำรองฐานข้อมูล

  • --add-drop-table: บอกให้ mysqldump เพิ่มคำสั่ง DROP TABLE (ดร็อปเทเบิ้ล) ก่อนคำสั่ง CREATE TABLE (ครีเอต เทเบิ้ล) เพื่อให้เวลาเรา restore (รีสโตร์) ฐานข้อมูลกลับถ้า ถ้ามีตารางเดิมอยู่มันจะลบตารางเดิมออกก่อนแล้วสร้างตารางให้ใหม่พร้อมทั้งเอาข้อมูใส่ให้ที่ตารางนั้น
  • --no-data: เป็นการสำรองฐานข้อมูลเฉพาะโครงสร้างฐานข้อมูล โดยไม่ได้เอาข้อมูลมาด้วย
  • --add-locks: เป็นการเพิ่มคำสั่ง LOCK TABLES (ล็อคเทเบิ้ล) และ UNLOCK TABLES (อันล็อค เทเบิ้ล) ตอนที่เรา backup restore (เเบ็คอัพ รีสโตร์)

การ Restore (รีโสตร์) หรือ การ Import (อิมพอร์ท) ข้อมูลที่สำรองไว้นำกลับมาใช้ใหม่ กรณี .sql

$ mysql -u [uname] -p[pass] [mindphp] < [mindphp_backupfile.sql]

จากตัวอย่างคำสั่ง หมายความว่า เราจะ import ไฟล์ mindphp_backupfile.sql กลับไปที่ฐานข้อมูลที่ชื่อ mindphp

กรณี Restore ข้อมูล .gz

gunzip < [path-to-file-sql.gz] | mysql -u [uname] -p[pass] [db_name]

จากตัวอย่างคำสัง หมายความว่า เรา import ไฟล์ ชื่อ path-to-file-sql.gz กลับไปยังฐานข้อมูลชื่อ db_name

เท่านี้ฐานข้อมูลขนาดใหญ่ ระดับ หลายร้อย MB หรือ GB ก็ไม่ใช่ปัญหาในการ backup, และ restore อีกต่อไปครับ

วิธีการก็มีหลายแบบครับ..แล้วแต่ว่าใครจะถนัดแบบไหน อีกทั้งก็ขึ้นอยู่กับจำนวนของข้อมูลเก่าที่มีด้วยว่ามีมากน้อยเพียงใดเพราะนั่นหมายถึงระยะเวลารอคอยในการปรับเปลี่ยนโครงสร้างที่มียาวนานขึ้นนั้นเอง...วิธีการที่ปลอดภัยที่สุด(ที่ผมทำ)ก็คือ หาเครื่องซักเครื่องนึง อาจจะเป็นวินโดว์ก็ได้ ทำ initial import ข้อมูลมาจากเครื่องเซิฟเวอร์จริง จากนั่น ก็เปลี่ยน ไอพีของเครื่องสำรองเป็นไอพีที่ใช้จริง..ในระหว่างนี้อาจจะต้องหยุดเซอร์วิสของมายเอสคิวแอลไว้ซัก แป๊บ...(ยูสเซอร์อาจจะไม่รู้สึก) แล้วก็เปลี่ยนไอพีของเซอร์เวอร์หลักที่เคยใช้เป็นไอพีอื่น..ไม่งั้นก็จะชนกับไอพีของเครื่องที่เราทำขึ้นใหม่.....เท่านี้ก็จะได้เครื่องไว้ให้บริการผู้ใช้งานแล้ว..และในระหว่างนี้เราก็จะอัพ จากมายเอสคิวแอล 4.1 เป็น 5 ด้วยขั้นตอน

ลีนุกซ์นะครับ... 1.สำรองข้อมูลทั้งหมดในฐานไว้ในเครื่องด้วยคำสั่ง(ถ้ามีหลายดาต้าเบสควรจะมีเหลือไว้แค่เพียงที่ใช้งานจริงฐานเดียวนะครับ)จะได้ไฟล์ เอสคิวแอล 1 ไฟล์ เก็บไว้ที่ /root/mysqldata.sql mysqldump --opt --single-transaction -A > /root/mysqldata.sql

2.หยุดการใช้งานของมายเอสคิวแอล service mysql stop

3. พื้นที่ชั่วคราวสำหรับพักข้อมูลในการติดตั้ง export TMP=/tmp export TMPDIR=/tmp

4.ลบไฟล์คอนฟิกเดิมออก...พร้อมทั้งเซอร์วิสและข้อมูลเดิม(ก๊อบไฟล์คอนฟิกเดิม my.cnf เอาไว้ก่อนด้วยครับเก็บไว้ที่เดีวกันกับที่เราโหลดไฟล์ อาพีเอ็มมา) rm -fr /etc/my.cnf rm -fr /var/lib/mysql rm -f /etc/init.d/mysql*

5.ติดตั้ง แพคเกจของเวอร์ชั่นใหม่(หาโหลดเอาที่ใกล้เคียงก็ได้ครับ) rpm -ivh MySQL-shared-compat-5.0.19-0.glibc23.i386.rpm --nodeps --force rpm -ivh MySQL-client-5.0.19-0.glibc23.i386.rpm --nodeps --force rpm -ivh MySQL-server-5.0.19-0.glibc23.i386.rpm --nodeps --force

6. หยุดการใช้งานชั่วคราว service mysql stop

7.ก๊อปปี้ไฟล์คอฟิกกลับคืนสู่ที่เดิมพร้อมทั้งกำหนดสิทธิการเข้าอ่านไฟล์ด้วย 744 cp my.cnf /etc chmod 744 /etc/my.cnf

8.เร่มการใช้งาน service mysql start

9. สร้างฐานข้อมูล(แล้วแต่จะตั้งนะครับ.) mysql -e "drop database if exists DBsbr" mysql -e "create database DBsbr" mysql -e "grant all on DBsbr.* to sa@'%' identified by 'sa'"

10.นำข้อมูลเข้าสู่ฐานข้อมูลด้วยคำสั่ง mysql < /root/mysqldata.sql หรือ ใช้การ initial import กลับคืนมาจากเครื่องวินโดว์ จากนั้นรอให้อิมพอร์ตเสร็จ...แล้วก็รัน รีพลิเคชั้นให้ข้อมูลที่ใช้งานในช่วงระหว่างที่เราทำงานเข้ามาที่ฐานตัวใหม่นี้อีกที....เมื่อข้อมูลเท่ากันสองเครื่อง...ก็ควรจะทำการเปลี่ยนไอพีกลับคืนด้วย..เสร็จแล้วครับ..... ********** ลบ ไฟล์ mysqldata.sql ออกด้วยครับ..เพื่อฟรีฮาร์ดดิสก์ **********ref. อ.ชัยพร ครับ.. หรือจะใช้ตัวอัพเกรดเฮ้วเปอร์ที่ อ เคยทำไว้ก็ได้ครับ..แต่ผมยังไม่ได้ลองตัวนี้..ไฟล์แนบครับ

« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2007, 00:12:20 AM โดย SBR10993 »

Mysql version 5.0 ว ธ ม อการใช งาน
บันทึกการเข้า

Mr.kanchit Pinitmontree NongBualamphu Prov.Pub.Health implimented on 14-07-2006 individual