Open mangreen opened 9 years ago
$ mongodump -u analytics -p 67890 -d log $ mongodump -u dashboard -p 67890 -d dash
至dump所在位置 $ mongorestore
安裝 PIP http://blog.longwin.com.tw/2014/08/python-setup-pip-package-2014/
$ sudo apt-get install python-pip
安裝dex https://github.com/mongolab/dex
$ sudo pip install dex
執行
$ dex -f /var/log/mongodb/mongodb.log mongodb://myUser:myPass@myHost:12345/myDb
產生建立index建議格式如下
{ 'runStats': { 'linesRecommended': 74, 'linesProcessed': 144, 'linesPassed': 57825 }, 'results': [ { 'queryMask': '{"$query":{"_id":"<val>","campaign_id":"<val>","createdAt":"<val>","device":"<val>","ip":"<val>"}}', 'namespace': 'analytics-log.postback', 'recommendation': { 'index': '{"campaign_id": 1, "device": 1, "ip": 1, "createdAt": 1, "_id": 1}', 'namespace': 'analytics-log.postback', 'shellCommand': 'db["postback"].ensureIndex({"campaign_id": 1, "device": 1, "ip": 1, "createdAt": 1, "_id": 1}, {"background": true})' }, 'details': { 'count': 53, 'totalTimeMillis': 274285, 'avgTimeMillis': 5175 } } ] }
進入mongo db執行其中的'shellCommand'
http://blog.toright.com/posts/4508/mongodb-replica-set-%E9%AB%98%E5%8F%AF%E7%94%A8%E6%80%A7%E6%9E%B6%E6%A7%8B%E6%90%AD%E5%BB%BA.html http://tcrct.iteye.com/blog/2108099 設定所有的replSetName同樣的名稱
net: bindIp: "0.0.0.0" replication: replSetName: prod-rs0 storage: dbPath: /var/lib/mongodb engine: wiredTiger systemLog: destination: file logAppend: true path: /var/log/mongodb/mongodb.log
$vim /etc/mongod.conf 修改#security為
security: authorization: enabled
http://ls-la.me/2015/07/29/mongo-04/
關閉auth配置(默認就是這樣),打開mongod服務,並在本機(即localhost)使用mongo連接到數據庫:
// 超管,管理用戶,role是userAdminAnyDatabase。需要注意的是,master只能管理用戶,沒有查詢數據權限。 use admin; db.createUser({ user: "master", // 這個名字可以隨便取 pwd: "testpw", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); // 系統管理,role是root。這個權限很牛,跟linux的root一樣牛,除了system系統相關的集合,其他都能任意讀寫。 // root可以在一開始創建,也可以被master創建。 // master就相當於可以任免CEO的人事部經理,但也只是一個人事部經理。 db.createUser({ user: 'root', // 這個名字可以隨便取 pwd: 'testpw', roles: [ { role: 'root', db: 'admin' } ] });
# 新建一個role db.createRole({ role: 'rolename', privileges: [ { resource: { db: 'articles', collection: 'magazine' }, # 能精確控制到集合 actions: ['find', 'update', 'insert', 'remove'] } ], roles: [ # 從這些role中繼承 { role: 'read', db: 'admin'} ] }) # 更新role,參數和新建一樣,更新會完全覆蓋之前記錄 db.upadteRole() db.dropRole(rolename) # 刪除一個role db.dropAllRoles() # 刪除當前db下所有role # 給role添加操作 db.grantPrivilegesToRole(rolename, [{ resource: {db: 'comments'}, actions: ['read'] }]) # 給role取消操作 revokePrivilegesFromRole(rolename, [{ resource: {db: 'comments'}, actions: ['read'] }]) db.grantRolesToRole(rolename, (array)roles) # 合併role,也可以理解為繼承,把多個role的職責歸於一身 db.revokeRolesFromRole(rolename, (array)roles) # 與上一條相反,移除另一個role所擁有的權限 db.getRole(rolename) # 查看指定role權限 db.getRoles() # 查看當前db所有自定義role的權限
https://sheharyar.me/blog/regular-mongo-backups-using-cron/
建立 /home/username/bin/mongo_backup.sh
#!/bin/bash MONGO_DATABASE="your_db_name" APP_NAME="your_app_name" MONGO_HOST="127.0.0.1" MONGO_PORT="27017" MONGO_USERNAME="" MONGO_PASSWORD="" TIMESTAMP=`date +%F-%H%M` MONGODUMP_PATH="/usr/bin/mongodump" BACKUPS_DIR="/home/username/backups/$APP_NAME" BACKUP_NAME="$APP_NAME-$TIMESTAMP" # mongo admin --eval "printjson(db.fsyncLock())" # $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE -u $MONGO_USERNAME -p $MONGO_PASSWORD $MONGODUMP_PATH -d $MONGO_DATABASE # mongo admin --eval "printjson(db.fsyncUnlock())" mkdir -p $BACKUPS_DIR mv dump $BACKUP_NAME tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME rm -rf $BACKUP_NAME
讓mongo_backup.sh變成可執行
$ chmod +x mongo_backup.sh $ bash mongo_backup.sh
編輯 crontab
$ sudo su $ crontab -e
00 00 * * * /bin/bash /home/username/bin/mongo_backup.sh
http://www.runoob.com/mongodb/mongodb-connections.html
#連接本地數據庫服務器,端口是默認的。 mongodb://localhost #使用用戶名fred,密碼foobar登錄localhost的admin數據庫。 mongodb://fred:foobar@localhost #使用用戶名fred,密碼foobar登錄localhost的baz數據庫。 mongodb://fred:foobar@localhost/baz #連接replica pair, 服務器1為example1.com服務器2為example2。 mongodb://example1.com:27017,example2.com:27017 #連接replica set 三台服務器(端口27017, 27018, 和27019): mongodb://localhost,localhost:27018,localhost:27019 #連接replica set 三台服務器, 寫入操作應用在主服務器並且分佈查詢到從服務器。 mongodb://host1,host2,host3/?slaveOk=true #直接連接第一個服務器,無論是replica set一部分或者主服務器或者從服務器。 mongodb://host1,host2,host3/?connect=direct;slaveOk=true #當你的連接服務器有優先級,還需要列出所有服務器,你可以使用上述連接方式。 #安全模式連接到localhost: mongodb://localhost/?safe=true #以安全模式連接到replica set,並且等待至少兩個複制服務器成功寫入,超時時間設置為2秒。 mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
http://tsl.logdown.com/posts/2014/04/28/probe-into-mongodb-sharding http://tsl.logdown.com/posts/2014/04/29/mongodb-sharding-set-b
#1. 開啓config server mongod --configsvr --dbpath <path> --port 27017 #2. 開啟query router mongos --configdb IP{1,3} #3. 將shard加入叢集 # 在router中輸入 sh.addShard([IP|HOST NAME]:27017) #4. partition database # 新建的collection會放到不同的shard上,但單個collection還是整體放在一個shard上 db.runCommand({enablesharding : "db_name"}); #5. partition collection db.runCommand({shardcollection :"db_name.collection_name", key : {_id : 'hashed'}}); #最後可以用db.printShardingStatus指令來確認分散的狀況
1. 準備private ssh key
2. 連線到 a.vm5apis.com
3.
4. 下載 dump
5. 開啟mongodb
6. 建立index
安裝 PIP http://blog.longwin.com.tw/2014/08/python-setup-pip-package-2014/
安裝dex https://github.com/mongolab/dex
執行
產生建立index建議格式如下
進入mongo db執行其中的'shellCommand'
7. 設定replication
http://blog.toright.com/posts/4508/mongodb-replica-set-%E9%AB%98%E5%8F%AF%E7%94%A8%E6%80%A7%E6%9E%B6%E6%A7%8B%E6%90%AD%E5%BB%BA.html http://tcrct.iteye.com/blog/2108099 設定所有的replSetName同樣的名稱
8. 用戶認證
$vim /etc/mongod.conf 修改#security為
http://ls-la.me/2015/07/29/mongo-04/
管理員
關閉auth配置(默認就是這樣),打開mongod服務,並在本機(即localhost)使用mongo連接到數據庫:
角色
9. 定時備份
https://sheharyar.me/blog/regular-mongo-backups-using-cron/
建立 /home/username/bin/mongo_backup.sh
讓mongo_backup.sh變成可執行
編輯 crontab
10.連接實例
http://www.runoob.com/mongodb/mongodb-connections.html
11. sharding設定
http://tsl.logdown.com/posts/2014/04/28/probe-into-mongodb-sharding http://tsl.logdown.com/posts/2014/04/29/mongodb-sharding-set-b