ในบทความนี้เราจะมาเรียนรู้วิธีติดตั้งและกำหนดค่า MongoDB บน CentOS 7, MongoDB ซึ่งเป็นฐานข้อมูลโอเพ่นซอร์สและฟรี (เป็นฐานข้อมูล NoSQL) หมายความว่าเป็นฐานข้อมูลเชิงเอกสาร มันเก็บเอกสารที่ โครงสร้างคล้ายกับ JSON (ใน MongoDB เรียกว่า BSON) ที่มีความพร้อมใช้งานสูง ประสิทธิภาพ และการปรับขนาดอัตโนมัติ ต่างจาก RDBMS ตรงที่ไม่ต้องการสคีมาฐานข้อมูลที่กำหนดไว้ล่วงหน้าสำหรับการเพิ่มข้อมูลลงในตารางฐานข้อมูล เราสามารถแก้ไขสคีมาได้ตลอดเวลาโดยไม่รบกวนสคีมาที่มีอยู่
ข้อกำหนดเบื้องต้น
- ติดตั้ง Centos 7 บนเครื่อง Linux
- ผู้ใช้ที่มีสิทธิ์ผู้ใช้รูท
การเพิ่มที่เก็บ MongoDB
โดยค่าเริ่มต้น ที่เก็บ MongoDB ไม่อยู่ในที่เก็บ CentOS 7 เราจำเป็นต้องเพิ่มที่เก็บ MongoDB ลงในเครื่องท้องถิ่น
# vi /etc/yum.repos.d/mongodb-org.repo Output: [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
เมื่อเราเพิ่มที่เก็บ MongoDB ลงในเครื่องโลคัล เราจะระบบเพื่อให้ yum ดึงตรวจสอบข้อมูลที่เก็บ
# yum update Output: Loaded plugins: fastestmirror base | 3.6 kB 00:00 extras | 3.4 kB 00:00 mongodb-org-3.2 | 2.5 kB 00:00 updates | 3.4 kB 00:00 mongodb-org-3.2/7/primary_db | 54 kB 00:01 Determining fastest mirrors * base: mirror.dhakacom.com * extras: mirror.dhakacom.com * updates: mirror.dhakacom.com No packages marked for update
การติดตั้ง MongoDB
เนื่องจากรายละเอียดที่เก็บได้รับการอัปเดตบนเครื่องท้องถิ่น ตอนนี้เราจะติดตั้ง MongoDB โดยใช้คำสั่ง yum
ด้านล่างนี้เป็นคำสั่งติดตั้ง MongoDB
# yum install mongodb-org Output: Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.dhakacom.com * extras: mirror.dhakacom.com * updates: mirror.dhakacom.com Resolving Dependencies --> Running transaction check ---> Package mongodb-org.x86_64 0:3.2.11-1.el7 will be installed … … … ---> Package mongodb-org-mongos.x86_64 0:3.2.11-1.el7 will be installed ---> Package mongodb-org-server.x86_64 0:3.2.11-1.el7 will be installed ---> Package mongodb-org-shell.x86_64 0:3.2.11-1.el7 will be installed ---> Package mongodb-org-tools.x86_64 0:3.2.11-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mongodb-org x86_64 3.2.11-1.el7 mongodb-org-3.2 5.8 k Installing for dependencies: mongodb-org-mongos x86_64 3.2.11-1.el7 mongodb-org-3.2 5.6 M mongodb-org-server x86_64 3.2.11-1.el7 mongodb-org-3.2 12 M mongodb-org-shell x86_64 3.2.11-1.el7 mongodb-org-3.2 6.7 M mongodb-org-tools x86_64 3.2.11-1.el7 mongodb-org-3.2 41 M Transaction Summary ================================================================================ Install 1 Package (+4 Dependent packages) Total download size: 66 M Installed size: 201 M Is this ok [y/d/N]:y Downloading packages: warning: /var/cache/yum/x86_64/7/mongodb-org-3.2/packages/mongodb-org-3.2.11-1.el7.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID ea312927: NOKEY Public key for mongodb-org-3.2.11-1.el7.x86_64.rpm is not installed (1/5): mongodb-org-3.2.11-1.el7.x86_64.rpm | 5.8 kB 00:01 (2/5): mongodb-org-mongos-3.2.11-1.el7.x86_64.rpm | 5.6 MB 00:01 (3/5): mongodb-org-shell-3.2.11-1.el7.x86_64.rpm | 6.7 MB 00:00 (4/5): mongodb-org-server-3.2.11-1.el7.x86_64.rpm | 12 MB 00:06 (5/5): mongodb-org-tools-3.2.11-1.el7.x86_64.rpm | 41 MB 00:06 -------------------------------------------------------------------------------- Total 7.3 MB/s | 66 MB 00:08 Retrieving key from https://www.mongodb.org/static/pgp/server-3.2.asc Importing GPG key 0xEA312927: Userid : "MongoDB 3.2 Release Signing Key <[email protected]>" Fingerprint: 42f3 e95a 2c4f 0827 9c49 60ad d68f a50f ea31 2927 From : https://www.mongodb.org/static/pgp/server-3.2.asc Is this ok [y/N]:y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mongodb-org-server-3.2.11-1.el7.x86_64 1/5 Installing : mongodb-org-mongos-3.2.11-1.el7.x86_64 2/5 Installing : mongodb-org-tools-3.2.11-1.el7.x86_64 3/5 Installing : mongodb-org-shell-3.2.11-1.el7.x86_64 4/5 Installing : mongodb-org-3.2.11-1.el7.x86_64 5/5 Verifying : mongodb-org-shell-3.2.11-1.el7.x86_64 1/5 Verifying : mongodb-org-tools-3.2.11-1.el7.x86_64 2/5 Verifying : mongodb-org-mongos-3.2.11-1.el7.x86_64 3/5 Verifying : mongodb-org-server-3.2.11-1.el7.x86_64 4/5 Verifying : mongodb-org-3.2.11-1.el7.x86_64 5/5 Installed: mongodb-org.x86_64 0:3.2.11-1.el7 Dependency Installed: mongodb-org-mongos.x86_64 0:3.2.11-1.el7 mongodb-org-server.x86_64 0:3.2.11-1.el7 mongodb-org-shell.x86_64 0:3.2.11-1.el7 mongodb-org-tools.x86_64 0:3.2.11-1.el7 Complete!
เมื่อติดตั้ง MongoDD แล้ว เราจะเริ่มบริการ MongoDB
ด้านล่างนี้คือคำสั่งเพื่อเริ่มบริการ MongoDB –
# systemctl start mongod
เราเรียกใช้คำสั่งด้านล่างเพื่อตรวจสอบสถานะของบริการ MongoDB
# systemctl status mongod Output: mongod.service - SYSV: Mongo is a scalable, document-oriented database. Loaded: loaded (/etc/rc.d/init.d/mongod) Active: active (running) since Fri 2016-11-25 14:09:25 IST; 12s ago Docs: man:systemd-sysv-generator(8) Process: 9901 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS) CGroup: /system.slice/mongod.service └─9912 /usr/bin/mongod -f /etc/mongod.conf Nov 25 14:09:25 localhost.localdomain systemd[1]: Starting SYSV: Mongo is a s... Nov 25 14:09:25 localhost.localdomain runuser[9908]: pam_unix(runuser:session... Nov 25 14:09:25 localhost.localdomain runuser[9908]: pam_unix(runuser:session... Nov 25 14:09:25 localhost.localdomain mongod[9901]: Starting mongod: [ OK ] Nov 25 14:09:25 localhost.localdomain systemd[1]: Started SYSV: Mongo is a sc...Hint: Some lines were ellipsized, use -l to show in full.
โหลดการกำหนดค่า MongoDB อีกครั้ง
# systemctl reload mongod
หยุดบริการ MongoDB
# systemctl stop mongod
การกำหนดค่า MongoDB จำนวนกระบวนการ
โดยค่าเริ่มต้น เมื่อเราเรียกใช้ Mongo ไม่มีกระบวนการใดต่ำเกินไปถึง 4096 ดังนั้น MongoDB จะแสดงข้อผิดพลาดด้านล่าง –
# mongo Output: MongoDB shell version: 3.2.11 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see https://docs.mongodb.org/ Questions? Try the support group https://groups.google.com/group/mongodb-user Server has startup warnings: 2016-11-25T14:09:25.553+0530 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files. 2016-11-25T14:09:25.553+0530 I CONTROL [initandlisten]
ในการแก้ไขไม่มีกระบวนการ เราจำเป็นต้องแก้ไขไฟล์ “20-nproc.conf” ซึ่งอยู่ที่ “/etc/security/limits.d/”
# vi /etc/security/limits.d/20-nproc.conf Output: # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096 root soft nproc unlimited
เราจำเป็นต้องเปลี่ยน 4096 เป็น 32000
* soft nproc 32000
เมื่อเราเปลี่ยนค่าเป็น 32000 เราจำเป็นต้องเริ่มบริการ MongoDB ใหม่ ด้านล่างนี้คือคำสั่งให้เริ่มบริการ MongoDB ใหม่
# systemctl restart mongod
การสร้างผู้ใช้ผู้ดูแลระบบ MongoDB
ที่นี่เราจะสร้างผู้ใช้หนึ่งรายด้วยชื่อผู้ใช้ผู้ดูแลระบบและรหัสผ่าน “password123” เมื่อเราสร้างผู้ใช้แล้ว เราจะตรวจสอบรายชื่อผู้ใช้ในฐานข้อมูล
# mongo Output: MongoDB shell version: 3.2.11 connecting to: test > use admin switched to db admin > db.createUser( ... { ... user: "admin", ... pwd: "password123", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ... ) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > show users; { "_id" : "admin.admin", "user" : "admin", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } >
ในบทความนี้ เราได้เรียนรู้ - วิธีเพิ่มที่เก็บ MongoDB ลงในเครื่องท้องถิ่นและติดตั้ง MongoDB และเรายังได้เรียนรู้เกี่ยวกับวิธีการเปลี่ยนหรือเพิ่มจำนวน ของกระบวนการตั้งแต่ 4096 ถึง 32000 ในการกำหนดค่า MongoDB และวิธีสร้างผู้ใช้ที่เป็นผู้ดูแลระบบ