Monday, October 24, 2011

จะย้าย data path ใน MySQL 5.0 อย่างไร?


         หลักการทั่วไปของการย้าย data path บน MySQL 5.0 นั้น อาจดูซับซ้อนกว่า MySQL 3.23 ที่คุ้นเคย หรือกระทั้ง MySQL 4 ตัวผมเองนั้นผมเล่นจาก MySQL 3.23 แล้วว๊าปมาเป็นเวอร์ชัน 5.0 เลย เพราะไม่ชอบเวอร์ชัน 4 เอาเสียเลย เนื่องจากเป็นเวอร์ชันครึ่งผีครึ่งคนเกี่ยวกับภาษาไทย สมัยที่ผมยังเช่า hosting ชาวบ้านเขาที่ us-based server ผมเจอปัญหา 108 จริงๆ ครับ (โดยเฉพาะเรื่องภาษาไทย) หลังๆ ไม่เจอแล้วครับ เพราะมีเซิร์ฟเวอร์เป็นของตนเองแล้ว สั่งเองทุกอย่างได้ดังใจหมาย กว่าจะเก็บเล็กผสมน้อยจนพอมีเงินมาซื้อเซิร์ฟเวอร์เป็นของตัวเองได้ ก็เล่นเอาเหนื่อยชนิดหืดขึ้นคอเหมือนกันครับ :)
          สำหรับบน MySQL 5.0 นั้นสนับสนุน utf-8 (รหัสอักษร unicode เต็มพิกัด) ดังนั้นคุณจะไม่เจอปัญหาในการเก็บข้อมูลหลายๆ ภาษาลงบนฟิลด์เดียวกัน ไม่ต้องมานั่งแยกฟิลด์ของเทเบิลเพื่อเก็บแยกข้อมูลเหมือนในเวอร์ชันก่อนๆ เช่น ไทย อังกฤษ เยอรมัน  3 ภาษาฟิลด์เดียวกัน  อย่างนี้ไม่มีปัญหา เพราะถ้าไม่ใช่ระบบ unicode แล้ว สระภาษาไทยมันจะไปตีกับสระของภาษาเยอรมัน กลายเป็นไม้ตรี ไม้จัตวาปรากฏบนภาษาเยอรมันมั่ง หรือภาษาอะไรก็ตาม ที่ดันทะลึ่งไปมีโค้ดตรงกับสระของภาษาไทย ภาษานั้นจะมีปัญหาหมดครับ

วกกลับเข้าเรื่องกันต่อ หลักการติดตั้งให้ MySQL 5.0 มันเก็บ data path แยกไปตามที่ต้องการให้ทำดังนี้ครับ
          1. ในการติดตั้ง MySQL 5.0 ถ้าอยากให้ data path เก็บอยู่ที่ไดรฟ์ไหน ให้ติดตั้ง MySQL ไว้ที่ไดรฟ์นั้น เช่น ในคอมพิวเตอร์เรามีไดรฟ์ C และไดรฟ์ D เราอยากให้ข้อมูล data ของ MySQL อยู่ที่ไดรฟ์ D ก็ให้เราติดตั้ง MySQL ไว้ที่ไดรฟ์ D เช่น D:\MySQL5 หลังจากนั้น คุณผู้อ่านก็ติดตั้ง MySQL ไปตามปกติที่เคย (อย่าลืมสั่ง stop Apache ก่อนนะ แล้วก็อย่าลืมปิด Firewall application ก่อนจะเริ่มติดตั้ง MySQL ด้วยนะครับ โดยเฉพาะพวก Firewall application ทั้งหลายมันจะดัก port ไว้ ทำให้ MySQL ติดตั้งไม่ได้)
           2. พอติดตั้ง MySQL เสร็จแล้ว ให้ไปเปิดไฟล์ my.ini แล้วมองหาบรรทัดนี้ครับ (ถ้าคุณติดตั้ง MySQL ใน D:\MySQL5 ไฟล์ my.ini จะอยู่ที่                     
D:\MySQL5\my.ini)
#Path to the database root
datadir="D:/MYSQL5/Data/"
จากนั้นให้แก้เป็น path ที่คุณต้องการ เช่นผมอยากจะเก็บไว้ที่ d:/mysql_data/ ก็ให้พิมพ์แบบข้างล่างนี้ 
ข้อควรระวังให้ใช้ forward slash "/" นะครับ ไม่ใช่ back slash "\"
#Path to the database root
datadir="D:/mysql_data/"

          3. ถ้าคุณต้องการปรับแต่งเพิ่มเติม ก็ให้ดูบรรทัดต่อไปนี้เพิ่มด้วยก็ได้
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8
บรรทัดข้างบนนี้ให้กำหนด default character set เป็น utf-8 ถ้าไม่ชอบก็เปลี่ยนได้ (แนะนำว่าเป็น utf8 นั้นดีที่สุดแล้วครับ)
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
ถ้าคุณไม่ชอบการกำหนด default engine เป็น INNODB ก็สามารถเปลี่ยน MyISAM ได้ ดังบรรทัดข้างล่าง
# The default storage engine that will be used when create new tables when
default-storage-engine=MyISAM
ความต่างของ INNODB กับ MyISAM ก็คือ MyISAM ทำงานได้เร็วกว่า แต่ไม่สามารถทำ loop back transaction ได้ ถ้าใช้เป็น INNODB จะสามารถทำ loop back transaction ได้ กรณีของ INNODB มักนิยมใช้กับ transaction ที่เกี่ยวกับระบบการเงิน หรือการชำระเงินเป็นต้น
เมื่อปรับ config เสร็จเรียบร้อยแล้วก็สั่ง save ไฟล์

         4. ไปที่โฟลเดอร์ D:\MYSQL5\data แล้ว copy ทั้งหมดที่มีในนั้น ไปไว้ที่ D:/mysql_data/"
(อย่าลืมสั่ง folder option ใน windows ให้แสดง hidden file กับ hidden system file ก่อนนะครับ ไม่งั้นจะมองไม่เห็นไฟล์อะไร)

ถ้า copy ถูกต้อง จะประกอบไปด้วยโฟลเดอร์ชื่อ mysql และ test แล้วก็มีไฟล์ ib_logfile0, ib_logfile1, ibdata1 และ microsof-xxxx (xxxx คือค่าที่ผันตามเครื่องคุณ)

         5. จากนั้นไปที่ start->setting->control panel->Performance and Maintenance->Administrative Tools->Services

พอเปิดส่วน Services ขึ้นมาแล้ว ให้มองหาบรรทัดที่เขียนว่า MySQL จากนั้นก็ drag ขวาที่บรรทัดนี้แล้วสั่ง stop แล้ว ค่อย start ใหม่

         6. ลองเปิดดู http://localhost/phpmyadmin แล้วลองสร้าง table หรือ database อะไรก็ได้ แล้วไปดูที่ d:/mysql_data ว่ามีชื่อ table หรือ database ขึ้นตามนั้นไหม ถ้ามีก็เป็นอันว่าโป๊ะเช๊ะ ok เรียบร้อยแล้วหละครับ 

No comments:

Post a Comment