Docs/数据库/mongodb/mongodb-数据库操作-备份-还原-导出-导入.html
2022-10-18 16:59:37 +08:00

165 lines
No EOL
9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="tool" content="leanote-desktop-app">
<title>mongodb 数据库操作--备份 还原 导出 导入</title>
<style>
*{font-family:"lucida grande","lucida sans unicode",lucida,helvetica,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;}
body {
margin: 0;
}
/*公用文字样式*/
h1{font-size:30px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}
.note-container{
width:850px;
margin:auto;
padding: 10px 20px;
box-shadow: 1px 1px 10px #eee;
}
#title {
margin: 0;
}
table {
margin-bottom: 16px;
border-collapse: collapse;
}
table th, table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
table th {
font-weight: bold;
}
table tr {
background-color: none;
border-top: 1px solid #ccc;
}
table tr:nth-child(2n) {
background-color: rgb(247, 247, 249);
}
.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption {
border: 1px solid #ddd;
border-collapse: collapse;
padding: 6px 13px;
}
blockquote {
border-left-width:10px;
background-color:rgba(128,128,128,0.05);
border-top-right-radius:5px;
border-bottom-right-radius:5px;
padding:15px 20px;
border-left:5px solid rgba(128,128,128,0.075);
}
blockquote p {
margin-bottom:1.1em;
font-size:1em;
line-height:1.45
}
blockquote ul:last-child,blockquote ol:last-child {
margin-bottom:0
}
pre {
padding: 18px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
border-radius: 3px;
display: block;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
white-space: nowrap;
background-color: #f9f2f4;
border-radius: 4px;
}
.footnote {
vertical-align: top;
position: relative;
top: -0.5em;
font-size: .8em;
}
hr {
margin:2em 0
}
img {
max-width:100%
}
pre {
word-break:break-word
}
p,pre,pre.prettyprint,blockquote {
margin:0 0 1.1em
}
hr {
margin:2em 0
}
img {
max-width:100%
}
.sequence-diagram,.flow-chart {
text-align:center;
margin-bottom:1.1em
}
.sequence-diagram text,.flow-chart text {
font-size:15px !important;
font-family:"Source Sans Pro",sans-serif !important
}
.sequence-diagram [fill="#ffffff"],.flow-chart [fill="#ffffff"] {
fill:#f6f6f6
}
.sequence-diagram [stroke="#000000"],.flow-chart [stroke="#000000"] {
stroke:#3f3f3f
}
.sequence-diagram text[stroke="#000000"],.flow-chart text[stroke="#000000"] {
stroke:none
}
.sequence-diagram [fill="#000"],.flow-chart [fill="#000"],.sequence-diagram [fill="#000000"],.flow-chart [fill="#000000"],.sequence-diagram [fill="black"],.flow-chart [fill="black"] {
fill:#3f3f3f
}
ul,ol {
margin-bottom:1.1em
}
ul ul,ol ul,ul ol,ol ol {
margin-bottom:1.1em
}
kbd {
padding:.1em .6em;
border:1px solid rgba(63,63,63,0.25);
-webkit-box-shadow:0 1px 0 rgba(63,63,63,0.25);
box-shadow:0 1px 0 rgba(63,63,63,0.25);
font-size:.7em;
font-family:sans-serif;
background-color:#fff;
color:#333;
border-radius:3px;
display:inline-block;
margin:0 .1em;
white-space:nowrap
}
.toc ul {
list-style-type:none;
margin-bottom:15px
}
</style>
<!-- 该css供自定义样式 -->
<link href="../leanote-html.css" rel="stylesheet">
</head>
<body>
<div class="note-container">
<h1 class="title" id="leanote-title">mongodb 数据库操作--备份 还原 导出 导入</h1>
<div class="content-html" id="leanote-content"><div>mongodump备份数据库</div><div>mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径</div><div>如果没有用户谁,可以去掉-u和-p。</div><div>如果导出本机的数据库,可以去掉-h。</div><div>如果是默认端口,可以去掉--port。</div><div>如果想导出所有数据库,可以去掉-d。</div><div><br></div><div><br></div><div>导出所有数据库</div><div>[root@localhost mongodb]# mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/</div><div>connected to: 127.0.0.1</div><div>Tue Dec 3 06:15:55.448 all dbs</div><div>Tue Dec 3 06:15:55.449 DATABASE: test&nbsp;&nbsp; to&nbsp;&nbsp; /home/zhangy/mongodb/test</div><div>Tue Dec 3 06:15:55.449&nbsp;&nbsp; test.system.indexes to /home/zhangy/mongodb/test/system.indexes.bson</div><div>Tue Dec 3 06:15:55.450&nbsp;&nbsp;&nbsp;&nbsp; 1 objects</div><div>Tue Dec 3 06:15:55.450&nbsp;&nbsp; test.posts to /home/zhangy/mongodb/test/posts.bson</div><div>Tue Dec 3 06:15:55.480&nbsp;&nbsp;&nbsp;&nbsp; 0 objects</div><div>&nbsp;&nbsp;</div><div>。。。。。。。。。。。。。。省略。。。。。。。。。。。。。</div><div><br></div><div><br></div><div>导出指定数据库</div><div>[root@localhost mongodb]# mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/</div><div>connected to: 192.168.1.108</div><div>Tue Dec 3 06:11:41.618 DATABASE: tank&nbsp;&nbsp; to&nbsp;&nbsp; /home/zhangy/mongodb/tank</div><div>Tue Dec 3 06:11:41.623&nbsp;&nbsp; tank.system.indexes to /home/zhangy/mongodb/tank/system.indexes.bson</div><div>Tue Dec 3 06:11:41.623&nbsp;&nbsp;&nbsp;&nbsp; 2 objects</div><div>Tue Dec 3 06:11:41.623&nbsp;&nbsp; tank.contact to /home/zhangy/mongodb/tank/contact.bson</div><div>Tue Dec 3 06:11:41.669&nbsp;&nbsp;&nbsp;&nbsp; 2 objects</div><div>Tue Dec 3 06:11:41.670&nbsp;&nbsp; Metadata for tank.contact to /home/zhangy/mongodb/tank/contact.metadata.json</div><div>Tue Dec 3 06:11:41.670&nbsp;&nbsp; tank.users to /home/zhangy/mongodb/tank/users.bson</div><div>Tue Dec 3 06:11:41.685&nbsp;&nbsp;&nbsp;&nbsp; 2 objects</div><div>Tue Dec 3 06:11:41.685&nbsp;&nbsp; Metadata for tank.users to /home/zhangy/mongodb/tank/users.metadata.json</div><div><br></div><div>mongorestore还原数据库</div><div><br></div><div>mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径</div><div>--drop的意思是先删除所有的记录然后恢复。</div><div><br></div><div><br></div><div>恢复所有数据库到mongodb中</div><div>[root@localhost mongodb]# mongorestore /home/zhangy/mongodb/&nbsp; #这里的路径是所有库的备份路径</div><div><br></div><div>还原指定的数据库</div><div>[root@localhost mongodb]# mongorestore -d tank /home/zhangy/mongodb/tank/&nbsp; #tank这个数据库的备份路径</div><div>&nbsp;&nbsp;</div><div>[root@localhost mongodb]# mongorestore -d tank_new /home/zhangy/mongodb/tank/&nbsp; #将tank还有tank_new数据库中</div><div><br></div><div>这二个命令可以实现数据库的备份与还原文件格式是json和bson的。无法指写到表备份或者还原。</div><div><br></div><div>mongoexport导出表或者表中部分字段</div><div><br></div><div>mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名</div><div><br></div><div>上面的参数好理解,重点说一下:</div><div>-f&nbsp;&nbsp;&nbsp; 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段</div><div>-q&nbsp;&nbsp;&nbsp; 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据</div><div>--csv 表示导出的文件格式为csv的这个比较有用因为大部分的关系型数据库都是支持csv在这里有共同点</div><div><br></div><div>导出整张表</div><div>[root@localhost mongodb]# mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat</div><div><br></div><div>导出表中部分字段</div><div>[root@localhost mongodb]# mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv</div><div><br></div><div>根据条件敢出数据</div><div>[root@localhost mongodb]# mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json</div><div><br></div><div>mongoimport导入表或者表中部分字段</div><div>1.1,还原整表导出的非csv文件</div><div>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名&nbsp;&nbsp;</div><div>重点说一下--upsert其他参数上面的命令已有提到--upsert 插入或者更新现有数据</div><div>1.2,还原部分字段的导出文件</div><div>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名&nbsp;&nbsp;</div><div>--upsertFields根--upsert一样</div><div>1.3,还原导出的csv文件</div><div>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名&nbsp;&nbsp;</div><div>上面三种情况,还可以有其他排列组合的。</div><div><br></div><div>还原导出的表数据</div><div>[root@localhost mongodb]# mongoimport -d tank -c users --upsert tank/users.dat</div><div><br></div><div>部分字段的表数据导入</div><div>[root@localhost mongodb]# mongoimport -d tank -c users&nbsp; --upsertFields uid,name,sex&nbsp; tank/users.dat&nbsp;&nbsp;</div><div><br></div><div>还原csv文件</div><div>[root@localhost mongodb]# mongoimport -d tank -c users --type csv --headerline --file tank/users.csv</div><div>总体感觉mongodb的备份与还原还是挺强大的虽然有点麻烦。</div></div>
</div>
<!-- 该js供其它处理 -->
<script src="../leanote-html.js"></script>
</body>
</html>