{"id":1076,"date":"2022-04-01T16:08:12","date_gmt":"2022-04-01T08:08:12","guid":{"rendered":"https:\/\/www.buyao007.icu\/?p=1076"},"modified":"2022-04-03T16:11:15","modified_gmt":"2022-04-03T08:11:15","slug":"4-mongodb-sharding-cluster-%e5%88%86%e7%89%87%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"https:\/\/www.buyao007.icu\/?p=1076","title":{"rendered":"4.MongoDB Sharding Cluster \u5206\u7247\u96c6\u7fa4"},"content":{"rendered":"\n<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6\u7fa4\u67b6\u6784\u4e0e\u81ea\u52a8\u5316\u8fd0\u7ef4\uff0c\u66fe\u8d1f\u8d23\u56fd\u5185\u67d0\u5927\u578b\u535a\u5ba2\u7f51\u7ad9\u8fd0\u7ef4\u5de5\u4f5c\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"595\" src=\"https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/04\/image.png\" alt=\"\" class=\"wp-image-1077\" srcset=\"https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/04\/image.png 865w, https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/04\/image-300x206.png 300w, https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/04\/image-768x528.png 768w\" sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">1.\u89c4\u5212<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">2.Shard\u8282\u70b9\u914d\u7f6e<\/h2>\n\n\n\n<p><strong><em>1.\u76ee\u5f55\u521b\u5efa<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<p><strong><em>2.\u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>### \u7b2c\u4e00\u7ec4\u590d\u5236\u96c6\u642d\u5efa\uff1a21-23\uff081\u4e3b 1\u4ece 1Arb\uff09<\/strong>\ncat &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\\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<strong>###  \u7b2c\u4e8c\u7ec4\u8282\u70b9\uff1a24-26(1\u4e3b1\u4ece1Arb)<\/strong>\ncat &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\n\n\n<p><strong><em>3.\u542f\u52a8\u6240\u6709\u8282\u70b9\uff0c\u5e76\u642d\u5efa\u590d\u5236\u96c6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\nuse  admin\nconfig = {_id: 'sh1', members: &#91;\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 \n use admin\nconfig = {_id: 'sh2', members: &#91;\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\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">3.config\u8282\u70b9\u914d\u7f6e(PSS)<\/h2>\n\n\n\n<p><strong><em>1.\u76ee\u5f55\u521b\u5efa<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<p><strong><em>2.\u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<p><strong><em>3.\u542f\u52a8\u8282\u70b9\uff0c\u5e76\u914d\u7f6e\u590d\u5236\u96c6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\nuse  admin\n config = {_id: 'configReplSet', members: &#91;\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\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">4.mongos\u8282\u70b9\u914d\u7f6e<\/h2>\n\n\n\n<p><strong><em>1.\u521b\u5efa\u76ee\u5f55<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/mongodb\/38017\/conf  \/mongodb\/38017\/log <\/code><\/pre>\n\n\n\n<p><strong><em>2.\u914d\u7f6e\u6587\u4ef6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<p><strong><em>3.\u542f\u52a8mongos<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongos -f \/mongodb\/38017\/conf\/mongos.conf<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">5.\u5206\u7247\u96c6\u7fa4\u6dfb\u52a0\u8282\u70b9<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\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\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">6.\u4f7f\u7528\u5206\u7247\u96c6\u7fa4<\/h2>\n\n\n\n<p><strong><em>1.RANGE\u5206\u7247\u914d\u7f6e\u53ca\u6d4b\u8bd5<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>### RANG\u81ea\u52a8\u5206\u7247<\/strong>\nmongo --port 38017 admin\nuse admin \n###autoshard\u5e93\u5f00\u542f\u81ea\u52a8\u5206\u7247\uff1adb.runCommand( { enablesharding : \"autoshard\" } )\n\nuse autoshard\n###id\u5217\u7d22\u5f15\uff1adb.autotab.ensureIndex( { id: 1 } )\n\nuse admin\ndb.runCommand( { shardcollection : \"autoshard.autotab\",key : {id: 1} } )\n\nuse autoshard\nfor(i=1;i&lt;100000;i++){ db.autotab.insert({\"id\":i,\"name\":\"shenzheng\",\"age\":70,\"date\":new Date()}); }\ndb.autotab.stats()\n\n<strong>### zone\u65b9\u5f0f\u8fdb\u884crange\u624b\u5de5\u5b9a\u5236\u5206\u7247<\/strong>\nmongo --port 38017 admin\nuse zonedb\ndb.vast.ensureIndex( {order_id: 1 } )\n\nuse admin\ndb.runCommand( { enablesharding : \"zonedb\" } )\nsh.shardCollection(\"zonedb.vast\", {order_id: 1});\n\nsh.addShardTag(\"shard1\", \"shard00\")\nsh.addShardTag(\"shard2\", \"shard01\")\n\nsh.addTagRange( \n\"zonedb.vast\", \n{  \"order_id\" : MinKey },\n{  \"order_id\" : 500 },\"shard00\" )\n\nsh.addTagRange( \n\"zonedb.vast\",\n{\"order_id\" : 501 },\n{\"order_id\" : MaxKey},\"shard01\" )\n\nuse zonedb\nfor(i=1;i&lt;1000;i++){ db.vast.insert({\"order_id\":i,\"name\":\"shenzheng\",\"age\":70,\"date\":new Date()}); }\n\ndb.vast.getShardDistribution()\n<\/code><\/pre>\n\n\n\n<p><strong><em>2.Hash\u5206\u7247\u4f8b\u5b50<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5bf9oldboy\u5e93\u4e0b\u7684vast\u5927\u8868\u8fdb\u884chash\n\nmongo --port 38017 admin\nboy\u5e93\u5f00\u542f\u5206\u7247\u529f\u80fd\nuse admin\ndb.runCommand( { enablesharding : \"boy\" } )\n\nuse boy\ndb.vast.ensureIndex( { id: \"hashed\" } )\n\u5f00\u542f\u5206\u7247\nuse admin\nsh.shardCollection( \"boy.vast\", { id: \"hashed\" } )\n\nuse oldboy\nfor(i=1;i&lt;1000;i++){ db.vast.insert({\"id\":i,\"name\":\"shenzheng\",\"age\":70,\"date\":new Date()}); }\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">7.\u5206\u7247\u96c6\u7fa4\u7684\u67e5\u8be2\u53ca\u7ba1\u7406<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>1 \u5224\u65ad\u662f\u5426Shard\u96c6\u7fa4<\/strong>\nadmin&gt; db.runCommand({ isdbgrid : 1})\n<strong>2 \u5217\u51fa\u6240\u6709\u5206\u7247\u4fe1\u606f<\/strong>\nadmin&gt; db.runCommand({ listshards : 1})\n<strong>3 \u5217\u51fa\u5f00\u542f\u5206\u7247\u7684\u6570\u636e\u5e93<\/strong>\nadmin&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<strong>4 \u67e5\u770b\u5206\u7247\u7684\u7247\u952e<\/strong>\nconfig&gt; db.collections.find().pretty()\n{\n\t\"_id\" : \"test.vast\",\n\t\"lastmodEpoch\" : ObjectId(\"58a599f19c898bbfb818b63c\"),\n\t\"lastmod\" : ISODate(\"1970-02-19T17:02:47.296Z\"),\n\t\"dropped\" : false,\n\t\"key\" : {\n\t\t\"id\" : 1\n\t},\n\t\"unique\" : false\n}\n<strong>5 \u67e5\u770b\u5206\u7247\u7684\u8be6\u7ec6\u4fe1\u606f<\/strong>\nadmin&gt; sh.status()\n<strong>6 \u5220\u9664\u5206\u7247\u8282\u70b9\uff08\u8c28\u614e\uff09<\/strong>\n\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\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">8.balancer\u64cd\u4f5c<\/h2>\n\n\n\n<p><strong><em>1.\u4ecb\u7ecd<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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\n\n\n<p><strong><em>2.\u81ea\u5b9a\u4e49 \u81ea\u52a8\u5e73\u8861\u8fdb\u884c\u7684\u65f6\u95f4\u6bb5<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;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\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":246,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[],"_links":{"self":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/1076"}],"collection":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1076"}],"version-history":[{"count":2,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/1076\/revisions"}],"predecessor-version":[{"id":1079,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/1076\/revisions\/1079"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}