Mongo DB란?
간단한 정의
- NoSQL 데이터베이스로, 기존 RDBMS의 SQL을 사용하는 방식이 아님
- 테이블 간 관계가 RDBMS와 다르며, ACID 방식으로 작동하지 않음
Local 환경의 mount된 disk를 활용한 sharding 구축
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| ### 구성은 2개의 샤드 서버, 2개의 config 서버(1개는 replica)
###
### Shard server
mongod --shardsvr --dbpath {path} --port 30001
mongod --shardsvr --dbpath {path} --port 30002
### Config server
mongod --configsvr --replSet {replica name} --dbpath {path/config} --port 50001
mongod --configsvr --replSet {replica name} --dbpath {path/config} --port 50002
### Init mongos
mongos --configdb {replica name}/localhost:50001,localhost:50002 --port 27017
### Add sharding server
### mongos 접속 후 입력
mongos> sh.addShard("localhost:30001");
mongos> sh.addShard("localhost:30002");
mongos> sh.addShard("localhost:30003");
### Check sharding server's status
mongos> sh.status()
### Enable database and collection at sharding server
mongos> sh.enableSharding("{database}")
mongos> sh.shardCollection("{database}.{collection}", {_id: "hashed"})
|
MongoDB Service가 system boot 시 자동으로 시작하도록 변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| systemctl enable mongod.service
### or
systemctl enable mongodb.service
### 위의 두 개가 안될 경우
sudo vi /etc/systemd/system/mongodb.service
### Edit service file
[Unit]
Description=MongoDB Database Service
Wants=network.target
After=network.target
[Service]
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=mongodb
Group=mongodb
StandardOutput=syslog
StandardError=syslog
### Restart mongod
sudo service mongod start|stop|restart
|
DB path 변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| ### Stop mongoDB
Sudo service mongod stop
### Copy all data to new disk with permission
Sudo cp -Rp mongodb /new/disk/mongodb/
### Add owner to new disk
Sudo chown mongodb:mongodb /new/disk/mongodb/
### Edit config file
sudo vi /etc/mongod.conf
---
### 아래 부분 수정
dbpath: /new/disk/mongodb
---
### Restart mongoDB
Sudo service mongod start
### 기동이 안될 경우
### 1. acl이 설정되어 있는지 확인(권한 체크)
### 2. rm /new/disk/mongodb/mongod.lock 해보기
|
MongoDB client 명령어
Query 구조는 기본적으로 Javascript 문법을 따른다
1
2
3
4
5
6
7
| // 특정 Collection 검색 및 삭제(정규식 사용)
regExp = /test/;
db.getCollectionNames().filter(function(name){
return name.match(regExp)
}).forEach(function(name){
db.getCollection(name).drop()
});
|
참조 링크
How to install mongodb on debian 9 - 1
How to install mongodb on debian 9 - 2
MongoDB 샤딩 적용하기
Sharding methods
데이터 위치 변경하기
Database/Collection/Document 생성 및 제거