{"id":83,"date":"2021-04-13T12:46:04","date_gmt":"2021-04-13T04:46:04","guid":{"rendered":"http:\/\/daishen.ltd\/?p=83"},"modified":"2021-07-26T20:47:06","modified_gmt":"2021-07-26T12:47:06","slug":"nosql_mongodb","status":"publish","type":"post","link":"https:\/\/www.daishen.ltd\/?p=83","title":{"rendered":"NoSQL_MongoDB"},"content":{"rendered":"<p><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width initial-scale=1\"><br \/>\n<title>NoSQL_MongoDB<\/title><\/p>\n<h1>\u7b2c\u4e00\u7ae0\uff1a\u903b\u8f91\u7ed3\u6784<\/h1>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-dart\" lang=\"dart\">Mongodb \u903b\u8f91\u7ed3\u6784                         MySQL\u903b\u8f91\u7ed3\u6784\n\u5e93database                                 \u5e93\n\u96c6\u5408\uff08collection\uff09                          \u8868\n\u6587\u6863\uff08document\uff09                            \u6570\u636e\u884c\n<\/code><\/pre>\n<h1>\u7b2c\u4e8c\u7ae0\uff1a\u5b89\u88c5\u90e8\u7f72<\/h1>\n<h2>1\u3001\u7cfb\u7edf\u51c6\u5907<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">\uff081\uff09redhat\u6216centos6.2\u4ee5\u4e0a\u7cfb\u7edf\n\uff082\uff09\u7cfb\u7edf\u5f00\u53d1\u5305\u5b8c\u6574\n\uff083\uff09ip\u5730\u5740\u548chosts\u6587\u4ef6\u89e3\u6790\u6b63\u5e38\n\uff084\uff09iptables\u9632\u706b\u5899&amp;SElinux\u5173\u95ed\n\uff085\uff09\u5173\u95ed\u5927\u9875\u5185\u5b58\u673a\u5236\n########################################################################\nroot\u7528\u6237\u4e0b\n\u5728vim \/etc\/rc.local\u6700\u540e\u6dfb\u52a0\u5982\u4e0b\u4ee3\u7801\nif test -f \/sys\/kernel\/mm\/transparent_hugepage\/enabled; then\n  echo never &gt; \/sys\/kernel\/mm\/transparent_hugepage\/enabled\nfi\nif test -f \/sys\/kernel\/mm\/transparent_hugepage\/defrag; then\n   echo never &gt; \/sys\/kernel\/mm\/transparent_hugepage\/defrag\nfi\n\n\u4e34\u65f6\u5173\u95ed       \ncat  \/sys\/kernel\/mm\/transparent_hugepage\/enabled        \ncat \/sys\/kernel\/mm\/transparent_hugepage\/defrag     \n<\/code><\/pre>\n<h2>2\u3001mongodb\u5b89\u88c5<\/h2>\n<h2>\u521b\u5efa\u6240\u9700\u7528\u6237\u548c\u7ec4<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">useradd mongod\npasswd mongod\n<\/code><\/pre>\n<h2>\u521b\u5efamongodb\u6240\u9700\u76ee\u5f55\u7ed3\u6784<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mkdir -p \/mongodb\/conf\nmkdir -p \/mongodb\/log\nmkdir -p \/mongodb\/data\n<\/code><\/pre>\n<h2>\u4e0a\u4f20\u5e76\u89e3\u538b\u8f6f\u4ef6\u5230\u6307\u5b9a\u4f4d\u7f6e<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-kotlin\" lang=\"kotlin\">[root@db01 data]# cd   \/data\n[root@db01 data]# tar xf mongodb-linux-x86_64-rhel70-3.6.12.tgz \n[root@db01 data]#  cp -r \/data\/mongodb-linux-x86_64-rhel70-3.6.12\/bin\/ \/mongodb\n<\/code><\/pre>\n<h2>\u8bbe\u7f6e\u76ee\u5f55\u7ed3\u6784\u6743\u9650<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">chown -R mongod:mongod \/mongodb\n<\/code><\/pre>\n<h2>\u8bbe\u7f6e\u7528\u6237\u73af\u5883\u53d8\u91cf<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">su - mongod\n\nvim .bash_profile\n\nexport PATH=\/mongodb\/bin:$PATH\n\nsource .bash_profile\n<\/code><\/pre>\n<h2>\u542f\u52a8mongodb<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">mongod --dbpath=\/mongodb\/data --logpath=\/mongodb\/log\/mongodb.log --port=27017 --logappend --fork \n<\/code><\/pre>\n<h2>\u767b\u5f55mongodb<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">[mongod@server2 ~]$ mongo\n<\/code><\/pre>\n<h2>\u4f7f\u7528\u914d\u7f6e\u6587\u4ef6<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-tsx\" lang=\"tsx\">YAML\u6a21\u5f0f\n\nNOTE\uff1a\nYAML does not support tab characters for indentation: use spaces instead.\n\n--\u7cfb\u7edf\u65e5\u5fd7\u6709\u5173  \nsystemLog:\n   destination: file        \n   path: \"\/mongodb\/log\/mongodb.log\"    --\u65e5\u5fd7\u4f4d\u7f6e\n   logAppend: true                     --\u65e5\u5fd7\u4ee5\u8ffd\u52a0\u6a21\u5f0f\u8bb0\u5f55\n  \n--\u6570\u636e\u5b58\u50a8\u6709\u5173   \nstorage:\n   journal:\n      enabled: true\n   dbPath: \"\/mongodb\/data\"            --\u6570\u636e\u8def\u5f84\u7684\u4f4d\u7f6e\n\n-- \u8fdb\u7a0b\u63a7\u5236  \nprocessManagement:\n   fork: true                         --\u540e\u53f0\u5b88\u62a4\u8fdb\u7a0b\n   pidFilePath: &lt;string&gt;              --pid\u6587\u4ef6\u7684\u4f4d\u7f6e\uff0c\u4e00\u822c\u4e0d\u7528\u914d\u7f6e\uff0c\u53ef\u4ee5\u53bb\u6389\u8fd9\u884c\uff0c\u81ea\u52a8\u751f\u6210\u5230data\u4e2d\n    \n--\u7f51\u7edc\u914d\u7f6e\u6709\u5173   \nnet:            \n   bindIp: &lt;ip&gt;                       -- \u76d1\u542c\u5730\u5740\n   port: &lt;port&gt;                       -- \u7aef\u53e3\u53f7,\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u7aef\u53e3\u53f7\uff0c\u662f27017\n   \n-- \u5b89\u5168\u9a8c\u8bc1\u6709\u5173\u914d\u7f6e      \nsecurity:\n  authorization: enabled              --\u662f\u5426\u6253\u5f00\u7528\u6237\u540d\u5bc6\u7801\u9a8c\u8bc1\n  \n------------------\u4ee5\u4e0b\u662f\u590d\u5236\u96c6\u4e0e\u5206\u7247\u96c6\u7fa4\u6709\u5173----------------------  \n\nreplication:\n oplogSizeMB: &lt;NUM&gt;\n replSetName: \"&lt;REPSETNAME&gt;\"\n secondaryIndexPrefetch: \"all\"\n \nsharding:\n   clusterRole: &lt;string&gt;\n   archiveMovedChunks: &lt;boolean&gt;\n      \n---for mongos only\nreplication:\n   localPingThresholdMs: &lt;int&gt;\n\nsharding:\n   configDB: &lt;string&gt;\n---\n++++++++++++++++++++++\nYAML\u4f8b\u5b50\ncat &gt;  \/mongodb\/conf\/mongo.conf &lt;&lt;EOF\nsystemLog:\n   destination: file\n   path: \"\/mongodb\/log\/mongodb.log\"\n   logAppend: true\nstorage:\n   journal:\n      enabled: true\n   dbPath: \"\/mongodb\/data\/\"\nprocessManagement:\n   fork: true\nnet:\n   port: 27017\n   bindIp: 10.0.0.51,127.0.0.1\nEOF\nmongod -f \/mongodb\/conf\/mongo.conf --shutdown\nmongod -f \/mongodb\/conf\/mongo.conf   \n<\/code><\/pre>\n<h2>mongodb\u7684\u5173\u95ed\u65b9\u5f0f<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">mongod -f mongo.conf  --shutdown\n<\/code><\/pre>\n<h2>mongodb \u4f7f\u7528systemd\u7ba1\u7406<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">[root@db01 ~]# cat &gt; \/etc\/systemd\/system\/mongod.service &lt;&lt;EOF\n[Unit]\nDescription=mongodb \nAfter=network.target remote-fs.target nss-lookup.target\n[Service]\nUser=mongod\nType=forking\nExecStart=\/mongodb\/bin\/mongod --config \/mongodb\/conf\/mongo.conf\nExecReload=\/bin\/kill -s HUP $MAINPID\nExecStop=\/mongodb\/bin\/mongod --config \/mongodb\/conf\/mongo.conf --shutdown\nPrivateTmp=true  \n[Install]\nWantedBy=multi-user.target\nEOF\n\n[root@db01 ~]# systemctl restart mongod\n[root@db01 ~]# systemctl stop mongod\n[root@db01 ~]# systemctl start mongod\n<\/code><\/pre>\n<h1>3\u3001mongodb\u5e38\u7528\u57fa\u672c\u64cd\u4f5c<\/h1>\n<h2>3.0  mongodb \u9ed8\u8ba4\u5b58\u5728\u7684\u5e93<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-dart\" lang=\"dart\">test:\u767b\u5f55\u65f6\u9ed8\u8ba4\u5b58\u5728\u7684\u5e93\n\u7ba1\u7406MongoDB\u6709\u5173\u7684\u7cfb\u7edf\u5e93\nadmin\u5e93:\u7cfb\u7edf\u9884\u7559\u5e93,MongoDB\u7cfb\u7edf\u7ba1\u7406\u5e93\nlocal\u5e93:\u672c\u5730\u9884\u7559\u5e93,\u5b58\u50a8\u5173\u952e\u65e5\u5fd7\nconfig\u5e93:MongoDB\u914d\u7f6e\u4fe1\u606f\u5e93\n\nshow databases\/show dbs\nshow tables\/show collections\nuse admin \ndb\/select database()\n<\/code><\/pre>\n<h2>3.1 \u547d\u4ee4\u79cd\u7c7b<\/h2>\n<h2>db \u5bf9\u8c61\u76f8\u5173\u547d\u4ee4<\/h2>\n<p>db\u7ea7\u522b\u547d\u4ee4<\/p>\n<pre><code class=\"language-css\" lang=\"css\">db\t\t\t\t\t\u5f53\u524d\u6240\u5728\u7684\u5e93\ndb.[TAB]\t\t\t\u76f8\u5f53\u4e8eLinux\u4e2d\u7684tab\ndb.help()\t\t\tdb\u7ea7\u522b\u7684\u547d\u4ee4\u4f7f\u7528\u5e2e\u52a9\ndb.oldboy.[TAB]\ndb.oldboy.help()\n<\/code><\/pre>\n<p>collection\u7ea7\u522b\u64cd\u4f5c<\/p>\n<pre><code>db.collection_name.XXX\n<\/code><\/pre>\n<p>document\u7ea7\u522b\u64cd\u4f5c<\/p>\n<pre><code>db.t1.insert()\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>rs \u590d\u5236\u96c6\u6709\u5173(replication set):<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">rs.[TAB][TAB]\nrs.help()\n<\/code><\/pre>\n<h2>sh \u5206\u7247\u96c6\u7fa4(sharding cluster)<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">sh.[TAB][TAB]\nsh.help()\n<\/code><\/pre>\n<h2>\u5e2e\u52a9<\/h2>\n<pre><code>help\nKEYWORDS.he1p()\nKEYWORDS.[TAB]\nshow\nuse\ndb.help()\ndb.a.he1p()\nrs.help()\nsh.help()\n<\/code><\/pre>\n<h2>\u5e38\u7528\u64cd\u4f5c<\/h2>\n<pre><code>--\u67e5\u770b\u5f53\u524ddb\u7248\u672c\ntest&gt; db .version()\n\u6216\n[mongod@db01 ~]$ mongo -version\n\n--\u663e\u793a\u5f53\u524d\u6570\u636e\u5e93\ntest&gt; db\n\u6216\n&gt; db .getName()\n\n--\u67e5\u8be2\u6240\u6709\u6570\u636e\u5e93\n&gt; test&gt; show dbs \n\n--\u5207\u6362\u6570\u636e\u5e93\n&gt; use local\nswitched to db local\n\n--\u67e5\u770b\u6240\u6709\u7684collection\nshow tables ;\n\n--\u663e\u793a\u5f53\u524d\u6570\u636e\u5e93\u72b6\u6001\ntest&gt; use 1ocal\nswitched to db local\n\n1ocal&gt; db.stats()\n\n--\u67e5\u770b\u5f53\u524d\u6570\u636e\u5e93\u7684\u8fde\u63a5\u673a\u5668\u5730\u5740\n&gt; db.getMongo()\nconnection to 127.0.0.1\n\u6307\u5b9a\u6570\u636e\u5e93\u8fdb\u884c\u8fde\u63a5\n\u9ed8\u8ba4\u8fde\u63a5\u672c\u673atest\u6570\u636e\u5e93\n\n<\/code><\/pre>\n<h1>odb\u5bf9\u8c61\u64cd\u4f5c<\/h1>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">mongo         mysql\n\u5e93    -----&gt;  \u5e93\n\u96c6\u5408  -----&gt;  \u8868\n\u6587\u6863  -----&gt;  \u6570\u636e\u884c\n<\/code><\/pre>\n<h2>4.1 \u5e93\u7684\u64cd\u4f5c<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">--\u521b\u5efa\u6570\u636e\u5e93:\n\u5f53use\u7684\u65f6\u5019\uff0c\u7cfb\u7edf\u5c31\u4f1a\u81ea\u52a8\u521b\u5efa\u4e00-\u4e2a\u6570\u636e\u5e93\u3002\n\u5982\u679cuse\u4e4b\u540e\u6ca1\u6709\u521b\u5efa\u4efb\u4f55\u96c6\u5408\u3002\n\u7cfb\u7edf\u5c31\u4f1a\u5220\u9664\u8fd9\u4e2a\u6570\u636e\u5e93\u3002\n\u5220\u9664\u6570\u636e\u5e93\n\u5982\u679c\u6ca1\u6709\u9009\u62e9\u4efb\u4f55\u6570\u636e\u5e93\uff0c\u4f1a\u5220\u9664\u9ed8\u8ba4\u7684test\u6570\u636e\u5e93\n\n--\u5220\u9664test\u6570\u636e\u5e93\n&gt; use test\n&gt;db.dropDatabase()   \t\t\t\t\u5220\u5e93\n{ \"dropped\" : \"test\", \"ok\" : 1 }\n<\/code><\/pre>\n<h2>4.2 \u96c6\u5408\u7684\u64cd\u4f5c<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">app&gt; db.createCollection('a')\n{ \"ok\" : 1 }\napp&gt; db.createCollection('b')\n\u65b9\u6cd52\uff1a\u5f53\u63d2\u5165\u4e00\u4e2a\u6587\u6863\u7684\u65f6\u5019\uff0c\u4e00\u4e2a\u96c6\u5408\u5c31\u4f1a\u81ea\u52a8\u521b\u5efa\u3002\n\nuse cuoni\ndb.cuoni.insert({id:\"101\",name:\"zhangsan\",age:\"18\",gender:\"male\"})\ndb.stu.insert({id:101,name:\"zhangsan\",age:20,gender:\"m\"})\nshow tables;\ndb.stu.insert({id:102,name:\"lisi\"})\ndb.stu.insert({a:\"b\",c:\"d\"})\ndb.stu.insert({a:1,c:2})\n    \n\u67e5\u8be2\ndb.cuoni.find()\n\n\u6761\u4ef6\u67e5\u8be2\ndb.cuoni.find({id:\"111\"})\n\n\u4ee5\u6807\u51c6json\u683c\u5f0f\u8f93\u51fa\ndb.cuoni.find().pretty()\n\n\u5220\u9664\u96c6\u5408\napp&gt; use app\nswitched to db app\napp&gt; db.log.drop() \/\/\u5220\u9664\u96c6\u5408\n\n\u91cd\u547d\u540d\u96c6\u5408\n\/\/\u628a1og\u6539\u540d\u4e3a1og1\napp&gt; db . 1og . renameCollection (\"\"1og1\")\n{\"ok\":1}\n\n<\/code><\/pre>\n<h2>4.3 \u6587\u6863\u64cd\u4f5c<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u6279\u91cf\u6570\u636e\u5f55\u5165\uff1a\nfor(i=0;i&lt;10000;i++){db.log.insert({\"uid\":i,\"name\":\"mongodb\",\"age\":6,\"date\":new\nDate()})}\n\n\u67e5\u8be2\u6570\u636e\u884c\u6570\uff1a\n&gt; db.log.count()\n\u5168\u8868\u67e5\u8be2\uff1a\n&gt; db.log.find()\n\u6bcf\u9875\u663e\u793a50\u6761\u8bb0\u5f55\uff1a\n&gt; DBQuery.shellBatchSize=50; \n\u6309\u7167\u6761\u4ef6\u67e5\u8be2\n&gt; db.log.find({uid:999})\n\u4ee5\u6807\u51c6\u7684json\u683c\u5f0f\u663e\u793a\u6570\u636e\n&gt; db.log.find({uid:999}).pretty()\n{\n    \"_id\" : ObjectId(\"5cc516e60d13144c89dead33\"),\n    \"uid\" : 999,\n    \"name\" : \"mongodb\",\n    \"age\" : 6,\n    \"date\" : ISODate(\"2019-04-28T02:58:46.109Z\")\n}\n\n\u5220\u9664\u96c6\u5408\u4e2d\u6240\u6709\u8bb0\u5f55\napp&gt; db.log.remove({})\n<\/code><\/pre>\n<h3>\u67e5\u770b\u96c6\u5408\u5b58\u50a8\u4fe1\u606f<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">app&gt; db.log.totalSize() \/\/\u96c6\u5408\u4e2d\u7d22\u5f15+\u6570\u636e\u538b\u7f29\u5b58\u50a8\u4e4b\u540e\u7684\u5927\u5c0f    \n<\/code><\/pre>\n<h1>5. \u7528\u6237\u53ca\u6743\u9650\u7ba1\u7406<\/h1>\n<h2>5.1 \u6ce8\u610f<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">\u9a8c\u8bc1\u5e93: \u5efa\u7acb\u7528\u6237\u65f6use\u5230\u7684\u5e93\uff0c\u5728\u4f7f\u7528\u7528\u6237\u65f6\uff0c\u8981\u52a0\u4e0a\u9a8c\u8bc1\u5e93\u624d\u80fd\u767b\u9646\u3002\n\n\u5bf9\u4e8e\u7ba1\u7406\u5458\u7528\u6237,\u5fc5\u987b\u5728admin\u4e0b\u521b\u5efa.\n1. \u5efa\u7528\u6237\u65f6,use\u5230\u7684\u5e93,\u5c31\u662f\u6b64\u7528\u6237\u7684\u9a8c\u8bc1\u5e93\n2. \u767b\u5f55\u65f6,\u5fc5\u987b\u660e\u786e\u6307\u5b9a\u9a8c\u8bc1\u5e93\u624d\u80fd\u767b\u5f55\n3. \u901a\u5e38,\u7ba1\u7406\u5458\u7528\u7684\u9a8c\u8bc1\u5e93\u662fadmin,\u666e\u901a\u7528\u6237\u7684\u9a8c\u8bc1\u5e93\u4e00\u822c\u662f\u6240\u7ba1\u7406\u7684\u5e93\u8bbe\u7f6e\u4e3a\u9a8c\u8bc1\u5e93\n4. \u5982\u679c\u76f4\u63a5\u767b\u5f55\u5230\u6570\u636e\u5e93,\u4e0d\u8fdb\u884cuse,\u9ed8\u8ba4\u7684\u9a8c\u8bc1\u5e93\u662ftest,\u4e0d\u662f\u6211\u4eec\u751f\u4ea7\u5efa\u8bae\u7684.\n5. \u4ece3.6 \u7248\u672c\u5f00\u59cb\uff0c\u4e0d\u6dfb\u52a0bindIp\u53c2\u6570\uff0c\u9ed8\u8ba4\u4e0d\u8ba9\u8fdc\u7a0b\u767b\u5f55\uff0c\u53ea\u80fd\u672c\u5730\u7ba1\u7406\u5458\u767b\u5f55\u3002\n<\/code><\/pre>\n<h2>5.2 \u7528\u6237\u521b\u5efa\u8bed\u6cd5<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">use admin \ndb.createUser\n{\n    user: \"&lt;name&gt;\",\n    pwd: \"&lt;cleartext password&gt;\",\n    roles: [\n       { role: \"&lt;role&gt;\",\n     db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ...\n    ]\n}\n\n\u57fa\u672c\u8bed\u6cd5\u8bf4\u660e\uff1a\nuser:\u7528\u6237\u540d\npwd:\u5bc6\u7801\nroles:\n    role:\u89d2\u8272\u540d\n    db:\u4f5c\u7528\u5bf9\u8c61 \nrole\uff1aroot, readWrite,read   \n\u9a8c\u8bc1\u6570\u636e\u5e93\uff1a\nmongo -u oldboy -p 123 10.0.0.53\/oldboy\n<\/code><\/pre>\n<h2>5.3  \u7528\u6237\u7ba1\u7406\u4f8b\u5b50<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">\u521b\u5efa\u8d85\u7ea7\u7ba1\u7406\u5458\uff1a\u7ba1\u7406\u6240\u6709\u6570\u636e\u5e93\uff08\u5fc5\u987buse admin\u518d\u53bb\u521b\u5efa\uff09\n$ mongo\nuse admin\ndb.createUser(\n{\n    user: \"root\",\n    pwd: \"123\",\n    roles: [ { role: \"root\", db: \"admin\" } ]\n}\n)\n<\/code><\/pre>\n<h2>\u9a8c\u8bc1\u7528\u6237<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">db.auth('root','123')\n<\/code><\/pre>\n<h2>\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u52a0\u5165\u4ee5\u4e0b\u914d\u7f6e<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">vim \/mongodb\/conf\/mongo.conf \n\nsecurity:\n  authorization: enabled\n<\/code><\/pre>\n<h2>\u91cd\u542fmongodb<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">mongod -f \/mongodb\/conf\/mongo.conf --shutdown \nmongod -f \/mongodb\/conf\/mongo.conf \n<\/code><\/pre>\n<h2>\u767b\u5f55\u9a8c\u8bc1<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">mongo -uroot -p123  admin\nmongo -uroot -p123  10.0.0.53\/admin\n\n\u6216\u8005\nmongo\nuse admin\ndb.auth('root','123')\n<\/code><\/pre>\n<h2>\u67e5\u770b\u7528\u6237:<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">use admin\ndb.system.users.find().pretty()\n<\/code><\/pre>\n<h2>\u521b\u5efa\u5e94\u7528\u7528\u6237<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">use oldboy\ndb.createUser(\n    {\n        user: \"app01\",\n        pwd: \"app01\",\n        roles: [ { role: \"readWrite\" , db: \"oldboy\" } ]\n    }\n)\n\nmongo  -uapp01 -papp01 app\n<\/code><\/pre>\n<h2>\u67e5\u8be2mongodb\u4e2d\u7684\u7528\u6237\u4fe1\u606f<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-swift\" lang=\"swift\">mongo -uroot -p123 10.0.0.53\/admin\ndb.system.users.find().pretty()\n<\/code><\/pre>\n<h2>5.4 \u5220\u9664\u7528\u6237\uff08root\u8eab\u4efd\u767b\u5f55\uff0cuse\u5230\u9a8c\u8bc1\u5e93\uff09<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">\u5220\u9664\u7528\u6237\ndb.createUser({user: \"app02\",pwd: \"app02\",roles: [ { role: \"readWrite\" , db: \"oldboy1\" } ]})\nmongo -uroot -p123 10.0.0.53\/admin\nuse oldboy1\ndb.dropUser(\"app02\")\n<\/code><\/pre>\n<h2>5.5 \u7528\u6237\u7ba1\u7406\u6ce8\u610f\u4e8b\u9879<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">1. \u5efa\u7528\u6237\u8981\u6709\u9a8c\u8bc1\u5e93\uff0c\u7ba1\u7406\u5458admin\uff0c\u666e\u901a\u7528\u6237\u662f\u8981\u7ba1\u7406\u7684\u5e93\n2. \u767b\u5f55\u65f6\uff0c\u6ce8\u610f\u9a8c\u8bc1\u5e93\nmongo -uapp01 -papp01 10.0.0.51:27017\/oldboy\n3. \u91cd\u70b9\u53c2\u6570\nnet:\n   port: 27017\n   bindIp: 10.0.0.51,127.0.0.1\nsecurity:\n   authorization: enabled\n<\/code><\/pre>\n<h1>6. MongoDB\u590d\u5236\u96c6RS\uff08ReplicationSet\uff09<\/h1>\n<h2>6.1 \u57fa\u672c\u539f\u7406<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">\u57fa\u672c\u6784\u6210\u662f1\u4e3b2\u4ece\u7684\u7ed3\u6784\uff0c\u81ea\u5e26\u4e92\u76f8\u76d1\u63a7\u6295\u7968\u673a\u5236\uff08Raft\uff08MongoDB\uff09  Paxos\uff08mysql MGR \u7528\u7684\u662f\u53d8\u79cd\uff09\uff09\n\u5982\u679c\u53d1\u751f\u4e3b\u5e93\u5b95\u673a\uff0c\u590d\u5236\u96c6\u5185\u90e8\u4f1a\u8fdb\u884c\u6295\u7968\u9009\u4e3e\uff0c\u9009\u62e9\u4e00\u4e2a\u65b0\u7684\u4e3b\u5e93\u66ff\u4ee3\u539f\u6709\u4e3b\u5e93\u5bf9\u5916\u63d0\u4f9b\u670d\u52a1\u3002\u540c\u65f6\u590d\u5236\u96c6\u4f1a\u81ea\u52a8\u901a\u77e5\n\u5ba2\u6237\u7aef\u7a0b\u5e8f\uff0c\u4e3b\u5e93\u5df2\u7ecf\u53d1\u751f\u5207\u6362\u4e86\u3002\u5e94\u7528\u5c31\u4f1a\u8fde\u63a5\u5230\u65b0\u7684\u4e3b\u5e93\u3002\n<\/code><\/pre>\n<h2>6.2  Replication Set\u914d\u7f6e\u8fc7\u7a0b\u8be6\u89e3<\/h2>\n<h3>6.2.1  \u89c4\u5212<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">\u4e09\u4e2a\u4ee5\u4e0a\u7684mongodb\u8282\u70b9\uff08\u6216\u591a\u5b9e\u4f8b\uff09\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"D:\\BaiduNetdiskDownload\\\u6570\u636e\u5e93DBA\\mongoDB\u590d\u5236\u96c61.png\" referrerpolicy=\"no-referrer\" alt=\"image-20201211144415257\"><\/p>\n<p><img decoding=\"async\" src=\"D:\\BaiduNetdiskDownload\\\u6570\u636e\u5e93DBA\\mongoDB\u590d\u5236\u96c62.png\" referrerpolicy=\"no-referrer\" alt=\"image-20201211144626638\"><\/p>\n<h3>6.2.2 \u73af\u5883\u51c6\u5907<\/h3>\n<h3>\u591a\u4e2a\u7aef\u53e3\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">28017\u300128018\u300128019\u300128020\n<\/code><\/pre>\n<h3>\u591a\u5957\u76ee\u5f55\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">su - mongod \nmkdir -p \/mongodb\/28017\/conf \/mongodb\/28017\/data \/mongodb\/28017\/log\nmkdir -p \/mongodb\/28018\/conf \/mongodb\/28018\/data \/mongodb\/28018\/log\nmkdir -p \/mongodb\/28019\/conf \/mongodb\/28019\/data \/mongodb\/28019\/log\nmkdir -p \/mongodb\/28020\/conf \/mongodb\/28020\/data \/mongodb\/28020\/log\n<\/code><\/pre>\n<h3>\u591a\u5957\u914d\u7f6e\u6587\u4ef6<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">\/mongodb\/28017\/conf\/mongod.conf\n\/mongodb\/28018\/conf\/mongod.conf\n\/mongodb\/28019\/conf\/mongod.conf\n\/mongodb\/28020\/conf\/mongod.conf\n<\/code><\/pre>\n<h3>\u914d\u7f6e\u6587\u4ef6\u5185\u5bb9<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-tsx\" lang=\"tsx\">cat &gt; \/mongodb\/28017\/conf\/mongod.conf &lt;&lt;EOF\nsystemLog:\n  destination: file\n  path: \/mongodb\/28017\/log\/mongodb.log\n  logAppend: true\nstorage:\n  journal:\n    enabled: true\n  dbPath: \/mongodb\/28017\/data\n  directoryPerDB: true\n  #engine: wiredTiger\n  wiredTiger:\n    engineConfig:\n      cacheSizeGB: 1\n      directoryForIndexes: true\n    collectionConfig:\n      blockCompressor: zlib\n    indexConfig:\n      prefixCompression: true\nprocessManagement:\n  fork: true\nnet:\n  bindIp: 10.0.0.51,127.0.0.1\n  port: 28017\nreplication:\n  oplogSizeMB: 2048\n  replSetName: my_repl\nEOF\n        \n\n\\cp  \/mongodb\/28017\/conf\/mongod.conf  \/mongodb\/28018\/conf\/\n\\cp  \/mongodb\/28017\/conf\/mongod.conf  \/mongodb\/28019\/conf\/\n\\cp  \/mongodb\/28017\/conf\/mongod.conf  \/mongodb\/28020\/conf\/\n\nsed 's#28017#28018#g' \/mongodb\/28018\/conf\/mongod.conf -i\nsed 's#28017#28019#g' \/mongodb\/28019\/conf\/mongod.conf -i\nsed 's#28017#28020#g' \/mongodb\/28020\/conf\/mongod.conf -i\n<\/code><\/pre>\n<h3>\u542f\u52a8\u591a\u4e2a\u5b9e\u4f8b\u5907\u7528<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">mongod -f \/mongodb\/28017\/conf\/mongod.conf\nmongod -f \/mongodb\/28018\/conf\/mongod.conf\nmongod -f \/mongodb\/28019\/conf\/mongod.conf\nmongod -f \/mongodb\/28020\/conf\/mongod.conf\nnetstat -lnp|grep 280\n<\/code><\/pre>\n<h2>6.3 \u914d\u7f6e\u666e\u901a\u590d\u5236\u96c6\uff1a<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">1\u4e3b2\u4ece\uff0c\u4ece\u5e93\u666e\u901a\u4ece\u5e93\nmongo --port 28017 admin\nconfig = {_id: 'my_repl', members: [\n                          {_id: 0, host: '10.0.0.51:28017'},\n                          {_id: 1, host: '10.0.0.51:28018'},\n                          {_id: 2, host: '10.0.0.51:28019'}]\n          }  \n\u521d\u59cb\u5316          \nrs.initiate(config) \n\u67e5\u8be2\u590d\u5236\u96c6\u72b6\u6001\nrs.status();\n<\/code><\/pre>\n<h2>6.4 1\u4e3b1\u4ece1\u4e2aarbiter<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mongo -port 28017 admin\nconfig = {_id: 'my_repl', members: [\n                          {_id: 0, host: '10.0.0.51:28017'},\n                          {_id: 1, host: '10.0.0.51:28018'},\n                          {_id: 2, host: '10.0.0.51:28019',\"arbiterOnly\":true}]\n          }                \nrs.initiate(config) \n<\/code><\/pre>\n<h2>6.5 \u590d\u5236\u96c6\u7ba1\u7406\u64cd\u4f5c<\/h2>\n<h3>6.5.1 \u67e5\u770b\u590d\u5236\u96c6\u72b6\u6001<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">rs.status();    \/\/\u67e5\u770b\u6574\u4f53\u590d\u5236\u96c6\u72b6\u6001\nrs.isMaster(); \/\/ \u67e5\u770b\u5f53\u524d\u662f\u5426\u662f\u4e3b\u8282\u70b9\n rs.conf()\uff1b   \/\/\u67e5\u770b\u590d\u5236\u96c6\u914d\u7f6e\u4fe1\u606f\n<\/code><\/pre>\n<h3>6.5.2 \u6dfb\u52a0\u5220\u9664\u8282\u70b9<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-csharp\" lang=\"csharp\">rs.remove(\"ip:port\"); \/\/ \u5220\u9664\u4e00\u4e2a\u8282\u70b9\nrs.add(\"ip:port\"); \/\/ \u65b0\u589e\u4ece\u8282\u70b9\nrs.addArb(\"ip:port\"); \/\/ \u65b0\u589e\u4ef2\u88c1\u8282\u70b9\n\u4f8b\u5b50\uff1a\n\u6dfb\u52a0 arbiter\u8282\u70b9\n1\u3001\u8fde\u63a5\u5230\u4e3b\u8282\u70b9\n[mongod@db03 ~]$ mongo --port 28018 admin\n2\u3001\u6dfb\u52a0\u4ef2\u88c1\u8282\u70b9\nmy_repl:PRIMARY&gt; rs.addArb(\"10.0.0.53:28020\")\n3\u3001\u67e5\u770b\u8282\u70b9\u72b6\u6001\nmy_repl:PRIMARY&gt; rs.isMaster()\n{\n    \"hosts\" : [\n        \"10.0.0.53:28017\",\n        \"10.0.0.53:28018\",\n        \"10.0.0.53:28019\"\n    ],\n    \"arbiters\" : [\n        \"10.0.0.53:28020\"\n    ],\n\nrs.remove(\"ip:port\"); \/\/ \u5220\u9664\u4e00\u4e2a\u8282\u70b9\n\u4f8b\u5b50\uff1a\nmy_repl:PRIMARY&gt; rs.remove(\"10.0.0.53:28019\");\n{ \"ok\" : 1 }\nmy_repl:PRIMARY&gt; rs.isMaster()\nrs.add(\"ip:port\"); \/\/ \u65b0\u589e\u4ece\u8282\u70b9\n\u4f8b\u5b50\uff1a\nmy_repl:PRIMARY&gt; rs.add(\"10.0.0.53:28019\")\n{ \"ok\" : 1 }\nmy_repl:PRIMARY&gt; rs.isMaster()\n<\/code><\/pre>\n<h3>6.5.3 \u7279\u6b8a\u4ece\u8282\u70b9<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/\/\/upload-images.jianshu.io\/upload_images\/16956686-0c47c9de8b1f9d47.png?imageMogr2\/auto-orient\/strip|imageView2\/2\/w\/1084\/format\/webp\" referrerpolicy=\"no-referrer\" alt=\"img\"><\/p>\n<p>image.png<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/\/\/upload-images.jianshu.io\/upload_images\/16956686-8cb68afc326f2e61.png?imageMogr2\/auto-orient\/strip|imageView2\/2\/w\/651\/format\/webp\" referrerpolicy=\"no-referrer\" alt=\"img\"><\/p>\n<p>image.png<\/p>\n<h3>\u4ecb\u7ecd\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">arbiter\u8282\u70b9\uff1a\u4e3b\u8981\u8d1f\u8d23\u9009\u4e3b\u8fc7\u7a0b\u4e2d\u7684\u6295\u7968\uff0c\u4f46\u662f\u4e0d\u5b58\u50a8\u4efb\u4f55\u6570\u636e\uff0c\u4e5f\u4e0d\u63d0\u4f9b\u4efb\u4f55\u670d\u52a1\nhidden\u8282\u70b9\uff1a\u9690\u85cf\u8282\u70b9\uff0c\u4e0d\u53c2\u4e0e\u9009\u4e3b\uff0c\u4e5f\u4e0d\u5bf9\u5916\u63d0\u4f9b\u670d\u52a1\u3002\ndelay\u8282\u70b9\uff1a\u5ef6\u65f6\u8282\u70b9\uff0c\u6570\u636e\u843d\u540e\u4e8e\u4e3b\u5e93\u4e00\u6bb5\u65f6\u95f4\uff0c\u56e0\u4e3a\u6570\u636e\u662f\u5ef6\u65f6\u7684\uff0c\u4e5f\u4e0d\u5e94\u8be5\u63d0\u4f9b\u670d\u52a1\u6216\u53c2\u4e0e\u9009\u4e3b\uff0c\u6240\u4ee5\u901a\u5e38\u4f1a\u914d\u5408hidden\uff08\u9690\u85cf\uff09\n\u4e00\u822c\u60c5\u51b5\u4e0b\u4f1a\u5c06delay+hidden\u4e00\u8d77\u914d\u7f6e\u4f7f\u7528\n<\/code><\/pre>\n<h3>\u914d\u7f6e\u5ef6\u65f6\u8282\u70b9\uff08\u4e00\u822c\u5ef6\u65f6\u8282\u70b9\u4e5f\u914d\u7f6e\u6210hidden\uff09<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">cfg=rs.conf() \n[]\u4e2d\u7684\u6570\u5b57\u4e3a\u4e0a\u9762\u547d\u4ee4\u67e5\u8be2\u51fa\u6765\u7684\u6570\u636e\uff0c\u8282\u70b9\u987a\u5e8f\u9012\u589e\u7684\u5e8f\u53f7-1\uff0c\u6bd4\u5982\u4ece\u4e0a\u5f80\u4e0b\u6570\u7b2c\u4e09\u4e2a\uff0c\u5c31\u662f2\ncfg.members[2].priority=0\ncfg.members[2].hidden=true\ncfg.members[2].slaveDelay=120\nrs.reconfig(cfg)    \n\n\n\u53d6\u6d88\u4ee5\u4e0a\u914d\u7f6e\ncfg=rs.conf() \ncfg.members[2].priority=1\ncfg.members[2].hidden=false\ncfg.members[2].slaveDelay=0\nrs.reconfig(cfg)    \n\u914d\u7f6e\u6210\u529f\u540e\uff0c\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u67e5\u8be2\u914d\u7f6e\u540e\u7684\u5c5e\u6027\nrs.conf(); \n<\/code><\/pre>\n<h3>6.5.4 \u526f\u672c\u96c6\u5176\u4ed6\u64cd\u4f5c\u547d\u4ee4<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">\u67e5\u770b\u526f\u672c\u96c6\u7684\u914d\u7f6e\u4fe1\u606f\nadmin&gt; rs.conf()\n\u67e5\u770b\u526f\u672c\u96c6\u5404\u6210\u5458\u7684\u72b6\u6001\nadmin&gt; rs.status()\n++++++++++++++++++++++++++++++++++++++++++++++++\n--\u526f\u672c\u96c6\u89d2\u8272\u5207\u6362\uff08\u4e0d\u8981\u4eba\u4e3a\u968f\u4fbf\u64cd\u4f5c\uff09\nadmin&gt; rs.stepDown()\n\u6ce8\uff1a\nadmin&gt; rs.freeze(300) \/\/\u9501\u5b9a\u4ece\uff0c\u4f7f\u5176\u4e0d\u4f1a\u8f6c\u53d8\u6210\u4e3b\u5e93\nfreeze()\u548cstepDown\u5355\u4f4d\u90fd\u662f\u79d2\u3002\n+++++++++++++++++++++++++++++++++++++++++++++\n\u8bbe\u7f6e\u526f\u672c\u8282\u70b9\u53ef\u8bfb\uff1a\u5728\u526f\u672c\u8282\u70b9\u6267\u884c\nadmin&gt; rs.slaveOk()\neg\uff1a\nadmin&gt; use app\nswitched to db app\napp&gt; db.createCollection('a')\n{ \"ok\" : 0, \"errmsg\" : \"not master\", \"code\" : 10107 }\n\n\u67e5\u770b\u526f\u672c\u8282\u70b9\uff08\u76d1\u63a7\u4e3b\u4ece\u5ef6\u65f6\uff09\nadmin&gt; rs.printSlaveReplicationInfo()\nsource: 192.168.1.22:27017\n    syncedTo: Thu May 26 2016 10:28:56 GMT+0800 (CST)\n    0 secs (0 hrs) behind the primary\n\nOPlog\u65e5\u5fd7\uff08\u5907\u4efd\u6062\u590d\u7ae0\u8282\uff09\n<\/code><\/pre>\n<h1>7. MongoDB Sharding Cluster \u5206\u7247\u96c6\u7fa4<\/h1>\n<h2>7.1 \u89c4\u5212<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">10\u4e2a\u5b9e\u4f8b\uff1a38017-38026\n\uff081\uff09configserver:38018-38020\n3\u53f0\u6784\u6210\u7684\u590d\u5236\u96c6\uff081\u4e3b\u4e24\u4ece\uff0c\u4e0d\u652f\u6301arbiter\uff0938018-38020\uff08\u590d\u5236\u96c6\u540d\u5b57configsvr\uff09\n\uff082\uff09shard\u8282\u70b9\uff1a\nsh1\uff1a38021-23    \uff081\u4e3b\u4e24\u4ece\uff0c\u5176\u4e2d\u4e00\u4e2a\u8282\u70b9\u4e3aarbiter\uff0c\u590d\u5236\u96c6\u540d\u5b57sh1\uff09\nsh2\uff1a38024-26    \uff081\u4e3b\u4e24\u4ece\uff0c\u5176\u4e2d\u4e00\u4e2a\u8282\u70b9\u4e3aarbiter\uff0c\u590d\u5236\u96c6\u540d\u5b57sh2\uff09\n\uff083\uff09 mongos:\n38017\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"D:\\BaiduNetdiskDownload\\\u6570\u636e\u5e93DBA\\\u5206\u7247\u8282\u70b9\u57fa\u7840\u67b6\u6784.png\" referrerpolicy=\"no-referrer\"><\/p>\n<h2>7.2 Shard\u8282\u70b9\u914d\u7f6e\u8fc7\u7a0b<\/h2>\n<h3>7.2.1 \u76ee\u5f55\u521b\u5efa\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mkdir -p \/mongodb\/38021\/conf  \/mongodb\/38021\/log  \/mongodb\/38021\/data\nmkdir -p \/mongodb\/38022\/conf  \/mongodb\/38022\/log  \/mongodb\/38022\/data\nmkdir -p \/mongodb\/38023\/conf  \/mongodb\/38023\/log  \/mongodb\/38023\/data\nmkdir -p \/mongodb\/38024\/conf  \/mongodb\/38024\/log  \/mongodb\/38024\/data\nmkdir -p \/mongodb\/38025\/conf  \/mongodb\/38025\/log  \/mongodb\/38025\/data\nmkdir -p \/mongodb\/38026\/conf  \/mongodb\/38026\/log  \/mongodb\/38026\/data\n<\/code><\/pre>\n<h3>7.2.2 \u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff1a<\/h3>\n<h3>\u7b2c\u4e00\u7ec4\u590d\u5236\u96c6\u642d\u5efa\uff1a21-23\uff081\u4e3b 1\u4ece 1Arb\uff09<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-tsx\" lang=\"tsx\">cat &gt;  \/mongodb\/38021\/conf\/mongodb.conf  &lt;&lt;EOF\nsystemLog:\n  destination: file\n  path: \/mongodb\/38021\/log\/mongodb.log   \n  logAppend: true\nstorage:\n  journal:\n    enabled: true\n  dbPath: \/mongodb\/38021\/data\n  directoryPerDB: true\n  #engine: wiredTiger\n  wiredTiger:\n    engineConfig:\n      cacheSizeGB: 1\n      directoryForIndexes: true\n    collectionConfig:\n      blockCompressor: zlib\n    indexConfig:\n      prefixCompression: true\nnet:\n  bindIp: 10.0.0.51,127.0.0.1\n  port: 38021\nreplication:\n  oplogSizeMB: 2048\n  replSetName: sh1\nsharding:\n  clusterRole: shardsvr\nprocessManagement: \n  fork: true\nEOF\n\n\\cp  \/mongodb\/38021\/conf\/mongodb.conf  \/mongodb\/38022\/conf\/\n\\cp  \/mongodb\/38021\/conf\/mongodb.conf  \/mongodb\/38023\/conf\/\n\nsed 's#38021#38022#g' \/mongodb\/38022\/conf\/mongodb.conf -i\nsed 's#38021#38023#g' \/mongodb\/38023\/conf\/mongodb.conf -i\n<\/code><\/pre>\n<h3>\u7b2c\u4e8c\u7ec4\u8282\u70b9\uff1a24-26(1\u4e3b1\u4ece1Arb)<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-jsx\" lang=\"jsx\">cat &gt; \/mongodb\/38024\/conf\/mongodb.conf &lt;&lt;EOF\nsystemLog:\n  destination: file\n  path: \/mongodb\/38024\/log\/mongodb.log   \n  logAppend: true\nstorage:\n  journal:\n    enabled: true\n  dbPath: \/mongodb\/38024\/data\n  directoryPerDB: true\n  wiredTiger:\n    engineConfig:\n      cacheSizeGB: 1\n      directoryForIndexes: true\n    collectionConfig:\n      blockCompressor: zlib\n    indexConfig:\n      prefixCompression: true\nnet:\n  bindIp: 10.0.0.51,127.0.0.1\n  port: 38024\nreplication:\n  oplogSizeMB: 2048\n  replSetName: sh2\nsharding:\n  clusterRole: shardsvr\nprocessManagement: \n  fork: true\nEOF\n\n\\cp  \/mongodb\/38024\/conf\/mongodb.conf  \/mongodb\/38025\/conf\/\n\\cp  \/mongodb\/38024\/conf\/mongodb.conf  \/mongodb\/38026\/conf\/\nsed 's#38024#38025#g' \/mongodb\/38025\/conf\/mongodb.conf -i\nsed 's#38024#38026#g' \/mongodb\/38026\/conf\/mongodb.conf -i\n<\/code><\/pre>\n<h3>7.2.3 \u542f\u52a8\u6240\u6709\u8282\u70b9\uff0c\u5e76\u642d\u5efa\u590d\u5236\u96c6<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mongod -f  \/mongodb\/38021\/conf\/mongodb.conf \nmongod -f  \/mongodb\/38022\/conf\/mongodb.conf \nmongod -f  \/mongodb\/38023\/conf\/mongodb.conf \nmongod -f  \/mongodb\/38024\/conf\/mongodb.conf \nmongod -f  \/mongodb\/38025\/conf\/mongodb.conf \nmongod -f  \/mongodb\/38026\/conf\/mongodb.conf  \nps -ef |grep mongod\n\nmongo --port 38021 admin\n\nconfig = {_id: 'sh1', members: [\n                          {_id: 0, host: '10.0.0.51:38021'},\n                          {_id: 1, host: '10.0.0.51:38022'},\n                          {_id: 2, host: '10.0.0.51:38023',\"arbiterOnly\":true}]\n           }\n\nrs.initiate(config)\n  \n mongo --port 38024 admin\n\nconfig = {_id: 'sh2', members: [\n                          {_id: 0, host: '10.0.0.51:38024'},\n                          {_id: 1, host: '10.0.0.51:38025'},\n                          {_id: 2, host: '10.0.0.51:38026',\"arbiterOnly\":true}]\n           }\n  \nrs.initiate(config)\n<\/code><\/pre>\n<h2>7.3 config\u8282\u70b9\u914d\u7f6e<\/h2>\n<h3>7.3.1 \u76ee\u5f55\u521b\u5efa<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mkdir -p \/mongodb\/38018\/conf  \/mongodb\/38018\/log  \/mongodb\/38018\/data\nmkdir -p \/mongodb\/38019\/conf  \/mongodb\/38019\/log  \/mongodb\/38019\/data\nmkdir -p \/mongodb\/38020\/conf  \/mongodb\/38020\/log  \/mongodb\/38020\/data\n<\/code><\/pre>\n<h3>7.3.2\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-tsx\" lang=\"tsx\">cat &gt; \/mongodb\/38018\/conf\/mongodb.conf &lt;&lt;EOF\nsystemLog:\n  destination: file\n  path: \/mongodb\/38018\/log\/mongodb.conf\n  logAppend: true\nstorage:\n  journal:\n    enabled: true\n  dbPath: \/mongodb\/38018\/data\n  directoryPerDB: true\n  #engine: wiredTiger\n  wiredTiger:\n    engineConfig:\n      cacheSizeGB: 1\n      directoryForIndexes: true\n    collectionConfig:\n      blockCompressor: zlib\n    indexConfig:\n      prefixCompression: true\nnet:\n  bindIp: 10.0.0.51,127.0.0.1\n  port: 38018\nreplication:\n  oplogSizeMB: 2048\n  replSetName: configReplSet\nsharding:\n  clusterRole: configsvr\nprocessManagement: \n  fork: true\nEOF\n\n\\cp \/mongodb\/38018\/conf\/mongodb.conf \/mongodb\/38019\/conf\/\n\\cp \/mongodb\/38018\/conf\/mongodb.conf \/mongodb\/38020\/conf\/\nsed 's#38018#38019#g' \/mongodb\/38019\/conf\/mongodb.conf -i\nsed 's#38018#38020#g' \/mongodb\/38020\/conf\/mongodb.conf -i\n<\/code><\/pre>\n<h3>7.3.3\u542f\u52a8\u8282\u70b9\uff0c\u5e76\u914d\u7f6e\u590d\u5236\u96c6<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mongod -f \/mongodb\/38018\/conf\/mongodb.conf \nmongod -f \/mongodb\/38019\/conf\/mongodb.conf \nmongod -f \/mongodb\/38020\/conf\/mongodb.conf \n\nmongo --port 38018 admin\n config = {_id: 'configReplSet', members: [\n                          {_id: 0, host: '10.0.0.51:38018'},\n                          {_id: 1, host: '10.0.0.51:38019'},\n                          {_id: 2, host: '10.0.0.51:38020'}]\n           }\nrs.initiate(config)  \n  \n\u6ce8\uff1aconfigserver \u53ef\u4ee5\u662f\u4e00\u4e2a\u8282\u70b9\uff0c\u5b98\u65b9\u5efa\u8bae\u590d\u5236\u96c6\u3002configserver\u4e0d\u80fd\u6709arbiter\u3002\n\u65b0\u7248\u672c\u4e2d\uff0c\u8981\u6c42\u5fc5\u987b\u662f\u590d\u5236\u96c6\u3002\n\u6ce8\uff1amongodb 3.4\u4e4b\u540e\uff0c\u867d\u7136\u8981\u6c42config server\u4e3areplica set\uff0c\u4f46\u662f\u4e0d\u652f\u6301arbiter\n<\/code><\/pre>\n<h2>7.4 mongos\u8282\u70b9\u914d\u7f6e\uff1a<\/h2>\n<h3>7.4.1\u521b\u5efa\u76ee\u5f55\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mkdir -p \/mongodb\/38017\/conf  \/mongodb\/38017\/log \n<\/code><\/pre>\n<h3>7.4.2\u914d\u7f6e\u6587\u4ef6\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">cat &gt; \/mongodb\/38017\/conf\/mongos.conf &lt;&lt;EOF\nsystemLog:\n  destination: file\n  path: \/mongodb\/38017\/log\/mongos.log\n  logAppend: true\nnet:\n  bindIp: 10.0.0.51,127.0.0.1\n  port: 38017\nsharding:\n  configDB: configReplSet\/10.0.0.51:38018,10.0.0.51:38019,10.0.0.51:38020\nprocessManagement: \n  fork: true\nEOF\n<\/code><\/pre>\n<h3>7.4.3\u542f\u52a8mongos<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\"> mongos -f \/mongodb\/38017\/conf\/mongos.conf \n<\/code><\/pre>\n<h2>7.5 \u5206\u7247\u96c6\u7fa4\u6dfb\u52a0\u8282\u70b9<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\"> \u8fde\u63a5\u5230\u5176\u4e2d\u4e00\u4e2amongos\uff0810.0.0.51\uff09\uff0c\u505a\u4ee5\u4e0b\u914d\u7f6e\n\uff081\uff09\u8fde\u63a5\u5230mongs\u7684admin\u6570\u636e\u5e93\n# su - mongod\n$ mongo 10.0.0.51:38017\/admin\n\uff082\uff09\u6dfb\u52a0\u5206\u7247\ndb.runCommand( { addshard : \"sh1\/10.0.0.51:38021,10.0.0.51:38022,10.0.0.51:38023\",name:\"shard1\"} )\ndb.runCommand( { addshard : \"sh2\/10.0.0.51:38024,10.0.0.51:38025,10.0.0.51:38026\",name:\"shard2\"} )\n\uff083\uff09\u5217\u51fa\u5206\u7247\nmongos&gt; db.runCommand( { listshards : 1 } )\n\uff084\uff09\u6574\u4f53\u72b6\u6001\u67e5\u770b\nmongos&gt; sh.status();\n<\/code><\/pre>\n<h2>7.6 \u4f7f\u7528\u5206\u7247\u96c6\u7fa4<\/h2>\n<h3>7.6.1 RANGE\u5206\u7247\u914d\u7f6e\u53ca\u6d4b\u8bd5<\/h3>\n<h3>1\u3001\u6fc0\u6d3b\u6570\u636e\u5e93\u5206\u7247\u529f\u80fd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">mongo --port 38017 admin\nadmin&gt;  ( { enablesharding : \"\u6570\u636e\u5e93\u540d\u79f0\" } )\neg\uff1a\nadmin&gt; db.runCommand( { enablesharding : \"test\" } )\n<\/code><\/pre>\n<h3>2\u3001\u6307\u5b9a\u5206\u7247\u952e\u5bf9\u96c6\u5408\u5206\u7247<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">### \u521b\u5efa\u7d22\u5f15\nuse test\n&gt; db.vast.ensureIndex( { id: 1 } )\n### \u5f00\u542f\u5206\u7247\nuse admin\n&gt; db.runCommand( { shardcollection : \"test.vast\",key : {id: 1} } )\n#{id: 1}:1,\u4ece\u5c0f\u5230\u5927\u7684\u987a\u5e8f\u5206\u5e03\uff0c-1\uff0c\u4ece\u5927\u5230\u5c0f\u7684\u987a\u5e8f\u5206\u5e03\n<\/code><\/pre>\n<h3>3\u3001\u96c6\u5408\u5206\u7247\u9a8c\u8bc1<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">admin&gt; use test\ntest&gt; for(i=1;i&lt;1000000;i++){ db.vast.insert({\"id\":i,\"name\":\"shenzheng\",\"age\":70,\"date\":new Date()}); }\ntest&gt; db.vast.stats()\n<\/code><\/pre>\n<p>4\u3001\u5206\u7247\u7ed3\u679c\u6d4b\u8bd5<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">shard1:\nmongo --port 38021\ndb.vast.count();\n\nshard2:\nmongo --port 38024\ndb.vast.count();\n<\/code><\/pre>\n<h3>7.6.2 Hash\u5206\u7247\u4f8b\u5b50\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-rust\" lang=\"rust\">\u5bf9oldboy\u5e93\u4e0b\u7684vast\u5927\u8868\u8fdb\u884chash\n\u521b\u5efa\u54c8\u5e0c\u7d22\u5f15\n\uff081\uff09\u5bf9\u4e8eoldboy\u5f00\u542f\u5206\u7247\u529f\u80fd\nmongo --port 38017 admin\nuse admin\nadmin&gt; db.runCommand( { enablesharding : \"oldboy\" } )\n\uff082\uff09\u5bf9\u4e8eoldboy\u5e93\u4e0b\u7684vast\u8868\u5efa\u7acbhash\u7d22\u5f15\nuse oldboy\noldboy&gt; db.vast.ensureIndex( { id: \"hashed\" } )\n\uff083\uff09\u5f00\u542f\u5206\u7247 \nuse admin\nadmin &gt; sh.shardCollection( \"oldboy.vast\", { id: \"hashed\" } )\n\uff084\uff09\u5f55\u516510w\u884c\u6570\u636e\u6d4b\u8bd5\nuse oldboy\nfor(i=1;i&lt;100000;i++){ db.vast.insert({\"id\":i,\"name\":\"shenzheng\",\"age\":70,\"date\":new Date()}); }\n\uff085\uff09hash\u5206\u7247\u7ed3\u679c\u6d4b\u8bd5\nmongo --port 38021\nuse oldboy\ndb.vast.count();\nmongo --port 38024\nuse oldboy\ndb.vast.count();\n<\/code><\/pre>\n<h2>7.7 \u5206\u7247\u96c6\u7fa4\u7684\u67e5\u8be2\u53ca\u7ba1\u7406<\/h2>\n<h3>7.7.1 \u5224\u65ad\u662f\u5426Shard\u96c6\u7fa4<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">admin&gt; db.runCommand({ isdbgrid : 1})\n<\/code><\/pre>\n<h3>7.7.2 \u5217\u51fa\u6240\u6709\u5206\u7247\u4fe1\u606f<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">admin&gt; db.runCommand({ listshards : 1})\n<\/code><\/pre>\n<h3>7.7.3 \u5217\u51fa\u5f00\u542f\u5206\u7247\u7684\u6570\u636e\u5e93<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-swift\" lang=\"swift\">admin&gt; use config\nconfig&gt; db.databases.find( { \"partitioned\": true } )\n\u6216\u8005\uff1a\nconfig&gt; db.databases.find() \/\/\u5217\u51fa\u6240\u6709\u6570\u636e\u5e93\u5206\u7247\u60c5\u51b5\n<\/code><\/pre>\n<h3>7.7.4 \u67e5\u770b\u5206\u7247\u7684\u7247\u952e<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-swift\" lang=\"swift\">config&gt; db.collections.find().pretty()\n{\n    \"_id\" : \"test.vast\",\n    \"lastmodEpoch\" : ObjectId(\"58a599f19c898bbfb818b63c\"),\n    \"lastmod\" : ISODate(\"1970-02-19T17:02:47.296Z\"),\n    \"dropped\" : false,\n    \"key\" : {\n        \"id\" : 1\n    },\n    \"unique\" : false\n}\n<\/code><\/pre>\n<h3>7.7.5 \u67e5\u770b\u5206\u7247\u7684\u8be6\u7ec6\u4fe1\u606f<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">admin&gt; sh.status()\n<\/code><\/pre>\n<h3>7.7.6 \u5220\u9664\u5206\u7247\u8282\u70b9\uff08\u8c28\u614e\uff09<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">\uff081\uff09\u786e\u8ba4blance\u662f\u5426\u5728\u5de5\u4f5c\nsh.getBalancerState()\n\uff082\uff09\u5220\u9664shard2\u8282\u70b9(\u8c28\u614e)\nmongos&gt; db.runCommand( { removeShard: \"shard2\" } )\n\u6ce8\u610f\uff1a\u5220\u9664\u64cd\u4f5c\u4e00\u5b9a\u4f1a\u7acb\u5373\u89e6\u53d1blancer\u3002\n<\/code><\/pre>\n<h2>7.8 balancer\u64cd\u4f5c<\/h2>\n<h3>7.8.1 \u4ecb\u7ecd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-css\" lang=\"css\">mongos\u7684\u4e00\u4e2a\u91cd\u8981\u529f\u80fd\uff0c\u81ea\u52a8\u5de1\u67e5\u6240\u6709shard\u8282\u70b9\u4e0a\u7684chunk\u7684\u60c5\u51b5\uff0c\u81ea\u52a8\u505achunk\u8fc1\u79fb\u3002\n\u4ec0\u4e48\u65f6\u5019\u5de5\u4f5c\uff1f\n1\u3001\u81ea\u52a8\u8fd0\u884c\uff0c\u4f1a\u68c0\u6d4b\u7cfb\u7edf\u4e0d\u7e41\u5fd9\u7684\u65f6\u5019\u505a\u8fc1\u79fb\n2\u3001\u5728\u505a\u8282\u70b9\u5220\u9664\u7684\u65f6\u5019\uff0c\u7acb\u5373\u5f00\u59cb\u8fc1\u79fb\u5de5\u4f5c\n3\u3001balancer\u53ea\u80fd\u5728\u9884\u8bbe\u5b9a\u7684\u65f6\u95f4\u7a97\u53e3\u5185\u8fd0\u884c\n\n\u6709\u9700\u8981\u65f6\u53ef\u4ee5\u5173\u95ed\u548c\u5f00\u542fblancer\uff08\u5907\u4efd\u7684\u65f6\u5019\uff09\nmongos&gt; sh.stopBalancer()\nmongos&gt; sh.startBalancer()\n<\/code><\/pre>\n<h3>7.8.2 \u81ea\u5b9a\u4e49 \u81ea\u52a8\u5e73\u8861\u8fdb\u884c\u7684\u65f6\u95f4\u6bb5<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-objectivec\" lang=\"objectivec\">https:\/\/docs.mongodb.com\/manual\/tutorial\/manage-sharded-cluster-balancer\/#schedule-the-balancing-window\n\/\/ connect to mongos\n\nuse config\nsh.setBalancerState( true )\ndb.settings.update({ _id : \"balancer\" }, { $set : { activeWindow : { start : \"3:00\", stop : \"5:00\" } } }, true )\n\nsh.getBalancerWindow()\nsh.status()\n\n\u5173\u4e8e\u96c6\u5408\u7684balancer\uff08\u4e86\u89e3\u4e0b\uff09\n\u5173\u95ed\u67d0\u4e2a\u96c6\u5408\u7684balance\nsh.disableBalancing(\"students.grades\")\n\u6253\u5f00\u67d0\u4e2a\u96c6\u5408\u7684balancer\nsh.enableBalancing(\"students.grades\")\n\u786e\u5b9a\u67d0\u4e2a\u96c6\u5408\u7684balance\u662f\u5f00\u542f\u6216\u8005\u5173\u95ed\ndb.getSiblingDB(\"config\").collections.findOne({_id : \"students.grades\"}).noBalance;\n<\/code><\/pre>\n<h1>8. \u5907\u4efd\u6062\u590d<\/h1>\n<h2>8.1 \u5907\u4efd\u6062\u590d\u5de5\u5177\u4ecb\u7ecd\uff1a<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">\uff081\uff09**   mongoexport\/mongoimport\uff1a\u5bfc\u5165\/\u5bfc\u51fa\u7684\u662fJSON\u683c\u5f0f\u6216\u8005CSV\u683c\u5f0f\n\uff082\uff09***** mongodump\/mongorestore\uff1a\u5bfc\u5165\/\u5bfc\u51fa\u7684\u662fBSON\u683c\u5f0f\u3002\n<\/code><\/pre>\n<h2>8.2 \u5907\u4efd\u5de5\u5177\u533a\u522b\u5728\u54ea\u91cc\uff1f<\/h2>\n<p>&nbsp;<\/p>\n<pre><code>\u5e94\u7528\u573a\u666f\u603b\u7ed3:\nmongoexport\/mongoimport:\u5bfc\u5165\/\u5bfc\u51fa\u7684\u662fJSON\u683c\u5f0f\u6216\u8005CSV\u683c\u5f0f\n1\u3001\u5f02\u6784\u5e73\u53f0\u8fc1\u79fb  mysql  &lt;---&gt; mongodb\n2\u3001\u540c\u5e73\u53f0\uff0c\u8de8\u5927\u7248\u672c\uff1amongodb 2  ----&gt; mongodb 3\n\nmongodump\/mongorestore\uff1a\u5bfc\u5165\/\u5bfc\u51fa\u7684\u662fBSON\u683c\u5f0f\u3002\n\u65e5\u5e38\u5907\u4efd\u6062\u590d\u65f6\u4f7f\u7528.\n\nJSON\u53ef\u8bfb\u6027\u5f3a\u4f46\u4f53\u79ef\u8f83\u5927\uff0cBSON\u5219\u662f\u4e8c \u8fdb\u5236\u6587\u4ef6\uff0c\u4f53\u79ef\u5c0f\u4f46\u5bf9\u4eba\u7c7b\u51e0\u4e4e\u6ca1\u6709\u53ef\u8bfb\u6027\u3002\n\n\u5728\u4e00\u4e9bmongodb\u7248 \u672c\u4e4b\u95f4\uff0cBSON\u683c \u5f0f\u53ef\u80fd\u4f1a\u968f\u7248\u672c\u4e0d\u540c\u800c\u6709\u6240\u4e0d\u540c\uff0c\u6240\u4ee5\u4e0d\u540c\u7248\u672c\u4e4b\u95f4\u7528mongodump\/mongorestore\u53ef\u80fd\u4e0d\u4f1a\u6210\u529f,\u5177\u4f53\u8981\u770b\u7248\u672c\u4e4b\u95f4\u7684\u517c\u5bb9\u6027\u3002\u5f53\u65e0\u6cd5\u4f7f\u7528BSON\u8fdb\u884c\u8de8\u7248\u672c\u7684\u6570\u636e\u8fc1\u79fb\u7684\u65f6\u5019,\n\u4f7f\u7528JSON\u683c\u5f0f\u5373mongoexport\/mongoimport\u662f\u4e00\u4e2a\u53ef\u9009\u9879\u3002\n\n\u8de8\u7248\u672c\u7684mongodump\/mongorestore\u4e2a\u4eba\u5e76\u4e0d\u63a8\u8350\uff0c\u5b9e\u5728\u8981\u505a\u8bf7\u5148\u68c0\u67e5\u6587\u6863\u770b\u4e24\u4e2a\u7248\u672c\u662f\u5426\u517c\u5bb9(\u5927\u90e8\u5206\u65f6\u5019\u662f\u7684)\u3002\n\nJSON\u867d\u7136\u5177\u6709\u8f83\u597d\u7684\u8de8\u7248\u672c\u901a\u7528\u6027\uff0c\u4f46\u5176\u53ea\u4fdd\u7559\u4e86\u6570\u636e\u90e8\u5206\uff0c\u4e0d\u4fdd\u7559\u7d22\u5f15\uff0c\u8d26\u6237\u7b49\u5176\u4ed6\u57fa\u7840\u4fe1\u606f\u3002\u4f7f\u7528\u65f6\u5e94\u8be5\u6ce8\u610f\n\n<\/code><\/pre>\n<h2>8.3 \u5bfc\u51fa\u5de5\u5177mongoexport<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mongoexport\u5177\u4f53\u7528\u6cd5\u5982\u4e0b\u6240\u793a\uff1a\n$ mongoexport --help  \n\u53c2\u6570\u8bf4\u660e\uff1a\n-h:\u6307\u660e\u6570\u636e\u5e93\u5bbf\u4e3b\u673a\u7684IP\n-u:\u6307\u660e\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\n-p:\u6307\u660e\u6570\u636e\u5e93\u7684\u5bc6\u7801\n-d:\u6307\u660e\u6570\u636e\u5e93\u7684\u540d\u5b57\n-c:\u6307\u660ecollection\u7684\u540d\u5b57\n-f:\u6307\u660e\u8981\u5bfc\u51fa\u90a3\u4e9b\u5217\n-o:\u6307\u660e\u5230\u8981\u5bfc\u51fa\u7684\u6587\u4ef6\u540d\n-q:\u6307\u660e\u5bfc\u51fa\u6570\u636e\u7684\u8fc7\u6ee4\u6761\u4ef6\n--authenticationDatabase admin\n\n1.\u5355\u8868\u5907\u4efd\u81f3json\u683c\u5f0f\nmkdir \/mongodb\/backup -p\n\nmongod -f \/mongodb\/conf\/mongo.conf \n\nmongoexport -uroot -p123 --port 27017 -d cuoni -c log --authenticationDatabase admin -o \/mongodb\/backup\/log.json\n\n\u6ce8\uff1a\u5907\u4efd\u6587\u4ef6\u7684\u540d\u5b57\u53ef\u4ee5\u81ea\u5b9a\u4e49\uff0c\u9ed8\u8ba4\u5bfc\u51fa\u4e86JSON\u683c\u5f0f\u7684\u6570\u636e\u3002\n\n2. \u5355\u8868\u5907\u4efd\u81f3csv\u683c\u5f0f\n\u5982\u679c\u6211\u4eec\u9700\u8981\u5bfc\u51faCSV\u683c\u5f0f\u7684\u6570\u636e\uff0c\u5219\u9700\u8981\u4f7f\u7528----type=csv\u53c2\u6570\uff1a\n\n mongoexport -uroot -p123 --port 27017 -d cuoni -c log --authenticationDatabase admin --type=csv -f uid,name,age,date  -o \/mongodb\/backup\/log.csv\n \n\n<\/code><\/pre>\n<h2>8.4 \u5bfc\u5165\u5de5\u5177mongoimport<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">$ mongoimport --help\n\u53c2\u6570\u8bf4\u660e\uff1a\n-h:\u6307\u660e\u6570\u636e\u5e93\u5bbf\u4e3b\u673a\u7684IP\n-u:\u6307\u660e\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\n-p:\u6307\u660e\u6570\u636e\u5e93\u7684\u5bc6\u7801\n-d:\u6307\u660e\u6570\u636e\u5e93\u7684\u540d\u5b57\n-c:\u6307\u660ecollection\u7684\u540d\u5b57\n-f:\u6307\u660e\u8981\u5bfc\u5165\u90a3\u4e9b\u5217\n-j, --numInsertionWorkers=&lt;number&gt;  number of insert operations to run concurrently                                                  (defaults to 1)\n\/\/\u5e76\u884c\n\u6570\u636e\u6062\u590d:\n1.\u6062\u590djson\u683c\u5f0f\u8868\u6570\u636e\u5230log1\nmongoimport -uroot -p123 --port 27017 --authenticationDatabase admin -d test -c log1 \/mongodb\/backup\/log.json\n2.\u6062\u590dcsv\u683c\u5f0f\u7684\u6587\u4ef6\u5230log2\n\u4e0a\u9762\u6f14\u793a\u7684\u662f\u5bfc\u5165JSON\u683c\u5f0f\u7684\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\uff0c\u5982\u679c\u8981\u5bfc\u5165CSV\u683c\u5f0f\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\uff0c\u5219\u9700\u8981\u901a\u8fc7--type\u53c2\u6570\u6307\u5b9a\u5bfc\u5165\u683c\u5f0f\uff0c\u5177\u4f53\u5982\u4e0b\u6240\u793a\uff1a\n\u9519\u8bef\u7684\u6062\u590d\n\n\u6ce8\u610f\uff1a\n\uff081\uff09csv\u683c\u5f0f\u7684\u6587\u4ef6\u5934\u884c\uff0c\u6709\u5217\u540d\u5b57\nmongoimport   -uroot -p123 --port 27017 --authenticationDatabase admin   -d test -c log2 --type=csv --headerline --file  \/mongodb\/backup\/log.csv\n\n\uff082\uff09csv\u683c\u5f0f\u7684\u6587\u4ef6\u5934\u884c\uff0c\u6ca1\u6709\u5217\u540d\u5b57\nmongoimport   -uroot -p123 --port 27017 --authenticationDatabase admin   -d test -c log3 --type=csv -f id,name,age,date --file  \/mongodb\/backup\/log.csv\n        \n--headerline:\u6307\u660e\u7b2c\u4e00\u884c\u662f\u5217\u540d\uff0c\u4e0d\u9700\u8981\u5bfc\u5165\u3002\n-f\uff1a\u624b\u5de5\u6307\u5b9a\u5934\u884c\u5217\u540d\n<\/code><\/pre>\n<h2>8.5 \u5f02\u6784\u5e73\u53f0\u8fc1\u79fb\u6848\u4f8b<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mysql   -----&gt; mongodb  \nOCP\u6570\u636e\u5e93\u4e0buser\u8868\u8fdb\u884c\u5bfc\u51fa\uff0c\u5bfc\u5165\u5230mongodb\n\n\uff081\uff09mysql\u5f00\u542f\u5b89\u5168\u8def\u5f84\nvim \/etc\/my.cnf   ---&gt;\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\nsecure-file-priv=\/tmp\n\n--\u91cd\u542f\u6570\u636e\u5e93\u751f\u6548\n\/etc\/init.d\/mysqld restart\n\n\uff082\uff09\u5bfc\u51famysql\u7684city\u8868\u6570\u636e\n\nselect * from ocp.user into outfile '\/tmp\/user1.csv' fields terminated by ',';\n\n\uff083\uff09\u5904\u7406\u5907\u4efd\u6587\u4ef6\ndb01 [(none)]&gt;desc ocp.user;\n+-----------+--------------+------+-----+---------+----------------+\n| Field     | Type         | Null | Key | Default | Extra          |\n+-----------+--------------+------+-----+---------+----------------+\n| uid       | int(11)      | NO   | PRI | NULL    | auto_increment |\n| uname     | varchar(255) | YES  |     | NULL    |                |\n| upassword | varchar(255) | YES  |     | NULL    |                |\n| rid       | int(11)      | YES  | MUL | NULL    |                |\n| utel      | varchar(255) | YES  |     | NULL    |                |\n| ustatus   | int(255)     | YES  |     | NULL    |                |\n| uimg      | varchar(255) | YES  |     | NULL    |                |\n+-----------+--------------+------+-----+---------+----------------+\n7 rows in set (0.00 sec)\n\n\nvim \/tmp\/user1.csv   ----&gt; \u6dfb\u52a0\u7b2c\u4e00\u884c\u5217\u540d\u4fe1\u606f\n\nuid,uname,upassword,rid,utel,ustatus,uimg\n\u6216\u8005\u5bfc\u5165\u65f6\u624b\u52a8\u6dfb\u52a0\n\n(4)\u5728mongodb\u4e2d\u5bfc\u5165\u5907\u4efd\nmongoimport -uroot -p123 --port 27017 --authenticationDatabase admin -d world  -c city --type=csv -f uid,uname,upassword,rid,utel,ustatus,uimg --file  \/tmp\/user1.csv\n\nuse ocp\ndb.user.find();\n\n-------------\nworld\u5171100\u5f20\u8868\uff0c\u5168\u90e8\u8fc1\u79fb\u5230mongodb\n\nselect table_name ,group_concat(column_name) from columns where table_schema='world' group by table_name;\n\nselect * from world.city into outfile '\/tmp\/world_city.csv' fields terminated by ',';\n\nselect concat(\"select * from \",table_schema,\".\",table_name ,\" into outfile '\/tmp\/\",table_schema,\"_\",table_name,\".csv' fields terminated by ',';\")\nfrom information_schema.tables where table_schema ='world';\n\n\u5bfc\u5165\uff1a\n\u63d0\u793a\uff0c\u4f7f\u7528infomation_schema.columns + information_schema.tables\n\nmysql\u5bfc\u51facsv\uff1a\nselect * from test_info   \ninto outfile '\/tmp\/test.csv'   \nfields terminated by ','\u3000\u3000\u3000 ------\u5b57\u6bb5\u95f4\u4ee5,\u53f7\u5206\u9694\noptionally enclosed by '\"'\u3000\u3000 ------\u5b57\u6bb5\u7528\"\u53f7\u62ec\u8d77\nescaped by '\"'   \u3000\u3000\u3000\u3000\u3000\u3000  ------\u5b57\u6bb5\u4e2d\u4f7f\u7528\u7684\u8f6c\u4e49\u7b26\u4e3a\"\nlines terminated by '\\r\\n';\u3000\u3000------\u884c\u4ee5\\r\\n\u7ed3\u675f\n\nmysql\u5bfc\u5165csv\uff1a\nload data infile '\/tmp\/test.csv'   \ninto table test_info    \nfields terminated by ','  \noptionally enclosed by '\"' \nescaped by '\"'   \nlines terminated by '\\r\\n'; \n<\/code><\/pre>\n<h2>8.6 mongodump\u548cmongorestore<\/h2>\n<h3>8.6.1\u4ecb\u7ecd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">mongodump\u80fd\u591f\u5728Mongodb\u8fd0\u884c\u65f6\u8fdb\u884c\u5907\u4efd\uff0c\u5b83\u7684\u5de5\u4f5c\u539f\u7406\u662f\u5bf9\u8fd0\u884c\u7684Mongodb\u505a\u67e5\u8be2\uff0c\u7136\u540e\u5c06\u6240\u6709\u67e5\u5230\u7684\u6587\u6863\u5199\u5165\u78c1\u76d8\u3002\n\u4f46\u662f\u5b58\u5728\u7684\u95ee\u9898\u65f6\u4f7f\u7528mongodump\u4ea7\u751f\u7684\u5907\u4efd\u4e0d\u4e00\u5b9a\u662f\u6570\u636e\u5e93\u7684\u5b9e\u65f6\u5feb\u7167\uff0c\u5982\u679c\u6211\u4eec\u5728\u5907\u4efd\u65f6\u5bf9\u6570\u636e\u5e93\u8fdb\u884c\u4e86\u5199\u5165\u64cd\u4f5c\uff0c\n\u5219\u5907\u4efd\u51fa\u6765\u7684\u6587\u4ef6\u53ef\u80fd\u4e0d\u5b8c\u5168\u548cMongodb\u5b9e\u65f6\u6570\u636e\u76f8\u7b49\u3002\u53e6\u5916\u5728\u5907\u4efd\u65f6\u53ef\u80fd\u4f1a\u5bf9\u5176\u5b83\u5ba2\u6237\u7aef\u6027\u80fd\u4ea7\u751f\u4e0d\u5229\u7684\u5f71\u54cd\u3002\n<\/code><\/pre>\n<h3>8.6.2 mongodump\u7528\u6cd5\u5982\u4e0b\uff1a<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-swift\" lang=\"swift\">$ mongodump --help\n\u53c2\u6570\u8bf4\u660e\uff1a\n-h:\u6307\u660e\u6570\u636e\u5e93\u5bbf\u4e3b\u673a\u7684IP\n-u:\u6307\u660e\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\n-p:\u6307\u660e\u6570\u636e\u5e93\u7684\u5bc6\u7801\n-d:\u6307\u660e\u6570\u636e\u5e93\u7684\u540d\u5b57\n-c:\u6307\u660ecollection\u7684\u540d\u5b57\n-o:\u6307\u660e\u5230\u8981\u5bfc\u51fa\u7684\u6587\u4ef6\u540d\n-q:\u6307\u660e\u5bfc\u51fa\u6570\u636e\u7684\u8fc7\u6ee4\u6761\u4ef6\n-j, --numParallelCollections=  number of collections to dump in parallel (4 by default)\n--oplog  \u5907\u4efd\u7684\u540c\u65f6\u5907\u4efdoplog\n<\/code><\/pre>\n<h3>8.6.3 mongodump\u548cmongorestore\u57fa\u672c\u4f7f\u7528<\/h3>\n<h3>\u5168\u5e93\u5907\u4efd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">mkdir \/mongodb\/backup\nmongodump  -uroot -p123 --port 27017 --authenticationDatabase admin -o \/mongodb\/backup\n<\/code><\/pre>\n<h3>\u5907\u4efdworld\u5e93<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">$ mongodump   -uroot -p123 --port 27017 --authenticationDatabase admin -d world -o \/mongodb\/backup\/\n<\/code><\/pre>\n<h3>\u5907\u4efdoldboy\u5e93\u4e0b\u7684log\u96c6\u5408<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">$ mongodump   -uroot -p123 --port 27017 --authenticationDatabase admin -d oldboy -c log -o \/mongodb\/backup\/\n<\/code><\/pre>\n<h3>\u538b\u7f29\u5907\u4efd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">$ mongodump   -uroot -p123 --port 27017 --authenticationDatabase admin -d oldguo -o \/mongodb\/backup\/ --gzip\n mongodump   -uroot -p123 --port 27017 --authenticationDatabase admin -o \/mongodb\/backup\/ --gzip\n$ mongodump   -uroot -p123 --port 27017 --authenticationDatabase admin -d app -c vast -o \/mongodb\/backup\/ --gzip\n<\/code><\/pre>\n<h3>\u6062\u590dworld\u5e93<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">$ mongorestore   -uroot -p123 --port 27017 --authenticationDatabase admin -d world1  \/mongodb\/backup\/world\n<\/code><\/pre>\n<h3>\u6062\u590doldguo\u5e93\u4e0b\u7684t1\u96c6\u5408<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">[mongod@db03 oldboy]$ mongorestore   -uroot -p123 --port 27017 --authenticationDatabase admin -d world -c t1  --gzip  \/mongodb\/backup.bak\/oldboy\/log1.bson.gz \n<\/code><\/pre>\n<h3>drop\u8868\u793a\u6062\u590d\u7684\u65f6\u5019\u628a\u4e4b\u524d\u7684\u96c6\u5408drop\u6389(\u5371\u9669)<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-ruby\" lang=\"ruby\">$ mongorestore  -uroot -p123 --port 27017 --authenticationDatabase admin -d oldboy --drop  \/mongodb\/backup\/oldboy\n<\/code><\/pre>\n<h2>8.7 mongodump\u548cmongorestore\u9ad8\u7ea7\u4f01\u4e1a\u5e94\u7528\uff08&#8211;oplog\uff09<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">\u6ce8\u610f\uff1a\u8fd9\u662freplica set\u6216\u8005master\/slave\u6a21\u5f0f\u4e13\u7528\n--oplog\n use oplog for taking a point-in-time snapshot\n<\/code><\/pre>\n<h3>8.7.1 oplog\u4ecb\u7ecd<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">\u5728replica set\u4e2doplog\u662f\u4e00\u4e2a\u5b9a\u5bb9\u96c6\u5408\uff08capped collection\uff09\uff0c\u5b83\u7684\u9ed8\u8ba4\u5927\u5c0f\u662f\u78c1\u76d8\u7a7a\u95f4\u76845%\uff08\u53ef\u4ee5\u901a\u8fc7--oplogSizeMB\u53c2\u6570\u4fee\u6539\uff09.\n\n\u4f4d\u4e8elocal\u5e93\u7684db.oplog.rs\uff0c\u6709\u5174\u8da3\u53ef\u4ee5\u770b\u770b\u91cc\u9762\u5230\u5e95\u6709\u4e9b\u4ec0\u4e48\u5185\u5bb9\u3002\n\u5176\u4e2d\u8bb0\u5f55\u7684\u662f\u6574\u4e2amongod\u5b9e\u4f8b\u4e00\u6bb5\u65f6\u95f4\u5185\u6570\u636e\u5e93\u7684\u6240\u6709\u53d8\u66f4\uff08\u63d2\u5165\/\u66f4\u65b0\/\u5220\u9664\uff09\u64cd\u4f5c\u3002\n\u5f53\u7a7a\u95f4\u7528\u5b8c\u65f6\u65b0\u8bb0\u5f55\u81ea\u52a8\u8986\u76d6\u6700\u8001\u7684\u8bb0\u5f55\u3002\n\u5176\u8986\u76d6\u8303\u56f4\u88ab\u79f0\u4f5coplog\u65f6\u95f4\u7a97\u53e3\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u56e0\u4e3aoplog\u662f\u4e00\u4e2a\u5b9a\u5bb9\u96c6\u5408\uff0c\n\u6240\u4ee5\u65f6\u95f4\u7a97\u53e3\u80fd\u8986\u76d6\u7684\u8303\u56f4\u4f1a\u56e0\u4e3a\u4f60\u5355\u4f4d\u65f6\u95f4\u5185\u7684\u66f4\u65b0\u6b21\u6570\u4e0d\u540c\u800c\u53d8\u5316\u3002\n\u60f3\u8981\u67e5\u770b\u5f53\u524d\u7684oplog\u65f6\u95f4\u7a97\u53e3\u9884\u8ba1\u503c\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\uff1a\n\n mongod -f \/mongodb\/28017\/conf\/mongod.conf \n mongod -f \/mongodb\/28018\/conf\/mongod.conf \n mongod -f \/mongodb\/28019\/conf\/mongod.conf \n mongod -f \/mongodb\/28020\/conf\/mongod.conf \n \n \n use local \n db.oplog.rs.find().pretty()\n\"ts\" : Timestamp(1553597844, 1),\n\"op\" : \"n\"\n\"o\"  :\n\n\"i\": insert\n\"u\": update\n\"d\": delete\n\"c\": db cmd\n\ntest:PRIMARY&gt; rs.printReplicationInfo()\nconfigured oplog size:   1561.5615234375MB &lt;--\u96c6\u5408\u5927\u5c0f\nlog length start to end: 423849secs (117.74hrs) &lt;--\u9884\u8ba1\u7a97\u53e3\u8986\u76d6\u65f6\u95f4\noplog first event time:  Wed Sep 09 2015 17:39:50 GMT+0800 (CST)\noplog last event time:   Mon Sep 14 2015 15:23:59 GMT+0800 (CST)\nnow:                     Mon Sep 14 2015 16:37:30 GMT+0800 (CST)\n<\/code><\/pre>\n<h3>8.7.2 oplog\u4f01\u4e1a\u7ea7\u5e94\u7528<\/h3>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-csharp\" lang=\"csharp\">\uff081\uff09\u5b9e\u73b0\u70ed\u5907\uff0c\u5728\u5907\u4efd\u65f6\u4f7f\u7528--oplog\u9009\u9879\n\u6ce8\uff1a\u4e3a\u4e86\u6f14\u793a\u6548\u679c\u6211\u4eec\u5728\u5907\u4efd\u8fc7\u7a0b\uff0c\u6a21\u62df\u6570\u636e\u63d2\u5165\n\uff082\uff09\u51c6\u5907\u6d4b\u8bd5\u6570\u636e\n[mongod@db01 conf]$ mongo --port 28018\nuse oldboy\nfor(var i = 1 ;i &lt; 100; i++) {\n    db.foo.insert({a:i});\n}\n\nmy_repl:PRIMARY&gt; db.oplog.rs.find({\"op\":\"i\"}).pretty()\n\noplog \u914d\u5408mongodump\u5b9e\u73b0\u70ed\u5907\nmongodump --port 28018 --oplog -o \/mongodb\/backup\n\u4f5c\u7528\u4ecb\u7ecd\uff1a--oplog \u4f1a\u8bb0\u5f55\u5907\u4efd\u8fc7\u7a0b\u4e2d\u7684\u6570\u636e\u53d8\u5316\u3002\u4f1a\u4ee5oplog.bson\u4fdd\u5b58\u4e0b\u6765\n\u6062\u590d\nmongorestore  --port 28018 --oplogReplay \/mongodb\/backup\n<\/code><\/pre>\n<h2>8.8 oplog\u9ad8\u7ea7\u5e94\u7528<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-shell\" lang=\"shell\">\u80cc\u666f\uff1a\u6bcf\u59290\u70b9\u5168\u5907\uff0coplog\u6062\u590d\u7a97\u53e3\u4e3a48\u5c0f\u65f6\n\u67d0\u5929\uff0c\u4e0a\u534810\u70b9world.city \u4e1a\u52a1\u8868\u88ab\u8bef\u5220\u9664\u3002\n\u6062\u590d\u601d\u8def\uff1a\n    0\u3001\u505c\u5e94\u7528\n    2\u3001\u627e\u6d4b\u8bd5\u5e93\n    3\u3001\u6062\u590d\u6628\u5929\u665a\u4e0a\u5168\u5907\n    4\u3001\u622a\u53d6\u5168\u5907\u4e4b\u540e\u5230world.city\u8bef\u5220\u9664\u65f6\u95f4\u70b9\u7684oplog\uff0c\u5e76\u6062\u590d\u5230\u6d4b\u8bd5\u5e93\n    5\u3001\u5c06\u8bef\u5220\u9664\u8868\u5bfc\u51fa\uff0c\u6062\u590d\u5230\u751f\u4ea7\u5e93\n\n\u6062\u590d\u6b65\u9aa4\uff1a\n\u6a21\u62df\u6545\u969c\u73af\u5883\uff1a\n\n1\u3001\u5168\u5907\u6570\u636e\u5e93\n\u6a21\u62df\u539f\u59cb\u6570\u636e\n\nmongo --port 28017\nuse wo\nfor(var i = 1 ;i &lt; 20; i++) {\n    db.ci.insert({a: i});\n}\n\n\u5168\u5907:\nrm -rf \/mongodb\/backup\/*\nmongodump --port 28018 --oplog -o \/mongodb\/backup\n\n--oplog\u529f\u80fd:\u5728\u5907\u4efd\u540c\u65f6,\u5c06\u5907\u4efd\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u65e5\u5fd7\u8fdb\u884c\u5907\u4efd\n\u6587\u4ef6\u5fc5\u987b\u5b58\u653e\u5728\/mongodb\/backup\u4e0b,\u81ea\u52a8\u547d\u4ee4\u4e3aoplog.bson\n\n\u518d\u6b21\u6a21\u62df\u6570\u636e\ndb.ci1.insert({id:1})\ndb.ci2.insert({id:2})\n\n\n2\u3001\u4e0a\u534810\u70b9\uff1a\u5220\u9664wo\u5e93\u4e0b\u7684ci\u8868\n10:00\u65f6\u523b,\u8bef\u5220\u9664\ndb.ci.drop()\nshow tables;\n\n3\u3001\u5907\u4efd\u73b0\u6709\u7684oplog.rs\u8868\nmongodump --port 28018 -d local -c oplog.rs  -o \/mongodb\/backup\n\n4\u3001\u622a\u53d6oplog\u5e76\u6062\u590d\u5230drop\u4e4b\u524d\u7684\u4f4d\u7f6e\n\u66f4\u5408\u7406\u7684\u65b9\u6cd5\uff1a\u767b\u9646\u5230\u539f\u6570\u636e\u5e93\n[mongod@db03 local]$ mongo --port 28018\nmy_repl:PRIMARY&gt; use local\ndb.oplog.rs.find({op:\"c\"}).pretty();\n\n{\n    \"ts\" : Timestamp(1553659908, 1),\n    \"t\" : NumberLong(2),\n    \"h\" : NumberLong(\"-7439981700218302504\"),\n    \"v\" : 2,\n    \"op\" : \"c\",\n    \"ns\" : \"wo.$cmd\",\n    \"ui\" : UUID(\"db70fa45-edde-4945-ade3-747224745725\"),\n    \"wall\" : ISODate(\"2019-03-27T04:11:48.890Z\"),\n    \"o\" : {\n        \"drop\" : \"ci\"\n    }\n}\n\n\u83b7\u53d6\u5230oplog\u8bef\u5220\u9664\u65f6\u95f4\u70b9\u4f4d\u7f6e:\n\"ts\" : Timestamp(1553659908, 1)\n\n 5\u3001\u6062\u590d\u5907\u4efd+\u5e94\u7528oplog\n[mongod@db03 backup]$ cd \/mongodb\/backup\/local\/\n[mongod@db03 local]$ ls\noplog.rs.bson  oplog.rs.metadata.json\n[mongod@db03 local]$ cp oplog.rs.bson ..\/oplog.bson \nrm -rf \/mongodb\/backup\/local\/\n \nmongorestore --port 38021  --oplogReplay --oplogLimit \"1553659908:1\"  --drop   \/mongodb\/backup\/\n<\/code><\/pre>\n<h2>8.9 \u5206\u7247\u96c6\u7fa4\u7684\u5907\u4efd\u601d\u8def\uff08\u4e86\u89e3\uff09<\/h2>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-undefined\" lang=\"undefined\">1\u3001\u4f60\u8981\u5907\u4efd\u4ec0\u4e48\uff1f\nconfig server\nshard \u8282\u70b9\n\n\u5355\u72ec\u8fdb\u884c\u5907\u4efd\n2\u3001\u5907\u4efd\u6709\u4ec0\u4e48\u56f0\u96be\u548c\u95ee\u9898\n\uff081\uff09chunk\u8fc1\u79fb\u7684\u95ee\u9898\n    \u4eba\u4e3a\u63a7\u5236\u5728\u5907\u4efd\u7684\u65f6\u5019\uff0c\u907f\u5f00\u8fc1\u79fb\u7684\u65f6\u95f4\u7a97\u53e3\n\uff082\uff09shard\u8282\u70b9\u4e4b\u95f4\u7684\u6570\u636e\u4e0d\u5728\u540c\u4e00\u65f6\u95f4\u70b9\u3002\n    \u9009\u4e1a\u52a1\u91cf\u8f83\u5c11\u7684\u65f6\u5019       \n        \nOps Manager \n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NoSQL_MongoDB \u7b2c\u4e00\u7ae0\uff1a\u903b\u8f91\u7ed3\u6784 &nbsp; Mongodb \u903b\u8f91\u7ed3\u6784 MySQL\u903b\u8f91\u7ed3\u6784 \u5e93d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-83","post","type-post","status-publish","format-standard","hentry","category-nosql"],"_links":{"self":[{"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/posts\/83","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=83"}],"version-history":[{"count":1,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":84,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=\/wp\/v2\/posts\/83\/revisions\/84"}],"wp:attachment":[{"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.daishen.ltd\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}