0%

mongodb 单实例副本集部署

mongodb 安装、部署及单实例副本集配置

简单配置 mongod.conf

1
2
3
4
5
6
7
8
9
10
11
12
fork=true
logpath=logs/mongod.log // 日志文件路径
logappend=true // 日志是以append方式追加
dbpath=db // 数据库本地文件存储地址
nojournal=true
noprealloc=true
port=10001 // 端口
replSet=michael // 副本集合名称
oplogSize=1024 // oplog大小,这个应该尽可能大,各个子节点与主节点的时间窗口
// 如果设置太小可能会导致子节点追赶不上主节点的数据。
smallfiles=true // 小文件存储
auth=true // 开启用户验证,当开启用户验证是,创建的第一个用户最好为root角色的用户,或者至少应该要有创建其他用户的角色。

通过mongod启动mongodb

1
./bin/mongod  --config mongod.conf

通过mongo进入mongodb

1
./bin/mongo mongodb://localhost:10001/admin

初始化副本集合

1
rs.initiate({_id: "michael", members: [{_id: 0, host: "127.0.0.1:10001"}]})

创建管理员

1
db.createUser({user: "admin", pwd: "adminpassword", roles: [{role: "root", db: "admin"}]})

退出重新用管理员登录

1
./bin/mongo mongodb://xuqiaomin:adminpassword@localhost:10001/admin

创建oplogger用户

1
db.createUser({user: "oplogger", pwd: "oploggerpassword", roles: [{role: "read", db: "local"}]})

创建特定数据库用户

假设使用的数据库名为 meteor

1
2
use meteor
db.createUser({user: "xuqiaomin", pwd: "xuqiaominpassword", roles: [{role: "readWrite", db: "meteor"}]})

创建的用户访问数据库

1
mongodb://xuqiaomin:xuqiaominpassword@localhost:10001/meteor

关闭所有mongodb进程

1
kill -2 `pgrep mongo`

mongodump备份数据库

一般常用的备份命令格式

mongodump -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
如果想导出所有数据库,可以去掉-d

导出数据库

1
mongodump -h localhost --port 10001 -u xuqiaomin -p xuqiaominpassword -d meteor -o /home/mongodb/meteor

mongorestore还原数据库

常用命令格式

mongorestore -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 –drop 文件存在路径

mongorestore -d meteor /home/mongodb/meteor # meteor这个数据库的备份路径

mongoexport导出表,或者表中部分字段

常用命令格式

mongoexport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段

1
2
3
4
-q 条件导出 --csv -o 文件名 上面的参数好理解,重点说一下:
-f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
-q 可以根查询条件导出,-q '{ "_id" : "10001" }' 导出uid为100的数据
--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点

导出整张表

1
mongoexport -d test -c users -o /home/mongodb/meteor/users.dat connected to: 127.0.0.1exported 24 records

导出表中部分字段

1
mongoexport -d meteor -c users --csv -f uid,name,sex -o meteor/users.csv connected to: 127.0.0.1exported 24 records

根据条件到处出数据

1
mongoexport -d meteor -c users -q '{uid:{$gt:1}}' -o meteor/users.json connected to: 127.0.0.1exported 12 records

mongoimport导入表,或者表中部分字段

1.常用命令格式

1.1 还原整表导出的非csv文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsert –drop 文件名
重点说一下–upsert,其他参数上面的命令已有提到,–upsert 插入或者更新现有数据

1.2 还原部分字段的导出文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsertFields 字段 –drop 文件名
1.3 还原导出的csv文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –type 类型 –headerline –upsert –drop 文件名
上面三种情况,还可以有其他排列组合的。

2.还原导出的表数据

1
mongoimport -d test -c users --upsert test/users.dat connected to: 127.0.0.1............

3.部分字段的表数据导入

1
mongoimport -d test -c users  --upsertFields uid,name,sex  test/users.dat  connected to: 127.0.0.1...............................................

4.还原csv文件

1
mongoimport -d test -c users --type csv --headerline --file test/users.csv connected to: 127.0.0.1...........................................