Install MongoDB
มาลองลง Mongo DataBase กันครับ เหตุที่ต้องใช้เนื่องด้วยมีโครงการที่เพิ่งเริ่มต้น และไม่สามารถตอบได้ว่าจะมีการเก็บข้อมูลเพิ่มในส่วนของคอลัมภ์ข้อมูลหรือไม่ ดังนั้นอาจจะมีการเปลี่ยนแปลงได้ตลอดเวลา การใช้ดาต้าเบสตัวนี้อาจจะเหมาะสมกว่า sql หรือตัวอื่นๆ ที่ต้องระบุความสัมพันธ์ของฐานข้อมูลกันตั้งแต่ต้น ซึ่งตัวที่ใช้จะเป็นของ Community edition ที่ใช้งานได้ฟรีนะครับ
-
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - ให้ใช้คำสั่งนี้ใน terminal เพื่อใช้ key สาธารณะนะครับ ถ้าได้จะขึ้น OK (ตัวนี้ของ version 5 ล่าสุดในปัจจุบันนะครับ)
- ถ้าไม่ได้ให้ใช้คำสั่ง sudo apt install gnupg ก่อนแล้วย้อนไปที่ข้อ 1 นะครับ
- echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list ใช้แอด repo นะครับ (ตัวนี้ของ ubuntu 18.04 นะครับ ถ้าเวอร์ชั่นอื่นๆ ดูได้จากลิ้งค์ข้างบนที่ให้ไปนะครับ)
- sudo apt update เราจะเห็นพาธของ MongoDB ขึ้นมานะครับ
- sudo apt-get install -y mongodb-org=5.0.0 mongodb-org-database=5.0.0 mongodb-org-server=5.0.0 mongodb-org-shell=5.0.0 mongodb-org-mongos=5.0.0 mongodb-org-tools=5.0.0 อันนี้ลงแบบเจาะจงเวอร์ชั่น 5 นะครับ ถ้าเอาแค่เวอร์ชั่นใหม่สุดใช้แค่คำสั่ง sudo apt install -y mongodb-org ก็พอครับ (สามารถเช็คเวอร์ชั่นได้ด้วยคำสั่ง mongo -version นะครับ)
- ซึ่งๆ มันก็จะอัพเดตให้เราเองอยู่ดี 555 เพราะงั้นเราเลยต้องเซ็ตเพิ่มให้มันหยุดการอัพเดตออโต้ด้วยคำสั่งชุดนนี้นะครับ
echo " mongodb-org hold" | sudo dpkg --set-selections
echo " mongodb-org-database hold" | sudo dpkg --set-selections
echo " mongodb-org-server hold" | sudo dpkg --set-selections
echo " mongodb-org-shell hold" | sudo dpkg --set-selections
echo " mongodb-org-mongos hold" | sudo dpkg --set-selections
echo " mongodb-org-tools hold" | sudo dpkg --set-selections
ใส่ทีละบรรทัดนะครับ เพราะมันจะล็อคกันคนละส่วน ทีนี้ฐานข้อมูลเราก็จะไม่อัพเดตอีกต่อไป (กรณีต้องการเอาออกนะครับ sudo apt-mark unhold mongodb-org ไล่ไปทีละชื่อนะครับ) - ps --no-headers -o comm 1 เช็คแล้วได้ systemd ดังนั้นสั่งเริ่มทำงานฐานข้อมูลได้เลย (ถ้าได้ Init ต้องใช้อีกคำสั่งนะครับ ดูในลิ้งค์ข้างบนเช่นกัน แต่ต้องตัวเก่าซึ่งไม่น่าจะมีคนใช้กันเท่าไหร่)
- sudo systemctl start mongod หรือ sudo service mongod start สั่งเริ่มทำงานของฐานข้อมูลนะครับ
- sudo systemctl status mongod หรือ sudo service mongod status เพื่อตรวจสอบการทำงานของฐานข้อมูลเรานะครับ
- อันนี้ไว้ใช้รีสตาร์ทฐานข้อมูลนะครับ sudo systemctl restart mongod หรือ sudo service mongod restart เพราะการปรับเปลี่ยนบางอย่างต้องใช้
-
mongo อันนี้คำสั่งสำหรับเข้าไปใช้งานฐานข้อมูลนะครับ แน่นอนต้องใช้ทุกครั้งตอนเข้าใช้งาน ซึ่งเดี๋ยวในส่วนการใช้งานจะอธิบายกันอีกที ส่วนนี้แค่ติดตั้ง และวิธีถอนการติดตั้งก่อน
- การถอนการติดตั้งนะครับ ก่อนอื่นให้หยุดการทำงานของฐานข้อมูลด้วยคำสั่ง sudo systemctl stop mongod หรือ sudo service mongod stop แล้วตามด้วยคำสั่ง sudo apt-get purge mongodb-org* -y นะครับ
- การลบในส่วนของ log file ด้วย sudo rm -r /var/log/mongodb
- การลบในส่วนประกอบอื่นๆ นะครับ sudo rm /etc/apt/sources.list.d/mongodb*.list
- อันนี้ปัญหาส่วนที่เจอบ่อยนะครับ เวลาสั่ง MongoDB stop แล้วสั่ง start ใหม่ไม่ทำงานนนะครับ ให้ใช้คำสั่ง sudo lsof -i -P -n | grep " mongod " เช็คว่ามันยังมีการทำงานค้างอยู่รึเปล่า (ซึ่งมันออโต้สตาร์ทตอนเปิดเครื่องด้วย ส่วนมากก็เจอปัญหาเดียวกัน) ถ้ามีให้ใช้คำสั่ง kill -9 NumberPID ซึ่ง NumberPID เป็นข้อมูลอันดับที่สอง ถัดจากชื่อ mongod นะครับ
- การแก้ปัญหาที่ MongoDB ออโต้สตาร์ทแล้วค้างใน process สามารถทำได้ด้วยคำสั่ง echo manual | sudo tee /etc/init/mongod.override นะครับ ทีนี้จะออโต้สตาร์ทได้ปกติละ
- การปิดการทำงานออโต้สตาร์ทของ MongoDB นะครับ ให้ใช้คำสั่ง sudo systemctl disable mongod นะครับ แน่นอนว่าถ้าอยากให้มันกลับไปทำงานออโต้สตาร์ทใหม่ก็ใช้คำสั่ง sudo systemctl enable mongod นะครับ
- ซึ่งถ้าบางทีหาก MongoDB มี error วิธีแก้ปัญหาเบื้องต้นคือถอน และติดตั้งใหม่ตามข้อ 12 -14 นะครับ (วิธีแก้อื่นๆ ดู ที่นี้นะครับ)
- อันนี้คือการลบในส่วนของฐานข้อมูลด้วยคำสั่ง sudo rm -r /var/lib/mongodb ถ้าข้อมูลต้องเอากลับมาใช้ใหม่อย่าลืมทำ backup ไว้ก่อนนะครับ
จบแล้วนะครับ (กว่าจะจบลงได้กับหลายปัญหา ที่หาไม่ได้ตามหนังสือ และแม้แต่ตามกระทู้ต่างประเทศก็ยังมีน้อยที่พูดกันตรงจุด ใช้เวลาหลายวันในการหาทางแก้ปัญหาอยู่เหมือนกัน) ต่อไปเราจะมาเริ่มที่คำสั่งการใช้งานฐานข้อมูลกันนะครับ
ความคิดเห็น
แสดงความคิดเห็น