Mongo DB

453

Mongo DB is an No SQL, opensource db, written in C++

  1. Install

 

sudo apt-get install -y mongodb-org

Một số chú ý:

  • Mongodb từ 3.0 hỗ trợ hai loại storage engine: NMAPV1 và WiredTiger. Mặc định, Mongo vẫn dùng NMAPV1. MongoDB sẽ không start được nếu files trong db được tạo ra bởi storage engine khác với tham số –storageEngine. Nếu bạn có ý định move data từ database này sang database khác thì cần chú ý điều này. Công sức move data sẽ đổ sông đổ bể nếu data đang có trên database mới sử dụng storage engine khác với data được move sang.
  • Sử dụng phiên bản 64 bits của mongodb vì nó ổn định hơn. Bản 32 bits không hỗ trợ WiredTiger và bị giới hạn dung lượng lưu trữ chỉ có 2GB.
  • Chạy mongo trong trust network. Mặc định mongodb không enable authorization và authentication.
  • Sử dụng ổ SSD. MongoDB sử dụng NMAPV1 rất thích hợp với SSD
  • Disable NUMA. Về nguyên nhân NUMA ảnh hưởng đến mongodb tôi cũng chưa rõ nhưng mongodb khuyến cáo NUMA cần được disable. Bạn có thể disable NUMA trong BIOS hoặc thực hiện hai thao tác sau:

    và khởi chạy mongod dùng numactl

    Thay vì khởi chạy mongod với câu lệnh dài dòng như trên, bạn có thể dùng service script. Trong service script của mongod đã hỗ trợ chạy bằng numactl rồi.
  • Sử dụng RAID10. Tránh dùng RAID0.

 

service mongod status

https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-14-04

Backup và restore

Có ba cách để backup data trong mongodb:

  • Cách 1: Copying data files. Có hai hướng tiếp cận cụ thể: Hoặc là dùng filesystem snapshot nếu storage hỗ trợ hoặc là copy trực tiếp các file dùng rsync, scp. Trên linux, LVM có thể được sử dụng để tạo snapshot.
  • Cách 2: Dùng mongodump
  • Cách 3: Dùng dịch vụ MongoDB Management Service

https://www.digitalocean.com/community/tutorials/how-to-create-and-use-mongodb-backups-on-ubuntu-14-04

2. Shell command: Help command

Sample 1:

Sample 2:

 

  1. Replica set: Primary DB + Secondary DB + Arbiter DB -> Prevent single server crashing
  2. How to Create and Use MongoDB Backups on Ubuntu 14.04

db.stats().dataSize;

mongodump -d myDatabase -o ~/backups/first_backup

mongorestore ~/backups/first_backup/

https://www.digitalocean.com/community/tutorials/how-to-back-up-restore-and-migrate-a-mongodb-database-on-ubuntu-14-04

As a general rule, you should make regular backups, such as on a daily basis, and preferably during a time when the server is least loaded. Thus, you can set the mongodump command as a cron job so that it’s run regularly, e.g. every day at 03:03 AM. To accomplish this open crontab, cron’s editor like this:

  • sudo crontab -e

Note that when you run sudo crontab you will be editing the cron jobs for the root user. This is recommended because if you set the crons for your user, they might not be executed properly, especially if your sudo profile requires password verification.

Inside the crontab prompt insert the following mongodump command:

Crontab window

In the above command we are omitting the --db argument on purpose because typically you will want to have all of your databases backed up.

3. Scaling: 

MongoDB is a NoSQL database with great features like replication and sharding built in. This allows you to scale your database to as many servers as you would like by distributing content among them.

How To Set Up a Scalable MongoDB Database

4. Cluster:

How To Create a Sharded Cluster in MongoDB Using an Ubuntu 12.04 VPS

MongoDB Sharding Topology

Sharding is implemented through three separate components. Each part performs a specific function:

  • Config Server: Each production sharding implementation must contain exactly three configuration servers. This is to ensure redundancy and high availability.

Config servers are used to store the metadata that links requested data with the shard that contains it. It organizes the data so that information can be retrieved reliably and consistently.

  • Query Routers: The query routers are the machines that your application actually connects to. These machines are responsible for communicating to the config servers to figure out where the requested data is stored. It then accesses and returns the data from the appropriate shard(s).

Each query router runs the “mongos” command.

  • Shard Servers: Shards are responsible for the actual data storage operations. In production environments, a single shard is usually composed of a replica set instead of a single machine. This is to ensure that data will still be accessible in the event that a primary shard server goes offline.

NO COMMENTS