1.1 MongoDB的常用命令

1.1.1 导出工具mongoexport

Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。

   该命令的参数如下:

<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库宿主机的</span><span lang="EN-US">IP</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的用户名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的密码</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明</span><span lang="EN-US">collection</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明要导出那些列</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明到要导出的文件名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明导出数据的过滤条件</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指定文件类型</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">验证数据的名称</span>
  </p>
</td>

mongoexport备份实践

备份app库下的vast集合

导出CSV格式的数据

1.1.2 导入工具mongoimport

  Mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式数据。

该命令的参数如下:   

<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库宿主机的</span><span lang="EN-US">IP</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的用户名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的密码</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明</span><span lang="EN-US">collection</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明要导出那些列</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明到要导出的文件名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明导出数据的过滤条件</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">插入之前先删除原有的</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明第一行是列名,不需要导入。</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">同时运行的插入操作数(默认为</span><span lang="EN-US">1</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">),并行</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">验证数据的名称</span>
  </p>
</td>

mongoimport****恢复实践

将之前恢复的CSV格式数据导入

1.1.3 【实验】mysql数据迁移至mongodb数据库

    mysql相关的参考文档:http://www.cnblogs.com/clsn/category/1131345.html

将mysql数据库中的mysql下的user表导出。

命令说明:

查看导出内容

在mongodb中导入数据

   查看导入的内容

1.2 mongodump/mongorestore实践

1.2.1 mongodump备份工具

  mongodump的参数与mongoexport的参数基本一致 

<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库宿主机的</span><span lang="EN-US">IP</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的用户名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的密码</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明</span><span lang="EN-US">collection</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明到要导出的文件名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明导出数据的过滤条件</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">验证数据的名称</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">备份时压缩</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span lang="EN-US">use oplog for taking a point-in-time snapshot</span>
  </p>
</td>

mongodump****参数实践

备份test库

备份test库下的vast集合

压缩备份库

压缩备份单表

1.2.2 mongorestore恢复实践

  mongorestore与mongoimport参数类似 

<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库宿主机的</span><span lang="EN-US">IP</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的用户名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的密码</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明数据库的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明</span><span lang="EN-US">collection</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">的名字</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明到要导出的文件名</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">指明导出数据的过滤条件</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">验证数据的名称</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">备份时压缩</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span lang="EN-US">use oplog for taking a point-in-time snapshot</span>
  </p>
</td>
<td style="width: 59.36%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="59%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">恢复的时候把之前的集合</span><span lang="EN-US">drop</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">掉</span>
  </p>
</td>

全库备份中恢复单库(基于之前的全库备份)

恢复test库

恢复test库下的vast集合

–drop参数实践恢复

1.2.3 mongoexport/mongoimport与mongodump/mongorestore的对比

 

1.3 MongoDB中的oplog

1.3.1 什么是oplog

  MongoDB 的Replication是通过一个日志来存储写操作的,这个日志就叫做oplog。

  在默认情况下,oplog分配的是5%的空闲磁盘空间。通常而言,这是一种合理的设置。可以通过mongod –oplogSize来改变oplog的日志大小。

**  oplog**是capped collection,因为oplog的特点(不能太多把磁盘填满了,固定大小)需要,MongoDB才发明了capped collection(the oplog is actually the reason capped collections were invented). 定值大小的集合,oplogSizeMB: 2048,oplog是具有幂等性,执行过后的不会反复执行。

**  值得注意的是,oplog**为replica set或者master/slave模式专用(standalone模式运行mongodb并不推荐)。

oplog的位置:

<p class="a1" style="color: #000000;">
  master/slave 架构下:local.oplog.$main;
</p>

<p class="a1">
  &nbsp;
</p>

<p class="a1" style="color: #000000;">
  replica sets 架构下:local.oplog.rs
</p>

参数说明

  oplog 官方说明https://docs.mongodb.com/manual/core/replica-set-oplog/

  简单地说,在replica set中oplog是一个定容集合(capped collection),它的默认大小是磁盘空间的5%(可以通过–oplogSizeMB参数修改),位于local库的db.oplog.rs,有兴趣可以看看里面到底有些什么内容。

  其中记录的是整个mongod实例一段时间内数据库的所有变更(插入/更新/删除)操作。当空间用完时新记录自动覆盖最老的记录。

  所以从时间轴上看,oplog的覆盖范围大概是这样的:

  其覆盖范围被称作oplog时间窗口。需要注意的是,因为oplog是一个定容集合,所以时间窗口能覆盖的范围会因为你单位时间内的更新次数不同而变化。想要查看当前的oplog时间窗口预计值.

  oplog有一个非常重要的特性——幂等性(idempotent。即对一个数据集合,使用oplog中记录的操作重放时,无论被重放多少次,其结果会是一样的。

  举例来说,如果oplog中记录的是一个插入操作,并不会因为你重放了两次,数据库中就得到两条相同的记录这是一个很重要的特性.

1.3.2 oplog.bson作用

与oplog相关的参数

<td style="width: 70.2%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" valign="top" width="70%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 70.2%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" valign="top" width="70%">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">重放</span><span lang="EN-US">oplog.bson</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">中的操作内容</span>
  </p>
</td>
<td style="width: 70.2%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" valign="top" width="70%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">与</span><span lang="EN-US">--oplogReplay</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">一起使用时,可以限制重放到的时间点</span>
  </p>
</td>

  首先要明白的一个问题是数据之间互相有依赖性,比如集合A中存放了订单,集合B中存放了订单的所有明细,那么只有一个订单有完整的明细时才是正确的状态。

  假设在任意一个时间点,A和B集合的数据都是完整对应并且有意义的(对非关系型数据库要做到这点并不容易,且对于MongoDB来说这样的数据结构并非合理。但此处我们假设这个条件成立),那么如果A处于时间点x,而B处于x之后的一个时间点y时,可以想象A和B中的数据极有可能不对应而失去意义。

  mongodump的进行过程中并不会把数据库锁死以保证整个库冻结在一个固定的时间点,这在业务上常常是不允许的。所以就有了dump的最终结果中A集合是10点整的状态,而B集合则是10点零1分的状态这种情况。

  这样的备份即使恢复回去,可以想象得到的结果恐怕意义有限。

  那么上面这个oplog.bson的意义就在这里体现出来了。如果在dump数据的基础上,再重做一遍oplog中记录的所有操作,这时的数据就可以代表dump结束时那个时间点(point-in-time)的数据库状态。

1.3.3 【模拟】mongodump使用

首先我们模拟一个不断有插入操作的集合foo,

       因为整个实例的变更操作都会集中在local库中的oplog.rs集合中。

根据上面所说,从dump开始的时间系统将记录所有的oplog到oplog.bson中,所以我们得到这些文件:

查看oplog.bson中第一条和最后一条内容

  使用mongorestore来恢复

  注意黄字体,第一句表示clsn.clsn1集合中恢复了3165个文档;第二句表示重放了oplog中的所有操作。所以理论上clsn1应该有16857个文档(3165个来自clsn.bson,剩下的来自oplog.bson)。验证一下:

1.3.4 从别处而来的oplog

oplog有两种来源:

<p class="a">
  &nbsp;
</p>

<p class="a" style="color: #000000;">
  2、从别处而来,除了--oplog之外,人为获取的oplog
</p>

例如:

  事实上replica set正是依赖oplog的重放机制在工作。当secondary第一次加入replica set时做的initial sync就相当于是在做mongodump,此后只需要不断地同步和重放oplog.rs中的数据,就达到了secondary与primary同步的目的。

  既然oplog一直都在oplog.rs中存在,我们为什么还需要在mongodump时指定–oplog呢?需要的时候从oplog.rs中拿不就完了吗?答案是肯定的,你确实可以只dump数据,不需要oplog。

在需要的时候可以再从oplog.rs中取。但前提是oplog时间窗口必须能够覆盖dump的开始时间。

及时点恢复场景模拟

模拟生产环境

   插入数据的同时备份

备份oplog.rs文件

   恢复之前备份的数据

   截取oplog,找到发生误删除的时间点

   复制oplog到备份目录

   进行恢复,添加之前找到的误删除的点(limt)

1.3.5 mongodb的备份准则

只针对replica或master/slave,满足这些准则MongoDB就可以进行point-in-time恢复操作:

<ol style="color: #000000;">
  <li>
    任意两次数据备份的时间间隔(第一次备份开始到第二次备份结束)不能超过oplog时间窗口覆盖范围。
  </li>
  <li>
    在上次数据备份的基础上,在oplog时间窗口没有滑出上次备份结束的时间点前进行完整的oplog备份。请充分考虑oplog备份需要的时间,权衡服务器空间情况确定oplog备份间隔。
  </li>
</ol>

实际应用中的注意事项:

 

分片集群的备份注意事项

<p class="a" style="color: #000000;">
    (1)configserver
</p>

<p class="a" style="color: #000000;">
    (2)每一个shard节点
</p>

<p class="a" style="color: #000000;">
  2、备份需要注意什么?
</p>

<p class="a" style="color: #000000;">
    (1)元数据和真实数据要有对等性(blancer迁移的问题,会造成config和shard备份不一致)
</p>

<p class="a">
  &nbsp;
</p>

<p class="a" style="color: #000000;">
    (2)不同部分备份结束时间点不一样,恢复出来的数据就是有问题的。
</p>

1.4 MongoDB监控

为什么要监控?

监控什么?

1.4.1 MongoDB集群监控方式

  通过比对前后快照进行性能分析

显示信息说明:

1.4.2 mongostat

  实时数据库状态,读写、加锁、索引命中、缺页中断、读写等待队列等情况。

  每秒刷新一次状态值,并能提供良好的可读性,通过这些参数可以观察到MongoDB系统整体性能情况。

参数说明: 

<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1.5pt; border-bottom-color: #666666; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 1;">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">参数说明</span></strong>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">每秒插入量</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">每秒查询量</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">每秒更新量</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">每秒删除量</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">当前连接数</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">客户端查询排队长度(读</span><span lang="EN-US">|</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">写)最好为</span><span lang="EN-US"></span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">,如果有堆积,数据库处理慢。</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; background: #cccccc; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">活跃客户端数量(读</span><span lang="EN-US">|</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">写)</span>
  </p>
</td>
<td style="width: 85.12%; border-top: none; border-right: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #666666; padding: 0cm 5.4pt;" width="85%">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">当前时间</span>
  </p>
</td>

mongotop命令说明:

                                           ns    total    read    write    </span>2018-01-08T17:32:57+08:00<span style="color: #000000;">
                           admin.system.roles      0ms     0ms      0ms                             
                           admin.system.users      0ms     0ms      0ms                             
                         admin.system.version      0ms     0ms      0ms                             
                                     app.user      0ms     0ms      0ms                             
         automationcore.automation.job.status      0ms     0ms      0ms                             
             automationcore.config.automation      0ms     0ms      0ms                             
    automationcore.config.automationTemplates      0ms     0ms      0ms                             

automationcore.config.automationTemplates_archive 0ms 0ms 0ms
automationcore.config.automation_archive 0ms 0ms 0ms
automationstatus.lastAgentStatus 0ms 0ms 0ms

mongotop重要指标

1.4.3 db级别命令

  用于查看长时间运行进程。

  通过(执行时长、操作、锁、等待锁时长)等条件过滤。

  如果发现一个操作太长,把数据库卡死的话,可以用这个命令杀死他:> db.killOp(608605)

  打开profiling:

<p class="a" style="color: #000000;">
  1:保存慢查询日志
</p>

<p class="a">
  &nbsp;
</p>

<p class="a" style="color: #000000;">
  2:保存所有查询日志
</p>

  注意:级别是对应当前的数据库,而阈值是全局的。

 

1.5 MongoDB集群性能优化方案

1.5.1 优化方向

<p class="a" style="color: #000000;">
  收缩数据
</p>

<p class="a" style="color: #000000;">
  增加新的机器、新的副本集
</p>

<p class="a" style="color: #000000;">
  集群分片键选择
</p>

<p class="a" style="color: #000000;">
  chunk大小设置
</p>

<p class="a">
  &nbsp;
</p>

<p class="a" style="color: #000000;">
  预分片(预先分配存储空间)
</p>

1.5.2 存储引擎方面

  WiredTiger是3.0以后的默认存储引擎,细粒度的并发控制和数据压缩提供了更高的性能和存储效率。3.0以前默认的MMAPv1也提高了性能。

  在MongoDB复制集中可以组合多钟存储引擎,各个实例实现不同的应用需求。

1.5.3 其他优化建议

<p class="a" style="color: #000000;">
  预分片
</p>

<p class="a" style="color: #000000;">
  增加新的机器、新的副本集
</p>

<p class="a" style="color: #000000;">
  集群分片键选择
</p>

<p class="a">
  &nbsp;
</p>

<p class="a" style="color: #000000;">
  chunk大小设置
</p>

1.6 附录:Aliyun 备份策略

1.6.1 MongoDB云数据库备份/恢复

备份策略:

1.6.2 全量备份方法

1.6.3 逻辑备份流程 - mongodump

特点:

1.6.4 物理备份流程

备份特点

1.6.5 逻辑备份 vs 物理备份

<td style="width: 42.06%; border-top-width: 1pt; border-top-color: white; border-left: none; border-bottom-width: 3pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #81b859; padding: 3.05pt 0.75pt 0cm; height: 7.85pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">逻辑备份</span></strong>
  </p>
</td>

<td style="width: 39.02%; border-top-width: 1pt; border-top-color: white; border-left: none; border-bottom-width: 3pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #81b859; padding: 3.05pt 0.75pt 0cm; height: 7.85pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">物理备份</span></strong>
  </p>
</td>
<td style="width: 42.06%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 2.05pt 0.75pt 0cm; height: 12.55pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">低</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">数据库接口读取数据</span>
  </p>
</td>

<td style="width: 39.02%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 2.05pt 0.75pt 0cm; height: 12.55pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">高</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">拷贝物理文件</span>
  </p>
</td>
<td style="width: 42.06%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #eff4ed; padding: 3.05pt 0.75pt 0cm; height: 31.55pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">低</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">下载备份集</span> <span lang="EN-US">+&nbsp; </span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">导入数据</span> <span lang="EN-US">+&nbsp; </span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">建立索引</span>
  </p>
</td>

<td style="width: 39.02%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #eff4ed; padding: 3.05pt 0.75pt 0cm; height: 31.55pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">高</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">下载备份集</span> <span lang="EN-US">+&nbsp; </span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">启动进程</span>
  </p>
</td>
<td style="width: 42.06%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">大</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">直接与业务争抢资源</span>
  </p>
</td>

<td style="width: 39.02%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">小</span></strong>
  </p>
</td>
<td style="width: 42.06%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #eff4ed; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">比原库小</span>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">无需备份索引数据</span>
  </p>
</td>

<td style="width: 39.02%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #eff4ed; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">与原库相同</span>
  </p>
</td>
<td style="width: 42.06%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="42%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">兼容绝大部分版本</span>
  </p>
  
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">可跨存储引擎</span>
  </p>
</td>

<td style="width: 39.02%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dde8d8; padding: 3.05pt 0.75pt 0cm; height: 1.15pt;" valign="top" width="39%">
  <p class="MsoNormal" style="text-align: center;" align="center">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">依赖存储布局</span>
  </p>
</td>

1.7 参考文献

<p class="a">
  [2]&nbsp;&nbsp;<a href="/wp-content/themes/clsn-003/inc/go.php?url=http://blog.itpub.net/15498/viewspace-2073272/" >http://blog.itpub.net/15498/viewspace-2073272/</a>
</p>

<p class="a">
  [3]&nbsp;&nbsp;<a href="/wp-content/themes/clsn-003/inc/go.php?url=http://www.mongoing.com/archives/3962" >http://www.mongoing.com/archives/3962</a>
</p>

<p class="a">
  [4]&nbsp;&nbsp;<a href="/wp-content/themes/clsn-003/inc/go.php?url=http://chenzhou123520.iteye.com/blog/1641319" >http://chenzhou123520.iteye.com/blog/1641319</a>
</p>

<p class="a">
  [5]&nbsp;&nbsp;<a href="/wp-content/themes/clsn-003/inc/go.php?url=http://www.mongoing.com/oplog" >http://www.mongoing.com/oplog</a>
</p>

<p class="a">
  [6]&nbsp;&nbsp;<a href="https://www.cnblogs.com/datazhang/p/5917861.html">https://www.cnblogs.com/datazhang/p/5917861.html</a>
</p>

 

<li>
  <a href="#12_mongodumpmongorestore">1.2 mongodump/mongorestore实践</a><ul>
    <li>
      <a href="#121_mongodump">1.2.1 mongodump备份工具</a>
    </li>
    <li>
      <a href="#122_mongorestore">1.2.2 mongorestore恢复实践</a>
    </li>
    <li>
      <a href="#123_mongoexportmongoimportmongodumpmongorestore">1.2.3 mongoexport/mongoimport与mongodump/mongorestore的对比</a>
    </li>
  </ul>
</li>

<li>
  <a href="#13_MongoDBoplog">1.3 MongoDB中的oplog</a><ul>
    <li>
      <a href="#131_oplog">1.3.1 什么是oplog</a>
    </li>
    <li>
      <a href="#132_oplogbson">1.3.2 oplog.bson作用</a>
    </li>
    <li>
      <a href="#133_mongodump">1.3.3 【模拟】mongodump使用</a>
    </li>
    <li>
      <a href="#134_oplog">1.3.4 从别处而来的oplog</a>
    </li>
    <li>
      <a href="#135_mongodb">1.3.5 mongodb的备份准则</a>
    </li>
  </ul>
</li>

<li>
  <a href="#14_MongoDB">1.4 MongoDB监控</a><ul>
    <li>
      <a href="#141_MongoDB">1.4.1 MongoDB集群监控方式</a>
    </li>
    <li>
      <a href="#142_mongostat">1.4.2 mongostat</a>
    </li>
    <li>
      <a href="#143_db">1.4.3 db级别命令</a>
    </li>
  </ul>
</li>

<li>
  <a href="#15_MongoDB">1.5 MongoDB集群性能优化方案</a><ul>
    <li>
      <a href="#151">1.5.1 优化方向</a>
    </li>
    <li>
      <a href="#152">1.5.2 存储引擎方面</a>
    </li>
    <li>
      <a href="#153">1.5.3 其他优化建议</a>
    </li>
  </ul>
</li>

<li>
  <a href="#16_Aliyun">1.6 附录:Aliyun 备份策略</a><ul>
    <li>
      <a href="#161_MongoDB">1.6.1 MongoDB云数据库备份/恢复</a>
    </li>
    <li>
      <a href="#162">1.6.2 全量备份方法</a>
    </li>
    <li>
      <a href="#163_-_mongodump">1.6.3 逻辑备份流程 - mongodump</a>
    </li>
    <li>
      <a href="#164">1.6.4 物理备份流程</a>
    </li>
    <li>
      <a href="#165_vs">1.6.5 逻辑备份 vs 物理备份</a>
    </li>
  </ul>
</li>

<li>
  <a href="#17">1.7 参考文献</a>
</li>