zoukankan      html  css  js  c++  java
  • 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需要开启自建服务器白名单才可以登录连接。

  • 相关阅读:
    记一道乘法&加法线段树(模版题)
    2021CCPC网络赛(重赛)题解
    Codeforces Round #747 (Div. 2)题解
    F. Mattress Run 题解
    Codeforces Round #744 (Div. 3) G题题解
    AtCoder Beginner Contest 220部分题(G,H)题解
    Educational Codeforces Round 114 (Rated for Div. 2)题解
    Codeforces Global Round 16题解
    Educational Codeforces Round 113 (Rated for Div. 2)题解
    AtCoder Beginner Contest 182 F
  • 原文地址:https://www.cnblogs.com/Sungeek/p/11813379.html
Copyright © 2011-2022 走看看