MongoDB的配置、备份与恢复以及备份脚本加密

shc脚本加密

shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.Shc可以用来对shell脚本进行加密,可以将shell脚本转换为一个可执行的二进制文件。经过shc对shell脚本进行加密后,会同时生成两种个新的文件,一个是加密后的可执行的二进制文件(文件名以.x结束),另一个是C语言的原文件(文件名以.x.c结束;

  • ubuntu 安装
sudo apt-get install shc
  • 使用方法(注意:要有-r选项, -f 后跟要加密的脚本名.):
  • 相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题
  • 运行后会生成两个文件,script-name.x 和 script-name.x.c
    script-name.x是加密后的可执行的二进制文件.
    ./script-name.x 即可运行.
    script-name.x.c是生成script-name.x的原文件(c语言)
shc -r -f script-name 

说明

在使用MongoDB的过程中遇到了许多的问题,稍微操作不慎就会导致数据库异常,首先我们应该做好数据的定时备份以防万一

  • 开启mongo db后台服务
  • 关闭mongo db服务
  • 备份恢复
  • 无法连接

开启mongo db后台服务

  • 使用–fork参数启动,这样就是后台启动

     mongod --fork --logpath <log_file_path> --dbpath <db_folder_path>
    --fork 将mongod作为后台服务启动,并必须要跟随 --logpath 指定日志文件路径,如果该日志文件不存在会被自动创建
    --dbpath 数据的存储目录
  • 建议先设置好配置文件/etc/mongod.conf后,每次手动用命令启动,在里面修改好自己想要的data和log文件的存放路径

    mongod –f /etc/mongod.conf //后台启动可以加上 --fork
  • 或者加入开机自启动,加入开机自启动脚本里面

    /etc/init.d //在这里面添加启动脚本后修改文件的权限
  • 关于/etc/mongod.conf中常用的选项介绍:

    --dbpath: 指定数据目录,必选,不配置会启动报错;
    
    --port: 指定服务监听的端口,默认为27017
    
    --logpath:指定日志路径;
    
    --logappend:指定日志是追加模式,或者每次重启MongoDB后清理日志;默认是追加模式;
    
    --fork:用此选项创建子进程,在后台运行MongoDB;此选项必先开启logpath选项;
    
    --bind_ip: 指定监听的接口;默认是127.0.0.1
    --httpinterface: 设定是否在1000的端口启动一个微型的HTTP服务器;默认不开启;
    
    --nounixsocket: 设置是否使用UNIX socket;
    
    --noscripting: 设置是否完全禁止服务器端JavaScript脚本的运行;
  • mongod.conf配置说明

    
    //日志文件位置
    logpath=/data/db/journal/mongodb.log  (这些都是可以自定义修改的)
    
    // 以追加方式写入日志
    logappend=true
    
    //是否以守护进程方式运行
    fork = true
    
     //默认27017
    port = 27017
    
     //数据库文件位置
    dbpath=/data/db
    
     //启用定期记录CPU利用率和 I/O 等待
    cpu = true
    
     //是否以安全认证方式运行,默认是不认证的非安全方式
    noauth = true
    auth = true
    
     //详细记录输出
    verbose = true
    
     //用于开发驱动程序时验证客户端请求
     Inspect all client data for validity on receipt (useful for
     developing drivers)
    objcheck = true
    
     Enable db quota management
    // 启用数据库配额管理
    quota = true
    // 设置oplog记录等级
     Set oplogging level where n is
       0=off (default)
       1=W
       2=R
       3=both
       7=W+some reads
    diaglog=0
    
     Diagnostic/debugging option 动态调试项
    nocursors = true
    
    // Ignore query hints 忽略查询提示
    nohints = true
    // 禁用http界面,默认为localhost:28017
    nohttpinterface = true
    
    // 关闭服务器端脚本,这将极大的限制功能
     Turns off server-side scripting.  This will result in greatly limited
     functionality
    noscripting = true
    // 关闭扫描表,任何查询将会是扫描失败
     Turns off table scans.  Any query that would do a table scan fails.
    notablescan = true
    // 关闭数据文件预分配
     Disable data file preallocation.
    noprealloc = true
    // 为新数据库指定.ns文件的大小,单位:MB
     Specify .ns file size for new databases.
     nssize =
    
    // Replication Options 复制选项
     in replicated mongo databases, specify the replica set name here
    replSet=setname
     maximum size in megabytes for replication operation log
    oplogSize=1024
     path to a key file storing authentication info for connections
     between replica set members
    //指定存储身份验证信息的密钥文件的路径
    keyFile=/path/to/keyfile

关闭mongo db后台服务

使用shutdownServer(),一台机器上可能运行多个实例,避免关闭出错

# mongo // 从linux命令行进入mongod命令行
> use admin // 切换到管理员模式
> db.shutdownServer() // 关闭mongodb服务
> server should be down...//关闭
  • 关闭后用 ps aux | grep mongo 查看是否由此进程,也可用kill杀死mongo进程
kill process ID>
kill -2 process ID>
kill -9命令迫使进程在运行时突然终止,进程在结束后不能自我清理。可能导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。

备份恢复

如果是带验证的数据库指定要验证的数据库把密码的选项房子最后
mongodump -h IP地址 –port 端口 -u 用户名 –authenticationDatabase “验证的数据库一般是admin” -d 数据库 -o 文件存在路径 -p 密码

  • 备份
//MongoDB备份
mongodump -h IP --port 端口 -u 用户名  -d 数据库 -o 文件存在路径 -p 密码

//mongorestore还原数据库
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
  • 参数说明
//一次性备份所有:
mongodump,mongorestore

mongodump:
命令格式:mongodump -h dbhost  -d dbname -o dbdirectory

-h:  mongodb所在服务器地址,例如127.0.0.1,也可以指定端口:127.0.0.1:8080 

-d:  需要备份的数据库名称,例如:test_data

-o:  备份的数据存放的位置,例如:/home/bak

-u:  用户名称,使用权限验证的mongodb服务,需要指明导出账号

-p:用户密码,使用权限验证的mongodb服务,需要指明导出账号密码

mongorestore:
命令格式:mongorestore -h dbhost -d dbname -dorectoryperdb dbdireactory

-h:  mongodb所在服务器地址

-d:  需要恢复备份的数据库名称,例如:test_data,可以跟原来备份的数据库名称不一样

-directoryperdb: 备份数据所在位置,例如:/home/bak/test

-drop: 加上这个参数的时候,会在恢复数据之前删除当前数据;
  • 拷贝
直接拷贝,注意不要拷贝diagnostic.data文件夹的内容,有风险测试没通过不要用copy的方式
  • 导出json格式数据
//导出数据
sudo mongoexport --db 数据库名称 -c 表名 --out newdbexport.json

无法连接

  • 执行mongod看报什么错误一般是不能find,data/db
//注意文件的建立路径,然后--dbpath指定mongod.conf文件中path写到/data就好
sudo mkdir -p data/db
  • cd /tmp 删除/tmp$ 下mongodb-27017.sock,如果有的话
mongodb-27017.sock

你可能感兴趣的:(ubuntu)