MS 数据迁移操作步骤

  • 需求

 需要将MS数据从清河东机房搬运到新机房的MS服务,由于数据是二进制格式,只能用软件运算的方法进行搬运。

mv迁移工具不能针对某个用户的历史邮件进行迁移,它不是以用户为对象的,是以ms的卷为基本单位的。此次变更不迁移单副本、归档 、欢迎类型的邮件 (业务上无法实现),优化了迁移部分错误处理。迁移之前必须保证源MS存储卷已经关闭了入信。
 
  • 例子

目前需要将172.16.x.x第11卷的邮件历史数据迁移到192.168.220.x的ms上。
 
迁移操作步骤如下:
一、在182.x中心机上用confutil工具修改hosts.conf配置文件,在172.16.210.x参数下面增加如下相关参数,然后同步到全网。

 

mvNodeId=1      #这个值和msNodeId的值保持一致
[App3-rm-mi-01/mv/CONFIG_INFO]
dst_ms_server=MS118:1,MS119:1,MS220:1,MS22:0         #配置方法 目标MS[节点ID 1]:[自定义权重],目标MS[节点ID n]:[自定义权重]
src_ms_server=MS1:1      #源MS节点ID(也就是msNodeId的值),但是这个只能配置1个MS节点
 
#move_vol:num_11
vol_filter=0,0,0,0,0,0,0,0,0,0,1,0,0,0      # 表示针对第11个卷进行数据迁移
 
二、登录到172.16.210.x这台机进行操作
 
检查一下系统是否已经装上了sqlite3数据库,如果没有就要自行安装,默认是已经装上了。
rpm -qa|grep sqlite
 
启动服务就意味着开始进行迁移了
sbin/mvsvr --start
 
三、启动入库脚本
检查源机器是否装有python-2.7的版本
/usr/local/SaltStack/python-2.7.5/bin/python -V
如果没有就需要同步从中心机同步过来
scp -r  xx@172.16.183.x:/usr/local/SaltStack  /usr/local/
添加环境变量到/etc/profile里面
cat >> /etc/profile << EOF
export LD_LIBRARY_PATH= oracle_client/lib: lib:/usr/local/SaltStack/openssl102o/lib
export _PYTHON=/usr/local/SaltStack/python-2.7.5/bin/python
export _PBIN=/usr/local/SaltStack/python-2.7.5/bin
export _PIP=/usr/local/SaltStack/python-2.7.5/bin/pip
export _PATH=/usr/local/SaltStack
EOF
如果是直接从183.x同步程序就不用安装PyMySQL模块
$_PIP install PyMySQL
源脚本是在172.16.183.45上,如果脚本有更新,记得同步到中心机上
scp xx@172.16.183.45: workManager_threading.py /home/scripts/
 
用ROOT用户执行下面的脚本开始进行入库
cd /home/xx
$_PYTHON workManager_threading.py work
或者
/usr/local/SaltStack/python-2.7.5/bin/python workManager_threading.py work
停止进程
ps -ef |grep workManager_threading |grep -v "grep" |awk '{print "kill -9 " $2}'|sh
/home/mashbd_platform/src/main/KMCT-SC-64 shell xxx  @mv_ms token "ps -ef |grep workManager_threading|grep -v grep|awk '{print \"kill -9 \"\$2}'|sh  "
查看哪个日志文件正在入库
tail -1000 mvlog/recode_log | grep READLINE
grep READLINEmvlog/recode_log 
 
============================================================================
 
 
 
四、数据库信息查看
1、打开sqlite3数据库:
命令:
    1)sqlite3 info_db
    2).help 查看各个命令使用方法
    3) .tables  列出表名
    4) 使用sql语句可以查询出对应表的数据,如"select * from tb_user_mid_map"
    
    查询当前搜索路径:
    select * from tb_current_search_path;
 
    清空表数据
    delete from tb_current_search_path;
    
    结果:
    131|255|255|0|2         
    msid|dir_1|dir_2|dir_3|flag             (flag=1\2\3 分别是首次搜索、搜索中、搜索结束)
 
    详细表结构就看概要设计文档13.2,顺序与文档中的表格字段书序一致
2、表名
(1)tb_current_search_path  当前搜索的路径信息,一个卷一条记录
(2)tb_idx_file   当前搜集到的索引信息
(3)tb_user_mid_map   待更新的MID
(4)tb_user_delete_mid_map 待删除的MID
(5)tb_except_idx_file       没有处理的索引文件
3、命令
(1)sqlite3 var/mv/move_info_db
(2).tables
(3)select * from [表名]
 
五、迁移服务日志查看
1、处理一封邮件的日志:
    grep DealOneMid logs/mv.log  | grep msg=found
    grep DealOneMid  logs/mv.log  | grep msg=success
    grep DealOneMid  logs/mv.log  | grep msg=SKIP
    grep DealOneMid  logs/mv.log  | grep msg=error
 
2、更新MI信息的日志
    grep UpdateMI   logs/mv.log  | grep msg=success
    grep UpdateMI   logs/mv.log  | grep msg=error
 
3、删除源邮件的日志
    #grep DeleteMail  logs/mv.log  | grep msg=success
    #grep DeleteMail  logs/mv.log  | grep msg=error
    grep DeleteOldMail  logs/mv.log  | grep msg=error
    grep DeleteOldMail  logs/mv.log  | grep msg=success
说明:DeleteOldMail是删除源存储上的邮件;DeleteMail是更新mi失败后回退处理,删除保存到目标的ms新邮件,防止垃圾数据。
 
4、查看用户是否存在
grep GetRouteByUin   logs/mv.log
 
5、查看迁移情况的日志
grep 'vol_id=1| finish search'   logs/mv.log    # vol_id=1表示第一个卷
 
6、统计迁移成功的邮件和邮件大小
grep DealOneMid  logs/mv.log  | grep msg=success | grep -v closefile | wc -l
grep DealOneMid  logs/mv.log  | grep msg=success | grep -v closefile | grep -Po '(?<=old_mail_size=)(.*?)(?=\|)'  | awk '{a+=$1}END{print a/1024/1024/1024 "GB"}'
数据库查询
mysql -h172.16.16.x -ums_user -pxxx'  move_db
select sum(old_mail_size)/1024/1024/1024 from log_20180815;
select count(id) from log_20180815; 
 
 
 

 

转载于:https://www.cnblogs.com/xiaocry/articles/11268212.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值