• MongoDB自建和阿里云RDS备份还原


    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

    它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

    Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    1、阿里云MongoDB还原备份到自建MongoDB步骤

    1.1、下载阿里云MongoDB备份文件

    使用wget命令下载阿里云数据库备份

    阿里云文档说明:https://help.aliyun.com/document_detail/58329.html?spm=a2c6r.11610030.0.0.3aea42313v84vh

    wget -c -O /tmp/hins7699283_data_20190603235309_qp.xb '阿里云备份URL地址'

    1.2、安装阿里云备份文件解压工具(以单节点模式恢复MongoDB物理备份的数据)

    1.安装epel包

    yum install -y epel-release 

    2.通过以root用户或sudo运行以下命令来安装Percona yum存储库 

    yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

    3.启用存储库

    percona-release enable-only tools release

    4.运行以下命令安装Percona XtraBackup工具

    Percona XtraBackup是一个基于MySQL的服务器的开源热备份实用程序 ,它不会在备份期间锁定您的数据库。
    无论是24x7高负载服务器还是低事务量环境,Percona XtraBackup都旨在使备份成为一个无缝过程,而不会破坏生产环境中服务器的性能。

    yum install -y percona-xtrabackup-24

    5.安装qpress才能使用innobackupex命令

    qpress是使用QuickLZ的便携式文件存档器,旨在最大程度地利用快速存储系统。它通常比文件复制要快,因为目标小于源。

    wget -c https://files.cnblogs.com/files/Sungeek/qpress-11-linux-x64.tar
    tar xvf qpress-11-linux-x64.tar
    chmod 775 qpress
    cp qpress /usr/bin

    6.解压物理备份文件,例如数据库备份文件名为hins20191107_qp.xb

    [root@localhost ~]#  cd  /data/mongodb/mongodb3717/data/
    [root@localhost ~]#  mv  /tmp/hins20191107_qp.xb  /data/mongodb/mongodb3717/data/
    [root@localhost ~]#  cat hins20191107_qp.xb | xbstream -x -v
    [root@localhost ~]#  innobackupex --decompress --remove-original  ./
    [root@localhost ~]#  chown -R mongodb.mongodb /data/mongodb/mongodb3717/

    注意:如果原来数据库有数据可以先删除,停mongo服务,删除所有数据库文件

    [root@localhost ~]# /usr/local/mongodb/bin/mongo --host 127.0.0.1 --port 3717 admin -uroot -p123456 --authenticationDatabase admin --eval 'db.shutdownServer({force:true})'
    
    [root@localhost ~]#  cd  /data/mongodb/mongodb3717/data/
    
    [root@localhost ~]#  rm -rf ./*

    7.修改配置文件,把wiredTigerDirectoryForIndexes参数、replSet参数、oplogSize参数、keyFile参数注释掉

    vi /etc/mongod.conf
    #wiredTigerDirectoryForIndexes=true #为索引文件指定独立目录
    #replSet=rpl
    #oplogSize=8096 #oplog大小
    #keyFile=/data/mongodb/mongodb3717/data/mongodb-keyfile
    #auth = true #

    8.启动mongo服务

    /etc/init.d/mongod start

    1.3、副本集模式启动MongoDB数据库

    云数据库MongoDB的物理备份默认带有原实例的副本集配置。启动时需以单节点模式启动,否则可能无法访问。

    如需以副本集模式启动,需要先以单节点模式恢复MongoDB数据,再按照以下步骤执行:

    1.先通过服务器的mongo shell登录MongoDB数据库。

    mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin

    2.移除原有副本集配置。

    #主库执行
    use local
    db.system.replset.remove({})

    3.关闭mongodb进程服务。

    use admin
    db.shutdownServer()

    4.修改/etc/目录下的配置文件mongod.conf,添加replication相关配置。详细命令用法请参见MongoDB官方文档部署副本集

    5.指定新建的配置文件 mongod.conf 来启动 MongoDB。

    /etc/init.d/mongod -f /etc/mongod.conf

    6.将成员加入副本集并初始化副本集。

    说明:此步骤使用rs.initiate()命令进行操作,详细命令用法请参见MongoDB官方文档rs.initiate()命令介绍

    rs.initiate(
       {
          _id: "myReplSet",
          version: 1,
          members: [
             { _id: 0, host : "mongodb0.example.net:3717" },
             { _id: 1, host : "mongodb1.example.net:3717" },
             { _id: 2, host : "mongodb2.example.net:3717" }
          ]
       }
    )

     

     

    2、自建MongoDB还原到阿里云MongoDB

    1.先登录自建的MongoDB备份

    --备份所有库

    /usr/local/mongodb/bin/mongodump --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 密码  --out=/tmp/tse-MongoDB-20191107

    --备份单个库(加--db参数)

    /usr/local/mongodb/bin/mongodump --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 密码 --db local --out=/tmp/tse-local-20191107

    2.自建MongoDB服务器连接登录阿里云MongoDB

    --测试登录成功以后开始还原刚刚的备份

    /usr/local/mongodb/bin/mongo --host 填写阿里云公网URL --port 3717 admin -uroot -p阿里云MongoDB密码 --authenticationDatabase admin

    --还原所有库到阿里云MongoDB

    /usr/local/mongodb/bin/mongorestore  --host 阿里云公网URL --port 3717 --authenticationDatabase admin --username root --password 阿里云mongo密码  --drop  --stopOnError    /tmp/tse-MongoDB-20191107

    --还原单个库到阿里云MongoDB

    /usr/local/mongodb/bin/mongorestore  --host 阿里云公网URL --port 3717 --authenticationDatabase admin --username root --password 阿里云mongo密码  --drop  --stopOnError  --db local  /tmp/tse-local-20191107

    提示:阿里云MongoDB需要开启自建服务器白名单才可以登录连接。

  • 相关阅读:
    bzoj3033: 太鼓达人
    CH Round #24
    王志明:编辑部不送审,把你的投稿直接拒掉了,怎么办?
    用TinyXml做XML解析示例 TinyXml查找唯一节点及修改节点操作
    QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例
    QT 使用QUdpSocket QUdpServer UDP 建立客户端与服务器端
    QT 使用QTcpServer QTcpSocket 建立TCP服务器端 和 客户端
    Qt QThread 线程创建,线程同步,线程通信 实例
    Qt QT的IO流 QT输入输出
    Qt QSortFilterProxyModel示例代码, 使用方法
  • 原文地址:https://www.cnblogs.com/Sungeek/p/11813379.html
Copyright © 2020-2023  润新知