Cài đặt và các thao tác cơ bản MongoDB 3

Posted: Tháng Một 14, 2018 in Database, MongoDB
Thẻ:,

Bài viết hướng dẫn cài đặt MongoDB-3x trên CentOS 7 và thao tác cơ bản trên MongoDB

I. Giới thiệu và cài đặt MongoDB

  1. Giới thiệu

Trước giờ hay làm việc với kiểu cơ sở dữ liệu SQL như: MySQL, MS SQL, DB2 và Oracle (cũng mới tiếp xúc). Trong những năm gần đây nổi lên với “big data” và web theo thời gian thực (real time), thì kiểu dữ liệu NoSQL được sử dụng cho các ứng dụng trên trở nên phổ biến hơn. MongoDB là kiểu dữ liệu NoSQL, rất phổ biến hiện nay.

  • MongoDB miễn phí và nguồn mở.
  • MongoDB lưu trữ dữ liệu trong các document, giống như kiểu JSON vào trong collection dưới dạng binary (hay còn gọi là BSON), cho phép lưu trữ dữ liệu không tuân theo cấu trúc nhất định nào
  • MongoDB là một cơ sở dữ liệu phân tán, vì vậy tính sẵn sàng cao, khả năng mở rộng theo chiều ngang dễ dàng bằng sharding.
  • Mỗi khi truy vấn dữ liệu, bản ghi được cache vào RAM mà không cần phải đọc từ ổ cứng, vì vậy mà cho tốc độ truy vấn cực cao. Nhưng nó chiếm rất nhiều không gian nhớ của RAM, vì vậy máy chủ cần lượng RAM đủ lớn để đáp ứng yêu cầu.
  1. Các gói cài đặt

MongoDB provides officially supported packages in their own repository. This repository contains the following packages:

Package Name   Description

mongodb-org     A metapackage that will automatically install the four component packages listed below.

mongodb-org-server        Contains the mongod daemon and associated configuration and init scripts.

mongodb-org-mongos    Contains the mongos daemon.

mongodb-org-shell           Contains the mongo shell.

mongodb-org-tools          Contains the following MongoDB tools: mongoimport bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop.

The mongodb-org-server package provides an initialization script that starts mongod with the /etc/mongod.conf configuration file.

  1. Tạo mongo repository

#vim /etc/yum.repos.d/mongo.repo

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
  1. Cài đặt MongoDB và các gói công cụ

$sudo yum install -y mongodb-org
Dependencies Resolved

=============================================================================================================================================================================================
 Package                                           Arch                                  Version                                        Repository                                      Size
=============================================================================================================================================================================================
Updating:
 mongodb-org                                       x86_64                                3.4.10-1.el7                                   mongodb-org-3.2                                5.8 k
 mongodb-org-mongos                                x86_64                                3.4.10-1.el7                                   mongodb-org-3.2                                 12 M
 mongodb-org-server                                x86_64                                3.4.10-1.el7                                   mongodb-org-3.2                                 20 M
 mongodb-org-shell                                 x86_64                                3.4.10-1.el7                                   mongodb-org-3.2                                 11 M
 mongodb-org-tools                                 x86_64                                3.4.10-1.el7                                   mongodb-org-3.2                                 49 M
Transaction Summary
=============================================================================================================================================================================================
Upgrade  5 Packages
  1. Start MongoDB

Tạo start link để cho phép khởi động cùng hệ thống và chạy MongoDB

systemctl enable mongod
systemctl start mongod

Truy cập mongodb

#mongo

>db.version();

3.4.10

>show dbs;

admin  0.078GB

local  0.078GB >

II. Thao tác cơ bản với mongodb từ dòng lệnh

1. Tạo tài khoản người dùng

Trong MongoDB, chứng thực truy cập bị disable bởi mặc định, nên cho phép đăng nhập mongodb từ localhost hay từ xa đều không cần chứng thực, và sử dụng với đặc quyền cao nhất. Để hạn chế các quyền truy cập vào mongodb, chúng ta sẽ enable quyền chứng thực khi truy cập mongodb.

Để enable chứng thực chúng ta thêm đoạn sau vào tệp cấu hình mongodb

cat >>/etc/mongod.conf <<EOF
security:
    authorization: enabled
EOF

Lúc này, khi truy cập mongodb từ xa nếu không có tài khoản người xác thực sẽ không có đặc quyền; với truy cập localhost thì có exception (localhost exception) để có thể cho phép tạo tài khoản người dùng đầu tiên. Người dùng đầu tiên này phải có đặc quyền để tạo tài khoản người dùng khác như: vai trò userAdmin hoặc userAdminAnyDatabase

Tạo tài khoản đầu tiên với quyền userAdmin

mongo
>db.createUser(
    {
      user: "keepwalking",
      pwd: "P@ssw0rd",
      roles: [
        {
          role: "userAdmin", db: "admin"
          }
        ]
   }
)
Successfully added user: {
  "user" : "keepwalking",
  "roles" : [
    {
      "role" : "userAdmin",
      "db" : "admin"
    }
  ]
}
>

Tài khoản với quyền readWrite cho một database được chỉ định

$mongo
>db.createUser(
               { user: "yenvt", pwd: "123456", roles: [ { role: "readWrite", db: "test" } ]
               }
)

Tạo tài khoản quyền cao nhất Root

Với người dùng có role là root sẽ có tất cả đặc quyền trên hệ thống.

mongo
>use admin
> db.createUser(
    {
      user: "vnsys",
      pwd: "P@ssw0rd",
      roles: [
        {
          role: "root",
          db: "admin"
        }
      ]    
    }
)
Successfully added user: {
 "user" : "vnsys",
 "roles" : [
 {
 "role" : "root",
 "db" : "admin"
 }
 ]
}
>

Tài khoản có quyền backup/restore

> db.createUser(
   {
     user: "backupUser",
     pwd: "123456",
     roles: [ { role: "backup", db: "admin" },
              { role: "restore", db: "admin" } ]
   }
 )

 2.2 Đăng nhập hệ thống mongodb

a. Login mongodb mà không có mật khẩu

$mongo

>

b. Login với xác thực tài khoản người dùng

cú pháp:

mongo -u <username> -p <password> --authenticationDatabase <dbname>

ví dụ:

mongo -u keepwalking -p P@ssw0rd --authenticationDatabase admin

2.3. Truy cập database và collection

a. Tạo database và collection
Cú pháp tạo database:
use DATABASE_NAME
Mặc định khi tạo xong chưa show ra được db vừa tạo. Để thấy db đó, cần có dữ liệu đầu vào nó.
Cú pháp tạo collection:
db.createCollection("collectionName");
b. Truy cập database và collections
#show all databases
>show dbs;
#hoặc 
>show databases;
admin 0.000GB
cms_apg 0.001GB
dangky 0.002GB
local 0.229GB
register 0.176GB

#Truy cập database
>use cms_apg;
#Show db đang làm việc
>db;
cms_apg

#show collections
>show collections;
access_tk
ads_click
banners
blacklist
...
#Truy cập collection
> db.access_tk
db.access_tk
> db.access_tk.find();
{ "_id" : ObjectId("59d30dbff1ca3d401a000035"), "msisdn" : "", "token" : "d48f36038760ef209b28d5c3ed198de7" }
> 
c. Insert document trong collection
Chúng ta có thể insert với từng document hoặc nhiều documents đồng thời
#Insert với từng document
db.<collectionName>.insert({field1: "value", field2: "value"})
#Insert với nhiều documents
db.<collectionName>.insert([{field1: "value1"}, {field1: "value2"}])
db.<collectionName>.insertMany([{field1: "value1"}, {field1: "value2"}])
Cập nhật document (alter)
Với document đã có, chúng ta có thể sửa đổi nội dung hoặc thêm mới trường vào nó
……….

III. Quản trị hệ thống MongoDB

3.1. Backup mongo databases

Sử dụng “mongodump” export ra các binary file sẽ có độ tin tưởng hơn “mongoexport”

mongodump --host localhost:27017 -u backupUser -p P@ssw0rd --authenticationDatabase "admin" -o /backup/

3.2 .  Restore database

Sử dụng mongorestore để restore database

Syntax:  mongorestore --host hostname --port port_number -d db_name /backup/path/

Thực hiện restore db example

#mongorestore --host 127.0.0.1 --port 27017 -d uclip /backup/example

MongoDB với authentication thì syntax:

Syntax:  mongorestore --host hostname --port port_number -u user_name -p pass_word --authenticationDatabase admin -d db_name /backup/path/
mongorestore --host 127.0.0.1 --port 27017 -u keepwalking -p P@ssw0rd --authenticationDatabase admin -d uclip /backup/example
3.3. Cache MongoDB

MongoDB sử dụng một lượng RAM để cache dữ liệu. Từ phiên bản MongoDB-3.4 thì lượng RAM mặc định sử dụng là: 50% of (RAM – 1 GB) hoặc tối thiếu là 256 MB

  • Thống kê kích thước cache của MongoDB
db.serverStatus().wiredTiger.cache

xem dòng: “maximum bytes configured” : xxxxx

ví dụ máy có lượng RAM là “3881484” thì nó xuất thông tin như sau:

“maximum bytes configured” : 1450180608

  • Thay đổi kích thước cache tạm thời

Được sử dụng khi cần thay đổi tạm thời lượng cache cho MongoDB mà không restart, tất nhiên khi khởi động lại thì thiết lập này sẽ mất

db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig": "cache_size=xxG"})
  • Cố định kích thước cache cho MongoDB
wiredTiger:
   engineConfig:
      cacheSizeGB: xx

3.4. Quản trị MongoDB

#Get the collection statistics 
db.<collectionName>.stats()
db.printCollectionStats()
#Latency statistics for read, writes operations including average 
#time taken for reads, writes and related umber of operations performed
db.<collectionName>.latencyStats()
#Get collection size for data and indexes
db.<collectionName>.dataSize()
db.<collectionName>.storageSize()
db.<collectionName>.totalSize()
db.<collectionName>.totalIndexSize()

3.5. Monitoring MongoDB

Sử dụng một số tiện ích sau:

$mongostat

$mongotop

Advertisements
Bình luận
  1. […] Trong bài trước nói về begin MongoDB và triển khai MongoDB với 01 member. Do đó có thể tham khảo cài đặt và sử dụng các thao tác cơ bản trên MongoDB 3 tại:  Cài đặt và các thao tác cơ bản MongoDB 3 […]

    Số lượt thích

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s