leanote数据迁移

背景:

现有的蚂蚁笔记部署在机器xx.x.xxx.135上,之后这台机器不使用了,需要将蚂蚁笔记以及相关数据都迁移到另一台机器xx.x.xxx.55上


思路:

  1. 重新部署搭建新的leanote
  2. 从原机器上备份全部的数据,并在新机器上恢复数据

步骤:

1.安装数据库MongoDB

蚂蚁笔记使用的数据库就是MongoDB

(1)添加yum源

vi /etc/yum.repos.d/mongodb-org-4.0.repo

添加以下内容:

  1.  
    [mongodb-org-4.0]
  2.  
    name = MongoDB Repository
  3.  
    baseurl = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
  4.  
    gpgcheck = 1
  5.  
    enabled = 1
  6.  
    gpgkey = https://www.mongodb.org/static/pgp/server-4.0.asc

退出保存

(2)使用yum安装相应版本MongoDB

yum install -y mongodb-org-4.0.9 mongodb-org-server-4.0.9 mongodb-org-shell-4.0.9 mongodb-org-mongos-4.0.9 mongodb-org-tools-4.0.9

2.下载蚂蚁笔记

从蚂蚁笔记官网下载相应的压缩包

leanote-linux-amd64-v2.6.1.bin.tar.gz

创建目录developer存放压缩包以及相应数据

  1.  
    cd /
  2.  
    #创建一个developer目录用于存放压缩包和数据,当然你也可以选择其他的目录结构
  3.  
    mkdir developer
  4.  
    cd developer
  5.  
    # 上传安装包至该目录下并创建等会需要使用的目录,mongodbdata用于存放数据库,log用于存放日志
  6.  
    mkdir mongodbdata
  7.  
    mkdir log
  8.  
    #解压该压缩包
  9.  
    tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz

启动MongoDB数据库,并导入蚂蚁笔记初始化数据,蚂蚁笔记初始化数据存放在/developer/leanote/mongodb_backup/leanote_install_data

  1.  
    #后台运行,以守护进程的方式运行mongodb数据库,需要--fork #需要设置日志路径和自定义数据库路径--logpath和--dbpath#--fork has to be used with --logpath or --syslog
  2.  
     
  3.  
    mongod --fork --logpath /developer/log/mongodb.log --dbpath /developer/mongodbdata
  4.  
     
  5.  
    #Leanote 初始数据存储在${PATH_TO_LEANOTE}/mongodb_backup/leanote_install_data
  6.  
    # 初始化才运行此行,再次重启时无需运行该行命令
  7.  
     
  8.  
    mongorestore -h localhost -d leanote --dir /developer/leanote/mongodb_backup/leanote_install_data/

3.进入MongoDB数据库,为leanote数据库添加root用户

  1.  
    # 进入MongoDB
  2.  
    mongo
  3.  
     
  4.  
    # 切换到leanote数据库
  5.  
    use leanote;
  6.  
     
  7.  
    # 添加root用户
  8.  
    db.createUser(
  9.  
    {
  10.  
    user: "root",
  11.  
    pwd: "xxxx",
  12.  
    roles: [ { role: "dbOwner", db: "leanote" } ]
  13.  
    }

修改蚂蚁笔记相应配置表/developer/leanote/conf/app.conf

4.启动蚂蚁笔记

  1.  
    #后台运行脚本,设置日志路径为/developer/log/leanote.log
  2.  
    nohup bash /developer/leanote/bin/run.sh >/developer/log/leanote.log 2>&1 &

5.测试与修改管理员admin密码

在地址栏输入http://${centos ip}:8098,即可看到以下页面。

蚂蚁笔记默认管理员账号和密码为 admin abc123。为了安全,应该第一时间修改管理员密码,具体操作:管理员账号登录后,个人中心直接修改密码

6.数据迁移与恢复

(1)在原机器上备份leanote数据

mongodump --port 27017 --db leanote -o /data/leanoteBackUp/

(2)使用scp命令将备份数据拷贝到新机器上

scp -r leanoteBackUp root@xx.x.xxx.xx:/developer/data

(3)回去新机器上,先关闭leanote服务,直接杀进程

(4)恢复备份数据

mongorestore -h 127.0.0.1:27017 -d leanote /developer/data/leanoteBackUp/leanote -u=root -p=xxxx

(5)重新启动leanote服务

nohup bash /developer/leanote/bin/run.sh >/developer/log/leanote.log 2>&1 &

(6)到此蚂蚁笔记数据迁移恢复完毕,但是在新的机器上登录蚂蚁笔记时,发现有很多图片没有显示,原因在于图片信息存放在leanote下的files目录下,所以还需要将files目录备份。具体操作方法:直接将原机器中的files目录拷贝到新机器中即可。

7.leanote开机自启动设置

(1)切换到以下目录

cd  /etc/rc.d/init.d

(2)创建 leanote的一个自启动脚本

  1.  
    #!/bin/bash
  2.  
    # chkconfig: 2345 80 90
  3.  
    #description:leanote.sh
  4.  
    cd /developer/leanote/bin/
  5.  
    bash run.sh

(3)设置脚本权限

chmod 754 leanote.sh

(4)服务脚本加入到系统启动队列

  1.  
    chkconfig --add leanote.sh
  2.  
    chkconfig leanote.sh on

8.设置MongoDB开启启动

在/etc/rc.local添加以下脚本

  1.  
    # add mongodb service
  2.  
    mongod --fork --logpath /developer/log/mongodb.log --dbpath /developer/mongodbdata

9.定时备份蚂蚁笔记数据,并将备份数据发送到另一台机器存储

编写备份脚本

  1.  
    DUMP=/usr/bin/mongodump # mongodump备份文件执行路径
  2.  
    OUT_DIR=/data/backupLeanoteMongodb # 临时备份目录
  3.  
    TAR_DIR=/data/backupLeanoteMongodb # 备份存放路径
  4.  
    DATE=`date -d "today" +"%Y-%m-%d-%H-%M-%S"` # 获取当前系统时间,作为文件名的一部分
  5.  
    DAYS=7
  6.  
    TAR_BAK="leanote_mongodb_bak_$DATE.tar.gz" # 最终保存的数据库备份文件名
  7.  
    cd $OUT_DIR
  8.  
    rm -rf $OUT_DIR/
  9.  
    mkdir -p $OUT_DIR/$DATE
  10.  
    mkdir -p $TAR_DIR/
  11.  
    $DUMP -d leanote -o $OUT_DIR/$DATE # 备份leanote数据库
  12.  
    tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE # 压缩为.tar.gz格式
  13.  
    #find $TAR_DIR/ -mtime +$DAYS -delete # 删除7天前的备份文件
  14.  
    sshpass -p xxxx scp $TAR_DIR/$TAR_BAK root@xxx.xx.xxx.xx:$TAR_DIR # 通过 scp 发送至另一台服务器

将定时任务执行脚本写入/var/spool/cron/root

30 0-23/12  * * * bash /developer/leanote_bak.sh

 

 
posted @ 2022-01-11 10:36  82年的加多宝  阅读(600)  评论(0编辑  收藏  举报