{"id":6232,"date":"2026-09-19T09:06:00","date_gmt":"2026-09-19T00:06:00","guid":{"rendered":"https:\/\/eternalsphere.net\/echoes\/?p=6232"},"modified":"2026-09-19T21:26:05","modified_gmt":"2026-09-19T12:26:05","slug":"enlivhyvmn94k8k","status":"publish","type":"post","link":"https:\/\/blog.eternalsphere.net\/index.php\/2026\/09\/19\/enlivhyvmn94k8k\/","title":{"rendered":"Rocket.Chat 7.x \u5347\u7ea7\u5230 8.5.x\uff1a\u4e00\u6b21 Docker \u4e0e MongoDB \u8054\u52a8\u8fc1\u79fb\u5b9e\u8df5"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Rocket.Chat \u4ece 7.x \u5347\u7ea7\u5230 8.x\uff0c\u770b\u8d77\u6765\u50cf\u4e00\u6b21\u666e\u901a\u7684\u5bb9\u5668\u955c\u50cf\u5347\u7ea7\uff0c\u4f46\u5728\u5b9e\u9645\u73af\u5883\u4e2d\uff0c\u771f\u6b63\u9700\u8981\u5904\u7406\u7684\u4e0d\u53ea\u662f Rocket.Chat \u672c\u8eab\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6b21\u5347\u7ea7\u540c\u65f6\u6d89\u53ca\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rocket.Chat \u8de8\u4e3b\u7248\u672c\u5347\u7ea7<\/li>\n\n\n\n<li>MongoDB \u4ece 7.0 \u7cfb\u5217\u8fc1\u79fb\u5230 8.2 \u7cfb\u5217<\/li>\n\n\n\n<li>MongoDB \u5bb9\u5668\u955c\u50cf\u4ece\u65e7\u7684\u7b2c\u4e09\u65b9\u955c\u50cf\u5207\u6362\u5230\u5b98\u65b9 Community Server \u955c\u50cf<\/li>\n\n\n\n<li>\u6570\u636e\u5377\u5e03\u5c40\u53d8\u5316<\/li>\n\n\n\n<li>Replica Set \u91cd\u65b0\u521d\u59cb\u5316<\/li>\n\n\n\n<li>\u6570\u636e\u903b\u8f91\u8fc1\u79fb\u4e0e\u5b8c\u6574\u6027\u9a8c\u8bc1<\/li>\n\n\n\n<li>Rocket.Chat \u6570\u636e\u5e93 migration<\/li>\n\n\n\n<li>Apps Engine \/ Moleculer \u542f\u52a8\u5f02\u5e38\u6392\u67e5<\/li>\n\n\n\n<li>\u6700\u7ec8\u6e05\u7406\u65e7\u6570\u636e\u5377\u3001\u4e34\u65f6\u5907\u4efd\u548c\u8fc1\u79fb\u955c\u50cf<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u4e2a\u8fc7\u7a0b\u6700\u91cd\u8981\u7684\u5e76\u4e0d\u662f\u201c\u628a\u65b0\u955c\u50cf\u8dd1\u8d77\u6765\u201d\uff0c\u800c\u662f\u4fdd\u8bc1\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4efb\u4f55\u4e00\u4e2a\u9636\u6bb5\u51fa\u73b0\u95ee\u9898\uff0c\u90fd\u80fd\u591f\u660e\u786e\u77e5\u9053\u6570\u636e\u662f\u5426\u5b89\u5168\u3001\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff0c\u4ee5\u53ca\u80fd\u5426\u56de\u9000\u3002<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u4e3a\u4ec0\u4e48\u4e0d\u80fd\u53ea\u4fee\u6539\u955c\u50cf\u7248\u672c\u7136\u540e <code>docker compose up<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e7\u73af\u5883\u91c7\u7528\u7684\u662f\u5178\u578b\u7684 Docker Compose \u90e8\u7f72\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat 7.x\n        \u2502\n        \u25bc\nMongoDB 7.0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MongoDB \u4f7f\u7528\u7684\u662f\u8f83\u65e9\u65f6\u671f\u5e38\u89c1\u7684\u7b2c\u4e09\u65b9\u5bb9\u5668\u955c\u50cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5347\u7ea7\u5230 Rocket.Chat 8.x \u540e\uff0c\u6570\u636e\u5e93\u73af\u5883\u4e5f\u9700\u8981\u540c\u6b65\u8c03\u6574\u3002\u65b0\u7684\u76ee\u6807\u7ed3\u6784\u53d8\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat 8.5.x\n        \u2502\n        \u25bc\nMongoDB Community Server 8.2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5e26\u6765\u4e86\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u95ee\u9898\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e7 MongoDB \u6570\u636e\u76ee\u5f55\u4e0d\u80fd\u7b80\u5355\u5730\u76f4\u63a5\u6302\u8f7d\u5230\u65b0\u7684 MongoDB 8.2 \u5bb9\u5668\u91cc\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MongoDB \u7684\u6570\u636e\u76ee\u5f55\u5185\u90e8\u5305\u542b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WiredTiger \u6570\u636e\u6587\u4ef6<\/li>\n\n\n\n<li>journal<\/li>\n\n\n\n<li>catalog<\/li>\n\n\n\n<li>collection metadata<\/li>\n\n\n\n<li>index metadata<\/li>\n\n\n\n<li>replica set \u72b6\u6001<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8de8\u591a\u4e2a MongoDB \u5927\u7248\u672c\u76f4\u63a5\u590d\u7528\u5e95\u5c42\u6570\u636e\u76ee\u5f55\uff0c\u98ce\u9669\u8fdc\u9ad8\u4e8e\u666e\u901a\u5bb9\u5668\u955c\u50cf\u5347\u7ea7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u8fd9\u6b21\u91c7\u7528\u7684\u4e0d\u662f\u201c\u539f\u5730\u66ff\u6362\u6570\u636e\u5e93\u955c\u50cf\u201d\uff0c\u800c\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65e7 MongoDB 7\n      \u2502\n      \u2502 mongodump\n      \u25bc\n\u903b\u8f91\u5907\u4efd\n      \u2502\n      \u25bc\n\u65b0 MongoDB 8.2\n      \u2502\n      \u2502 mongorestore\n      \u25bc\n\u65b0\u6570\u636e\u5e93<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fc1\u79fb\u7684\u662f<strong>\u903b\u8f91\u6570\u636e<\/strong>\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u8ba9 MongoDB 8.2 \u63a5\u7ba1 MongoDB 7 \u7684\u7269\u7406\u6587\u4ef6\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e8c\u3001\u5347\u7ea7\u524d\u5148\u5efa\u7acb\u53ef\u9a8c\u8bc1\u7684\u6570\u636e\u5e93\u57fa\u7ebf<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4fee\u6539\u4efb\u4f55\u4e1c\u897f\u4e4b\u524d\uff0c\u5148\u8bb0\u5f55\u6570\u636e\u5e93\u5f53\u524d\u72b6\u6001\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MongoDB \u7248\u672c\nFCV\nReplica Set \u72b6\u6001\n\u6570\u636e\u5e93\u96c6\u5408\u6570\u91cf\n\u7528\u6237\u6570\u91cf\n\u6d88\u606f\u6570\u91cf\n\u4e0a\u4f20\u6587\u4ef6\u6570\u91cf\n\u6587\u4ef6\u5757\u6570\u91cf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u6700\u91cd\u8981\u7684\u4e0d\u662f\u67d0\u4e00\u4e2a\u5177\u4f53\u6570\u5b57\uff0c\u800c\u662f\u5efa\u7acb\u4e00\u4e2a\u53ef\u4ee5\u5728\u8fc1\u79fb\u7ed3\u675f\u540e\u91cd\u65b0\u6bd4\u5bf9\u7684\u57fa\u7ebf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Before migration\n\nCollections     N\nUsers           N\nMessages        N\nUploads         N\nUpload files    N\nUpload chunks   N<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u540e\u91cd\u65b0\u6267\u884c\u76f8\u540c\u7edf\u8ba1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>before == after<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u81f3\u5c11\u80fd\u591f\u786e\u8ba4\u6838\u5fc3\u6570\u636e\u6570\u91cf\u6ca1\u6709\u56e0\u4e3a\u8fc1\u79fb\u51fa\u73b0\u660e\u663e\u4e22\u5931\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6bd4\u5355\u7eaf\u770b\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongorestore completed successfully<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u6709\u4ef7\u503c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u201crestore \u547d\u4ee4\u8fd4\u56de\u6210\u529f\u201d\u5e76\u4e0d\u7b49\u4e8e\u201c\u5e94\u7528\u6570\u636e\u4e00\u5b9a\u6b63\u786e\u201d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e09\u3001\u4f7f\u7528\u4e24\u5c42\u5907\u4efd\uff0c\u800c\u4e0d\u662f\u53ea\u4fdd\u7559\u4e00\u4e2a dump<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u8fc7\u7a0b\u4e2d\u91c7\u7528\u4e86\u4e24\u79cd\u4e0d\u540c\u7528\u9014\u7684\u4fdd\u62a4\u63aa\u65bd\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e00\u5c42\uff1a\u903b\u8f91\u5907\u4efd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u65e7\u6570\u636e\u5e93\u8fd0\u884c\u671f\u95f4\u5148\u6267\u884c\u4e00\u6b21\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongodump --archive --gzip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u68c0\u67e5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>gzip \u662f\u5426\u5b8c\u6574<\/li>\n\n\n\n<li>archive \u662f\u5426\u80fd\u591f\u88ab <code>mongorestore<\/code> \u89e3\u6790<\/li>\n\n\n\n<li>\u6587\u4ef6\u54c8\u5e0c\u662f\u5426\u7a33\u5b9a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u4e00\u4efd\u9884\u5907\u5907\u4efd\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b63\u5f0f\u8fc1\u79fb\u524d\u505c\u6b62 Rocket.Chat\uff0c\u4f7f\u6570\u636e\u5e93\u4e0d\u518d\u63a5\u6536\u5e94\u7528\u5199\u5165\uff0c\u518d\u751f\u6210\u6700\u7ec8 dump\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat stopped\nMongoDB still running\n        \u2502\n        \u25bc\nfinal mongodump<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u5f97\u5230\u7684\u662f\u4e00\u4e2a\u5e94\u7528\u9759\u6b62\u72b6\u6001\u4e0b\u7684\u4e00\u81f4\u6027\u5907\u4efd\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e8c\u5c42\uff1a\u7269\u7406\u6570\u636e\u5377\u526f\u672c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ec5\u6709 dump \u4ecd\u7136\u4e0d\u591f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u903b\u8f91\u5907\u4efd\u9002\u5408\u6570\u636e\u6062\u590d\uff0c\u4f46\u5982\u679c\u9700\u8981\u5feb\u901f\u6062\u590d\u6574\u4e2a\u65e7 MongoDB \u73af\u5883\uff0c\u7269\u7406\u6570\u636e\u5377\u66f4\u52a0\u76f4\u63a5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u5728\u65e7 MongoDB \u6b63\u5e38\u5173\u95ed\u4ee5\u540e\uff0c\u5c06\u6574\u4e2a\u65e7\u6570\u636e\u5377\u505a\u4e00\u6b21\u51b7\u590d\u5236\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Old MongoDB volume\n        \u2502\n        \u25bc\nRollback volume<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u590d\u5236\u5b8c\u6210\u540e\u4e0d\u662f\u53ea\u6bd4\u8f83\u76ee\u5f55\u5927\u5c0f\uff0c\u800c\u662f\u8fdb\u4e00\u6b65\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6587\u4ef6\u6570\u91cf\nSHA256\n\u9010\u6587\u4ef6\u4e00\u81f4\u6027<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>all regular files are byte-identical<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u70b9\u5f88\u91cd\u8981\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>du<\/code> \u663e\u793a\u7684\u7a7a\u95f4\u5927\u5c0f\u53ef\u80fd\u56e0\u4e3a\u6587\u4ef6\u7cfb\u7edf block allocation \u5b58\u5728\u5c11\u91cf\u5dee\u5f02\uff0c\u4e0d\u80fd\u5355\u72ec\u7528\u6765\u5224\u65ad\u590d\u5236\u5931\u8d25\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9010\u6587\u4ef6\u54c8\u5e0c\u4e00\u81f4\uff0c\u624d\u662f\u66f4\u53ef\u9760\u7684\u5224\u65ad\u4f9d\u636e\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u56db\u3001\u4fdd\u7559\u539f\u6570\u636e\u5377\u540d\u79f0\uff0c\u4f46\u8ba9\u5b83\u627f\u8f7d\u5168\u65b0\u7684 MongoDB 8 \u6570\u636e<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Docker volume \u672c\u8eab\u6ca1\u6709\u771f\u6b63\u7684\u201crename\u201d\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u5e0c\u671b\u5347\u7ea7\u7ed3\u675f\u540e\u4ecd\u7136\u4fdd\u6301\u539f\u6709\u7684\u6b63\u5f0f\u5377\u540d\u79f0\uff0c\u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u7684\u65b9\u5f0f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65e7\u6b63\u5f0f\u5377\n   \u2502\n   \u251c\u2500\u2500 \u51b7\u590d\u5236 \u2192 rollback volume\n   \u2502\n   \u2514\u2500\u2500 \u5220\u9664\u65e7\u6b63\u5f0f\u5377\u540d\u79f0\n                \u2502\n                \u25bc\n       Docker Compose \u521b\u5efa\u65b0\u7684\u540c\u540d\u5377\n                \u2502\n                \u25bc\n          MongoDB 8.2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u6700\u7ec8\u751f\u4ea7\u73af\u5883\u4ecd\u7136\u53ea\u6709\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongodb_data\nuploads<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0d\u4f1a\u6c38\u4e45\u7559\u4e0b\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongodb_new\nmongodb_v2\nmongodb_82\nmongodb_migrated<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u7684\u5386\u53f2\u547d\u540d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece\u957f\u671f\u7ef4\u62a4\u89d2\u5ea6\u770b\uff0c\u8fd9\u79cd\u65b9\u5f0f\u66f4\u5e72\u51c0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u671f\u95f4\uff0c\u65e7\u7269\u7406\u6570\u636e\u5219\u653e\u5728\u5355\u72ec\u7684 rollback volume \u4e2d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e94\u3001MongoDB 8.2 \u4f7f\u7528\u5168\u65b0\u7684\u6570\u636e\u76ee\u5f55\u542f\u52a8<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u7684 MongoDB \u5bb9\u5668\u4f7f\u7528\u5b98\u65b9 Community Server \u955c\u50cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u987a\u5e8f\u88ab\u62c6\u6210\u4e86\u51e0\u4e2a\u660e\u786e\u9636\u6bb5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Permission initialization\n        \u2502\n        \u25bc\nMongoDB start\n        \u2502\n        \u25bc\nHealth check\n        \u2502\n        \u25bc\nReplica Set initialization\n        \u2502\n        \u25bc\nRocket.Chat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u8bbe\u8ba1\u7684\u597d\u5904\u662f\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rocket.Chat \u4e0d\u4f1a\u5728 MongoDB \u5c1a\u672a\u5b8c\u6210\u57fa\u7840\u521d\u59cb\u5316\u65f6\u7acb\u5373\u542f\u52a8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u5e93\u9996\u5148\u5fc5\u987b\u901a\u8fc7\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.adminCommand(\"ping\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u521d\u59cb\u5316 Replica Set\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rs.initiate(...)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u540e\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PRIMARY\nhealth = 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u65f6\u624d\u8fdb\u5165\u6570\u636e\u6062\u590d\u9636\u6bb5\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u516d\u3001\u4e0d\u8981\u628a Rocket.Chat \u548c\u6570\u636e\u5e93\u8fc1\u79fb\u540c\u65f6\u8fdb\u884c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u7684 MongoDB \u542f\u52a8\u540e\uff0cRocket.Chat \u5e76\u6ca1\u6709\u7acb\u5373\u542f\u52a8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u6062\u590d\u6570\u636e\u5e93\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongorestore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6062\u590d\u5b8c\u6210\u540e\uff0c\u518d\u68c0\u67e5\u5173\u952e\u6570\u636e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Collections\nUsers\nMessages\nUploads\nUpload files\nUpload chunks<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u5168\u90e8\u548c\u8fc1\u79fb\u524d\u4e00\u81f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u8fdb\u4e00\u6b65\u6267\u884c MongoDB collection validation\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u4ec5\u9a8c\u8bc1\u666e\u901a metadata\uff0c\u8fd8\u91cd\u70b9\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users\nmessages\nsettings\nuploads\nupload metadata\nupload chunks<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u8981\u6c42\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valid: true\nerrors: &#091;]\nwarnings: &#091;]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u505a\u5230\u8fd9\u91cc\u4ee5\u540e\uff0c\u624d\u53ef\u4ee5\u8bf4\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">MongoDB \u6570\u636e\u8fc1\u79fb\u57fa\u672c\u5b8c\u6210\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0d\u662f\u5728 <code>mongorestore<\/code> \u8fd4\u56de 0 \u7684\u90a3\u4e00\u523b\u5c31\u8ba4\u4e3a\u6570\u636e\u5e93\u8fc1\u79fb\u5df2\u7ecf\u6210\u529f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e03\u3001\u518d\u8ba9 Rocket.Chat \u81ea\u5df1\u6267\u884c\u6570\u636e\u5e93 migration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">MongoDB \u6570\u636e\u6062\u590d\u5b8c\u6210\u540e\uff0c\u624d\u542f\u52a8\u65b0\u7684 Rocket.Chat 8.5.x\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rocket.Chat \u542f\u52a8\u540e\u4f1a\u6267\u884c\u81ea\u5df1\u7684\u5e94\u7528\u5c42 migration\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5347\u7ea7\u524d migration version \u4f4d\u4e8e\u65e7\u7248\u672c\u72b6\u6001\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u65b0\u7248\u672c\u4ee5\u540e\uff0cmigration version \u81ea\u52a8\u5411\u524d\u63a8\u8fdb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9700\u8981\u5173\u6ce8\u51e0\u4e2a\u5b57\u6bb5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version\nlocked\nbuildAt\nupdatedAt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u4e2d\u5c24\u5176\u91cd\u8981\u7684\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>locked: false<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c migration \u957f\u65f6\u95f4\u4fdd\u6301\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>locked: true<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c31\u610f\u5473\u7740\u5347\u7ea7\u8fc7\u7a0b\u53ef\u80fd\u6ca1\u6709\u6b63\u5e38\u7ed3\u675f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u6b21 migration \u6700\u7ec8\u5b8c\u6210\uff0c\u5e76\u6062\u590d\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>locked: false<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Rocket.Chat API \u540c\u65f6\u4e5f\u80fd\u591f\u6b63\u5e38\u8fd4\u56de\u7248\u672c\u4fe1\u606f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5230\u8fd9\u91cc\uff0c\u6570\u636e\u5e93\u5347\u7ea7\u548c Rocket.Chat schema \u5347\u7ea7\u5b9e\u9645\u4e0a\u90fd\u5df2\u7ecf\u5b8c\u6210\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u516b\u3001\u771f\u6b63\u7684\u95ee\u9898\u51fa\u73b0\u5728 Apps Engine<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Rocket.Chat \u672c\u4f53\u6210\u529f\u542f\u52a8\u540e\uff0c\u65e5\u5fd7\u5374\u6301\u7eed\u51fa\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EADDRINUSE\naddress already in use<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9519\u8bef\u6765\u81ea\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Moleculer TCP Transporter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e14\u5e76\u4e0d\u662f\u4e00\u6b21\u6027\u7684\u542f\u52a8 warning\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e5\u5fd7\u8868\u73b0\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Reconnecting...\nEADDRINUSE\nReconnecting...\nEADDRINUSE\nReconnecting...\nEADDRINUSE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u65ad\u5faa\u73af\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0e\u6b64\u540c\u65f6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat HTTP API \u6b63\u5e38\n\u5bb9\u5668\u6ca1\u6709\u91cd\u542f\nMongoDB \u6b63\u5e38\n\u6570\u636e\u5e93 migration \u5df2\u5b8c\u6210<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4f7f\u95ee\u9898\u53d8\u5f97\u975e\u5e38\u6709\u610f\u601d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u4e0d\u662f\u4f20\u7edf\u610f\u4e49\u4e0a\u7684\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7aef\u53e3\u5df2\u7ecf\u88ab\u53e6\u4e00\u4e2a Docker container \u5360\u7528<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u51b2\u7a81\u53d1\u751f\u5728 Rocket.Chat \u5bb9\u5668\u5185\u90e8\u7684 Moleculer transporter\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e5d\u3001\u4ece\u8fdb\u7a0b\u5c42\u9762\u5b9a\u4f4d\u5185\u90e8\u7aef\u53e3\u51b2\u7a81<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fdb\u4e00\u6b65\u68c0\u67e5\u5bb9\u5668\u5185\u90e8\u8fdb\u7a0b\u540e\u53d1\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node main.js\ndeno ... apps runtime<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86 Rocket.Chat \u4e3b Node.js \u8fdb\u7a0b\u4e4b\u5916\uff0c\u8fd8\u6709\u4e00\u4e2a Deno \u5b50\u8fdb\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a Deno runtime \u5bf9\u5e94\u7684\u662f\u5df2\u7ecf\u5b89\u88c5\u7684 Jitsi App\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u65f6\u68c0\u67e5\u5185\u90e8 TCP listener\uff0c\u53ef\u4ee5\u770b\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat node process\n        \u2502\n        \u2514\u2500\u2500 already listening on an internal TCP port<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46 Moleculer transporter \u968f\u540e\u53c8\u5c1d\u8bd5\u76d1\u542c\u540c\u4e00\u4e2a\u7aef\u53e3\uff0c\u4e8e\u662f\u4ea7\u751f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EADDRINUSE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u8bf4\u660e\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u51b2\u7a81\u53d1\u751f\u5728 Rocket.Chat \u81ea\u8eab\u5185\u90e8\u670d\u52a1\u751f\u547d\u5468\u671f\uff0c\u800c\u4e0d\u662f\u4e3b\u673a Docker \u7aef\u53e3\u6620\u5c04\u3002<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u3001\u4e00\u4e2a\u5bb9\u6613\u8bef\u5224\u7684\u5730\u65b9\uff1aApp \u5728 UI \u4e2d\u5df2\u7ecf\u662f Disabled<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u5f00\u59cb\u5f88\u5bb9\u6613\u6000\u7591\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Jitsi \u662f\u4e0d\u662f\u6ca1\u6709\u771f\u6b63\u5173\u95ed\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u7ba1\u7406\u754c\u9762\u660e\u786e\u663e\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Disabled<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u5e93\u8fdb\u4e00\u6b65\u68c0\u67e5\u4ee5\u540e\u53d1\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>top-level status: initialized<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Apps Engine \u65e5\u5fd7\u5219\u663e\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app:construct\napp:initialize\napp:setStatus -&gt; initialized<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ca1\u6709\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app:onEnable<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u6ca1\u6709\u8fdb\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>manually_enabled<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u8bf4\u660e App \u786e\u5b9e\u6ca1\u6709\u771f\u6b63\u5904\u4e8e\u542f\u7528\u72b6\u6001\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46 Rocket.Chat Apps Engine \u4ecd\u7136\u4f1a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>construct\ninitialize\nspawn runtime<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u8bf4\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Disabled \u4e0d\u4e00\u5b9a\u610f\u5473\u7740\u8fd9\u4e2a App \u5b8c\u5168\u4e0d\u4f1a\u53c2\u4e0e Apps Engine \u7684\u521d\u59cb\u5316\u8fc7\u7a0b\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u8fd9\u6b21\u6392\u67e5\u91cc\u5f88\u5bb9\u6613\u88ab\u5ffd\u7565\u7684\u4e00\u70b9\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u4e00\u3001\u786e\u8ba4\u4e0d\u662f Deno \u7248\u672c\u9519\u8bef<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8e Rocket.Chat Apps Engine \u73b0\u5728\u4f9d\u8d56 Deno runtime\uff0c\u56e0\u6b64\u53e6\u4e00\u4e2a\u6000\u7591\u65b9\u5411\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat \u955c\u50cf\u91cc\u7684 Deno \u7248\u672c\u662f\u5426\u4e0d\u517c\u5bb9\uff1f<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u68c0\u67e5\u540e\u53d1\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Deno \u7248\u672c\u7b26\u5408\u5f53\u524d Rocket.Chat \u955c\u50cf\u8981\u6c42\nNode.js \u7248\u672c\u4e5f\u6b63\u5e38<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Deno binary version mismatch<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u65b9\u5411\u88ab\u6392\u9664\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u95ee\u9898\u7ee7\u7eed\u6307\u5411\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App runtime\n+\nMoleculer transporter initialization<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u4e8c\u3001\u6700\u7ec8\u901a\u8fc7\u5378\u8f7d Jitsi \u505a\u56e0\u679c\u9a8c\u8bc1<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ec5\u4ec5\u201c\u6000\u7591\u67d0\u4e2a App\u201d\u8fd8\u4e0d\u591f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u76f4\u63a5\u7684\u9a8c\u8bc1\u65b9\u6cd5\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5378\u8f7d App\n\u2192\n\u91cd\u542f Rocket.Chat\n\u2192\n\u91cd\u65b0\u89c2\u5bdf\u8fdb\u7a0b\u548c\u65e5\u5fd7<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5378\u8f7d\u4ee5\u540e\u518d\u6b21\u68c0\u67e5\u6570\u636e\u5e93\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App record: &#091;]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u68c0\u67e5\u5bb9\u5668\u8fdb\u7a0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node main.js<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e4b\u524d\u7684 Deno Apps runtime \u5df2\u7ecf\u5b8c\u5168\u6d88\u5931\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u89c2\u5bdf\u65b0\u7684 Rocket.Chat \u542f\u52a8\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u7684 Moleculer broker\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Transporter: TcpTransporter\nConnecting to the transporter\nTCP server is listening\nTCP Transporter started<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5168\u90e8\u6b63\u5e38\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u5173\u952e\u7684\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EADDRINUSE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u518d\u51fa\u73b0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u6b21\u8fc7\u6ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WARN\nERROR\nFATAL\nEADDRINUSE\nMongoServerError\nMongoNetworkError<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u4e3a\u7a7a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6784\u6210\u4e86\u4e00\u6761\u5f88\u5b8c\u6574\u7684\u6392\u67e5\u94fe\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Jitsi installed\n      \u2502\n      \u25bc\nDeno runtime exists\n      \u2502\n      \u25bc\nMoleculer EADDRINUSE loops\n      \u2502\n      \u25bc\nUninstall Jitsi\n      \u2502\n      \u25bc\nDeno runtime disappears\n      \u2502\n      \u25bc\nRocket.Chat restart\n      \u2502\n      \u25bc\nTCP transporter starts normally\n      \u2502\n      \u25bc\nEADDRINUSE disappears<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5df2\u7ecf\u80fd\u591f\u975e\u5e38\u6709\u529b\u5730\u8bf4\u660e\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8fd9\u6b21\u5f02\u5e38\u4e0e Jitsi App \/ Apps runtime \u521d\u59cb\u5316\u8fc7\u7a0b\u9ad8\u5ea6\u76f8\u5173\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u4ecd\u7136\u4e0d\u80fd\u4ec5\u51ed\u8fd9\u4e00\u70b9\u4e0b\u7ed3\u8bba\u8bf4\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u67d0\u4e2a Jitsi \u7248\u672c\u672c\u8eab\u4e00\u5b9a\u5b58\u5728\u7f3a\u9677\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u8fd8\u5b58\u5728 Rocket.Chat\u3001Apps Engine\u3001Moleculer transporter \u4e0e App runtime \u591a\u5c42\u4ea4\u4e92\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u51c6\u786e\u7684\u63cf\u8ff0\u5e94\u8be5\u662f\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5f53\u524d\u7248\u672c\u7ec4\u5408\u4e0b\uff0c\u5b89\u88c5\u8be5 App \u4f1a\u89e6\u53d1 Rocket.Chat Apps runtime \u4e0e Moleculer TCP transporter \u7684\u5f02\u5e38\u884c\u4e3a\uff1b\u5378\u8f7d\u540e\u95ee\u9898\u4e0d\u518d\u590d\u73b0\u3002<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u4e09\u3001\u8fd8\u6709\u4e00\u4e2a\u6ca1\u6709\u5b9e\u9645\u9020\u6210\u6545\u969c\u7684\u7d22\u5f15\u8b66\u544a<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b21\u542f\u52a8 Rocket.Chat 8.x \u65f6\u8fd8\u51fa\u73b0\u8fc7\u4e00\u4e2a MongoDB index warning\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rocket.Chat \u5e0c\u671b\u521b\u5efa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{ rid: 1, sparse: true }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u6570\u636e\u5e93\u91cc\u5df2\u7ecf\u5b58\u5728\u540c\u540d\u7d22\u5f15\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{ rid: 1 }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MongoDB \u56e0\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>index name is the same\noptions are different<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u62d2\u7edd\u91cd\u65b0\u521b\u5efa\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u4e00\u4e2a\u503c\u5f97\u8bb0\u5f55\u7684\u95ee\u9898\uff0c\u4f46\u5f53\u65f6\u6ca1\u6709\u7acb\u5373\u5220\u9664\u6216\u91cd\u5efa\u7d22\u5f15\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u56e0\u5f88\u7b80\u5355\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6570\u636e\u5e93\u6b63\u5e38\nmigration \u6b63\u5e38\nAPI \u6b63\u5e38\n\u5e94\u7528\u6b63\u5e38\n\u6570\u636e\u9a8c\u8bc1\u6b63\u5e38<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u6ca1\u6709\u786e\u8ba4 Rocket.Chat \u5b98\u65b9\u9884\u671f\u4e4b\u524d\uff0c\u76f4\u63a5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dropIndex(...)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c5e\u4e8e\u4e0d\u5fc5\u8981\u7684\u6570\u636e\u7ed3\u6784\u4fee\u6539\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u7eed\u5e72\u51c0\u91cd\u542f\u4ee5\u540e\uff0c\u8fd9\u4e2a warning \u4e5f\u6ca1\u6709\u518d\u6b21\u51fa\u73b0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u6ca1\u6709\u4e3a\u4e86\u201c\u8ba9\u65e5\u5fd7\u770b\u8d77\u6765\u6f02\u4eae\u201d\u800c\u4e3b\u52a8\u4fee\u6539\u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u4e00\u4e2a\u5f88\u91cd\u8981\u7684\u8fd0\u7ef4\u539f\u5219\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Warning \u4e0d\u7b49\u4e8e\u5fc5\u987b\u7acb\u523b\u4fee\u590d\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u786e\u8ba4\u5b83\u662f\u5426\u771f\u7684\u9020\u6210\u5b9e\u9645\u6545\u969c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u56db\u3001\u4e0d\u8981\u5728\u95ee\u9898\u89e3\u51b3\u540e\u957f\u671f\u4fdd\u7559\u8fc1\u79fb\u5783\u573e<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\u7cfb\u7edf\u5b8c\u5168\u6b63\u5e38\u540e\uff0c\u8fc1\u79fb\u671f\u95f4\u7684\u4e34\u65f6\u8d44\u4ea7\u88ab\u7acb\u5373\u6e05\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5305\u62ec\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65e7 MongoDB rollback volume\n\u4e34\u65f6 mongodump archive\n\u6700\u7ec8\u8fc1\u79fb archive\n\u4e34\u65f6\u590d\u5236\u5de5\u5177\u955c\u50cf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8 Docker volume \u53ea\u4fdd\u7559\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MongoDB production volume\nRocket.Chat uploads volume<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u6b63\u5f0f\u7684 Compose \u5386\u53f2\u914d\u7f6e\u5907\u4efd\u7ee7\u7eed\u4fdd\u7559\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u9700\u8981\u533a\u5206\u4e24\u7c7b\u5907\u4efd\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u957f\u671f\u914d\u7f6e\u5386\u53f2<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compose.yml.&lt;timestamp&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c5e\u4e8e\u914d\u7f6e\u53d8\u66f4\u8bb0\u5f55\uff0c\u53ef\u4ee5\u957f\u671f\u4fdd\u5b58\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e34\u65f6\u8fc1\u79fb\u8d44\u4ea7<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>migration dump\nrollback volume\ntemporary copy image<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ea\u7528\u4e8e\u4e00\u6b21\u8fc1\u79fb\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\u5347\u7ea7\u5df2\u7ecf\u6210\u529f\u4ee5\u540e\uff0c\u5e94\u5f53\u53ca\u65f6\u5220\u9664\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5426\u5219\u51e0\u4e2a\u6708\u4e4b\u540e\uff0c\u5f88\u5bb9\u6613\u51fa\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u8fd9\u4e2a 10 GB volume \u662f\u4ec0\u4e48\uff1f\n\u8fd9\u4e2a dump \u8fd8\u80fd\u4e0d\u80fd\u5220\uff1f\n\u8fd9\u662f\u751f\u4ea7\u6570\u636e\u8fd8\u662f\u65e7\u6570\u636e\uff1f<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u5b8c\u6210\u4ee5\u540e\u9a6c\u4e0a\u6e05\u7406\uff0c\u53cd\u800c\u66f4\u52a0\u5b89\u5168\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u4e94\u3001\u8fd9\u6b21\u5347\u7ea7\u771f\u6b63\u91cd\u8981\u7684\u4e0d\u662f\u547d\u4ee4\uff0c\u800c\u662f\u987a\u5e8f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u4e2a\u8fc7\u7a0b\u6700\u7ec8\u53ef\u4ee5\u538b\u7f29\u6210\u4e0b\u9762\u8fd9\u6761\u94fe\u8def\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65e7\u73af\u5883\u9a8c\u8bc1\n    \u2502\n    \u25bc\n\u5efa\u7acb\u6570\u636e\u57fa\u7ebf\n    \u2502\n    \u25bc\n\u5728\u7ebf\u903b\u8f91\u5907\u4efd\n    \u2502\n    \u25bc\n\u505c\u6b62 Rocket.Chat\n    \u2502\n    \u25bc\n\u6700\u7ec8\u4e00\u81f4\u6027 dump\n    \u2502\n    \u25bc\n\u505c\u6b62 MongoDB\n    \u2502\n    \u25bc\n\u51b7\u590d\u5236\u65e7\u6570\u636e\u5377\n    \u2502\n    \u25bc\n\u521b\u5efa\u5168\u65b0 MongoDB 8 \u6570\u636e\u5377\n    \u2502\n    \u25bc\n\u542f\u52a8 MongoDB\n    \u2502\n    \u25bc\n\u521d\u59cb\u5316 Replica Set\n    \u2502\n    \u25bc\nmongorestore\n    \u2502\n    \u25bc\n\u6570\u636e\u6570\u91cf\u6bd4\u5bf9\n    \u2502\n    \u25bc\ncollection validation\n    \u2502\n    \u25bc\n\u542f\u52a8 Rocket.Chat 8\n    \u2502\n    \u25bc\nRocket.Chat migration\n    \u2502\n    \u25bc\nAPI \u9a8c\u8bc1\n    \u2502\n    \u25bc\n\u65e5\u5fd7\u5ba1\u8ba1\n    \u2502\n    \u25bc\nApps Engine \u5f02\u5e38\u6392\u67e5\n    \u2502\n    \u25bc\n\u5378\u8f7d\u95ee\u9898 App\n    \u2502\n    \u25bc\n\u518d\u6b21\u5e72\u51c0\u542f\u52a8\n    \u2502\n    \u25bc\n\u6700\u7ec8\u65e5\u5fd7\u5ba1\u8ba1\n    \u2502\n    \u25bc\n\u5220\u9664\u4e34\u65f6\u56de\u6eda\u8d44\u4ea7<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u987a\u5e8f\u6700\u5927\u7684\u4ef7\u503c\u662f\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6bcf\u4e00\u6b65\u53ea\u6709\u4e00\u4e2a\u4e3b\u8981\u53d8\u91cf\u53d1\u751f\u53d8\u5316\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c MongoDB restore \u4ee5\u540e\u6570\u636e\u4e0d\u5bf9\uff0c\u95ee\u9898\u5c31\u5728\u6570\u636e\u5e93\u8fc1\u79fb\u9636\u6bb5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6570\u636e\u5e93\u5b8c\u5168\u6b63\u5e38\uff0c\u4f46 Rocket.Chat migration \u5931\u8d25\uff0c\u95ee\u9898\u5c31\u5728\u5e94\u7528\u5347\u7ea7\u9636\u6bb5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c Rocket.Chat \u548c\u6570\u636e\u5e93\u90fd\u6b63\u5e38\uff0c\u4f46\u65e5\u5fd7\u51fa\u73b0 runtime \u9519\u8bef\uff0c\u90a3\u4e48\u518d\u53bb\u67e5 Apps Engine\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u5c31\u4e0d\u4f1a\u628a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MongoDB\nRocket.Chat\nDocker\nReplica Set\nApps Engine\nJitsi\nMoleculer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u516d\u4e03\u4e2a\u5b8c\u5168\u4e0d\u540c\u7684\u53d8\u91cf\u6df7\u5728\u4e00\u8d77\u731c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5341\u516d\u3001\u51e0\u4e2a\u503c\u5f97\u957f\u671f\u4fdd\u7559\u7684\u7ecf\u9a8c<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u8de8\u6570\u636e\u5e93\u5927\u7248\u672c\u8fc1\u79fb\uff0c\u4f18\u5148\u903b\u8f91\u8fc1\u79fb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u5e95\u5c42\u5b58\u50a8\u683c\u5f0f\u5df2\u7ecf\u8de8\u8d8a\u591a\u4e2a\u4e3b\u7248\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mongodump\nmongorestore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u5e38\u6bd4\u76f4\u63a5\u590d\u7528\u7269\u7406\u6570\u636e\u76ee\u5f55\u66f4\u5bb9\u6613\u9a8c\u8bc1\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u201c\u80fd\u542f\u52a8\u201d\u8fdc\u8fdc\u4e0d\u7b49\u4e8e\u201c\u5347\u7ea7\u5b8c\u6210\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u81f3\u5c11\u5e94\u8be5\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>container running\ndatabase PRIMARY\nmigration unlocked\nAPI available\ndata counts match\ncollection validation passes\nlogs clean<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u6570\u636e\u8fc1\u79fb\u8981\u540c\u65f6\u62e5\u6709\u903b\u8f91\u56de\u6eda\u548c\u7269\u7406\u56de\u6eda<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u903b\u8f91 dump \u9002\u5408\u6062\u590d\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7269\u7406 volume \u526f\u672c\u9002\u5408\u5feb\u901f\u6062\u590d\u6574\u4e2a\u65e7\u73af\u5883\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e24\u8005\u7528\u9014\u4e0d\u540c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u4e0d\u8981\u770b\u5230 warning \u5c31\u7acb\u5373\u4fee\u6539\u6570\u636e\u5e93<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\u7d22\u5f15 warning\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6570\u636e\u6b63\u5e38\nmigration \u6b63\u5e38\n\u4e1a\u52a1\u6b63\u5e38<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u8c03\u67e5\u539f\u56e0\uff0c\u518d\u51b3\u5b9a\u662f\u5426\u4fee\u6539\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u5e93 schema \u4e0d\u5e94\u8be5\u6210\u4e3a\u201c\u6e05\u7406\u65e5\u5fd7\u201d\u7684\u727a\u7272\u54c1\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">5. Disabled App \u4ecd\u7136\u53ef\u80fd\u53c2\u4e0e runtime \u521d\u59cb\u5316<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u8fd9\u6b21\u6700\u503c\u5f97\u6ce8\u610f\u7684\u73b0\u8c61\u4e4b\u4e00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apps Engine \u4e2d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Disabled<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u4e00\u5b9a\u7b49\u4ef7\u4e8e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5b8c\u5168\u4e0d\u4f1a construct \/ initialize\n\u5b8c\u5168\u4e0d\u4f1a\u542f\u52a8 runtime<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u6392\u67e5 Apps Engine \u95ee\u9898\u65f6\u4e0d\u80fd\u53ea\u770b\u7ba1\u7406\u754c\u9762\u7684\u5f00\u5173\u72b6\u6001\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">6. \u6392\u67e5\u5bb9\u5668\u7aef\u53e3\u51b2\u7a81\u65f6\uff0c\u8981\u533a\u5206\u4e09\u5c42<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Host port\nDocker network port\nApplication internal port<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u6b21\u51b2\u7a81\u5c5e\u4e8e\u7b2c\u4e09\u79cd\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rocket.Chat container internal TCP transporter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u4fee\u6539 Docker <code>ports:<\/code> \u6620\u5c04\u5b8c\u5168\u6ca1\u6709\u610f\u4e49\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">7. \u6700\u597d\u7684\u5347\u7ea7\u65e5\u5fd7\u5e94\u8be5\u80fd\u591f\u8bc1\u660e\u201c\u6ca1\u6709\u95ee\u9898\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u5b8c\u6210\u4ee5\u540e\uff0c\u4e0d\u53ea\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6709\u6ca1\u6709\u660e\u663e ERROR<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u5e94\u4e3b\u52a8\u8fc7\u6ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WARN\nERROR\nFATAL\nEADDRINUSE\nexception\nfailed\nMongoServerError\nMongoNetworkError<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u5f97\u5230\u7a7a\u8f93\u51fa\uff0c\u6bd4\u201c\u9875\u9762\u4f3c\u4e4e\u80fd\u6253\u5f00\u201d\u66f4\u6709\u8bf4\u670d\u529b\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">\u7ed3\u8bed<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u6b21 Rocket.Chat \u8de8\u4e3b\u7248\u672c\u5347\u7ea7\uff0c\u8868\u9762\u4e0a\u53ea\u662f\u66f4\u6362\u4e24\u4e2a Docker image\uff0c\u5b9e\u9645\u6d89\u53ca\u7684\u5374\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5e94\u7528\n\u6570\u636e\u5e93\n\u6570\u636e\u683c\u5f0f\nReplica Set\n\u6570\u636e\u5377\n\u6570\u636e\u5e93 migration\nApps runtime\n\u5185\u90e8 service broker\n\u56de\u6eda\u7b56\u7565<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u771f\u6b63\u53ef\u9760\u7684\u5347\u7ea7\u65b9\u5f0f\uff0c\u4e0d\u662f\u8ffd\u6c42\u6700\u5c11\u7684\u547d\u4ee4\uff0c\u800c\u662f\u8ba9\u6bcf\u4e00\u4e2a\u9636\u6bb5\u90fd\u80fd\u591f\u56de\u7b54\u4e09\u4e2a\u95ee\u9898\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u73b0\u5728\u7684\u6570\u636e\u662f\u5426\u5b8c\u6574\uff1f\n\u5f53\u524d\u5f02\u5e38\u5c5e\u4e8e\u54ea\u4e00\u5c42\uff1f\n\u5982\u679c\u5931\u8d25\uff0c\u80fd\u5426\u660e\u786e\u56de\u5230\u4e0a\u4e00\u4e2a\u7a33\u5b9a\u72b6\u6001\uff1f<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u7cfb\u7edf\u80fd\u591f\u6b63\u5e38\u8fd0\u884c\u56fa\u7136\u91cd\u8981\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u66f4\u91cd\u8981\u7684\u662f\uff0c\u5728\u6574\u4e2a\u5347\u7ea7\u8fc7\u7a0b\u4e2d\uff0c\u59cb\u7ec8\u77e5\u9053\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u54ea\u4e9b\u6570\u636e\u5df2\u7ecf\u9a8c\u8bc1\uff0c\u54ea\u4e9b\u7ec4\u4ef6\u5df2\u7ecf\u6392\u9664\uff0c\u54ea\u4e9b\u5f02\u5e38\u662f\u771f\u6b63\u7684\u95ee\u9898\uff0c\u4ee5\u53ca\u4e3a\u4ec0\u4e48\u53ef\u4ee5\u5b89\u5168\u5730\u8fdb\u5165\u4e0b\u4e00\u6b65\u3002<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Rocket.Chat \u4ece 7.x \u5347\u7ea7\u5230 8.x\uff0c\u770b\u8d77\u6765\u50cf\u4e00\u6b21\u666e\u901a\u7684\u5bb9\u5668\u955c\u50cf\u5347\u7ea7\uff0c\u4f46\u5728\u5b9e\u9645\u73af\u5883\u4e2d\uff0c\u771f\u6b63\u9700\u8981\u5904\u7406\u7684\u4e0d\u53ea\u662f Rocket.Chat \u672c\u8eab\u3002 \u8fd9\u6b21\u5347\u7ea7\u540c\u65f6\u6d89\u53ca\uff1a \u6574\u4e2a\u8fc7\u7a0b\u6700\u91cd\u8981\u7684\u5e76\u4e0d\u662f\u201c\u628a\u65b0\u955c\u50cf\u8dd1\u8d77\u6765\u201d\uff0c\u800c\u662f\u4fdd\u8bc1\uff1a \u4efb\u4f55\u4e00\u4e2a\u9636\u6bb5\u51fa\u73b0\u95ee\u9898\uff0c\u90fd\u80fd\u591f\u660e\u786e\u77e5\u9053\u6570\u636e\u662f\u5426\u5b89\u5168\u3001\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff0c\u4ee5\u53ca\u80fd\u5426\u56de\u9000\u3002 \u4e00\u3001\u4e3a\u4ec0\u4e48\u4e0d\u80fd\u53ea\u4fee\u6539\u955c\u50cf\u7248\u672c\u7136\u540e docker compose up \u65e7\u73af\u5883\u91c7\u7528\u7684\u662f\u5178\u578b\u7684 Docker Compose \u90e8\u7f72\uff1a MongoDB \u4f7f\u7528\u7684\u662f\u8f83\u65e9\u65f6\u671f\u5e38\u89c1\u7684\u7b2c\u4e09\u65b9\u5bb9\u5668\u955c\u50cf\u3002 \u5347\u7ea7\u5230 Rocket.Chat 8.x \u540e\uff0c\u6570\u636e\u5e93\u73af\u5883\u4e5f\u9700\u8981\u540c\u6b65\u8c03\u6574\u3002\u65b0\u7684\u76ee\u6807\u7ed3\u6784\u53d8\u6210\uff1a \u8fd9\u5e26\u6765\u4e86\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u95ee\u9898\uff1a \u65e7 MongoDB \u6570\u636e\u76ee\u5f55\u4e0d\u80fd\u7b80\u5355\u5730\u76f4\u63a5\u6302\u8f7d\u5230\u65b0\u7684 MongoDB 8.2 \u5bb9\u5668\u91cc\u3002 MongoDB \u7684\u6570\u636e\u76ee\u5f55\u5185\u90e8\u5305\u542b\uff1a \u8de8\u591a\u4e2a MongoDB \u5927\u7248\u672c\u76f4\u63a5\u590d\u7528\u5e95\u5c42\u6570\u636e\u76ee\u5f55\uff0c\u98ce\u9669\u8fdc\u9ad8\u4e8e\u666e\u901a\u5bb9\u5668\u955c\u50cf\u5347\u7ea7\u3002 \u56e0\u6b64\u8fd9\u6b21\u91c7\u7528\u7684\u4e0d\u662f\u201c\u539f\u5730\u66ff\u6362\u6570\u636e\u5e93\u955c\u50cf\u201d\uff0c\u800c\u662f\uff1a \u4e5f\u5c31\u662f\u8bf4\uff0c\u8fc1\u79fb\u7684\u662f\u903b\u8f91\u6570\u636e\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u8ba9 MongoDB 8.2 \u63a5\u7ba1 MongoDB 7 \u7684\u7269\u7406\u6587\u4ef6\u3002 \u4e8c\u3001\u5347\u7ea7\u524d\u5148\u5efa\u7acb\u53ef\u9a8c\u8bc1\u7684\u6570\u636e\u5e93\u57fa\u7ebf \u5728\u4fee\u6539\u4efb\u4f55\u4e1c\u897f\u4e4b\u524d\uff0c\u5148\u8bb0\u5f55\u6570\u636e\u5e93\u5f53\u524d\u72b6\u6001\u3002 \u4f8b\u5982\u68c0\u67e5\uff1a \u8fd9\u91cc\u6700\u91cd\u8981\u7684\u4e0d\u662f\u67d0\u4e00\u4e2a\u5177\u4f53\u6570\u5b57\uff0c\u800c\u662f\u5efa\u7acb\u4e00\u4e2a\u53ef\u4ee5\u5728\u8fc1\u79fb\u7ed3\u675f\u540e\u91cd\u65b0\u6bd4\u5bf9\u7684\u57fa\u7ebf\u3002 \u4f8b\u5982\uff1a \u8fc1\u79fb\u540e\u91cd\u65b0\u6267\u884c\u76f8\u540c\u7edf\u8ba1\u3002 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-6232","post","type-post","status-publish","format-standard","hentry","category-ayo0bcjn5seq2"],"_links":{"self":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/comments?post=6232"}],"version-history":[{"count":1,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6232\/revisions"}],"predecessor-version":[{"id":6233,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6232\/revisions\/6233"}],"wp:attachment":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/media?parent=6232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/categories?post=6232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/tags?post=6232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}