温馨提示×

mongodb数据迁移centos上如何操作

小樊
46
2025-11-01 13:07:35
栏目: 云计算

MongoDB数据迁移至CentOS操作指南

一、迁移前准备工作

  1. 目标服务器安装MongoDB
    确保目标CentOS服务器已安装与源服务器版本兼容的MongoDB(建议使用相同主版本,如源为5.0则目标选5.x)。可通过以下命令安装(以CentOS 7为例):

    # 添加MongoDB官方YUM仓库
    wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-5.0.5-1.el7.x86_64.rpm
    # 安装MongoDB核心组件
    rpm -ivh mongodb-org-*.rpm
    # 启动服务并设置开机自启
    systemctl start mongod && systemctl enable mongod
    

    注:若源服务器为Windows或其他Linux发行版,需下载对应平台的MongoDB工具(如mongodb-database-tools)用于数据导出。

  2. 配置权限与网络

    • 确保源服务器和目标服务器的MongoDB用户具有读(源)/写(目标)权限(如dbOwner角色)。
    • 开放目标服务器的MongoDB端口(默认27017):
      firewall-cmd --zone=public --add-port=27017/tcp --permanent
      firewall-cmd --reload
      

二、常用迁移方法(mongodump/mongorestore)

1. 备份源数据库

使用mongodump工具导出源数据库数据到本地目录(需替换<source_host><source_port><source_db><backup_dir>):

mongodump --host <source_host> --port <source_port> -u <username> -p <password> --authenticationDatabase admin -d <source_db> -o <backup_dir>
  • 示例:导出testDB数据库到/home/user/mongodb_backup
    mongodump --host 192.168.1.100 --port 27017 -u admin -p 123456 --authenticationDatabase admin -d testDB -o /home/user/mongodb_backup
    

2. 传输备份文件至目标服务器

使用scp工具将备份目录复制到目标CentOS服务器(替换<user><target_server_ip><backup_dir>):

scp -r <backup_dir> <user>@<target_server_ip>:/home/<user>/
  • 示例:将本地/home/user/mongodb_backup复制到目标服务器的/home/user/
    scp -r /home/user/mongodb_backup user@192.168.1.200:/home/user/
    

3. 恢复数据至目标数据库

使用mongorestore工具将备份数据导入目标数据库(替换<target_host><target_port><target_db><backup_path>):

mongorestore --host <target_host> --port <target_port> -u <username> -p <password> --authenticationDatabase admin <backup_path>/<source_db>
  • 示例:将/home/user/mongodb_backup/testDB恢复到目标服务器的testDB数据库:
    mongorestore --host 192.168.1.200 --port 27017 -u admin -p 123456 --authenticationDatabase admin /home/user/mongodb_backup/testDB
    
  • 注意:若目标数据库已存在,可添加--drop参数先删除旧数据。

三、备选方法(数据目录同步)

若源服务器允许停机,可直接同步数据目录(适用于相同MongoDB版本):

  1. 停止源服务器MongoDB服务

    mongo --eval "db.getSiblingDB('admin').shutdownServer()"
    
  2. 压缩并传输数据目录
    假设源数据目录为/var/lib/mongo,使用tar压缩后传输:

    tar -czvf mongodb_data.tar.gz /var/lib/mongo
    scp mongodb_data.tar.gz user@192.168.1.200:/home/user/
    
  3. 解压并配置目标服务器

    • 解压到目标数据目录(需与目标MongoDB配置的dbPath一致,如/var/lib/mongo):
      tar -xzvf mongodb_data.tar.gz -C /var/lib/mongo --strip-components=1
      
    • 设置目录权限并启动服务:
      chown -R mongod:mongod /var/lib/mongo
      systemctl start mongod
      

四、迁移后验证

  1. 检查数据库列表
    登录目标MongoDB,确认目标数据库存在:

    mongo -u <username> -p <password> --authenticationDatabase admin
    show dbs;
    
  2. 验证数据完整性
    查询目标数据库中的集合和文档数量(替换<target_db><collection>):

    use <target_db>
    show collections;
    db.<collection>.countDocuments();
    

五、注意事项

  • 版本兼容性:源与目标MongoDB版本差异过大(如3.x→6.x)可能导致数据格式不兼容,建议使用相同主版本。
  • 数据一致性:迁移前停止源数据库写入(如业务低峰期操作),避免数据丢失。
  • 权限管理:确保目标数据库用户具有足够的权限(如readWritedbOwner)。
  • 日志排查:若迁移失败,查看源/目标MongoDB日志(/var/log/mongodb/mongod.log)定位问题。

0