|
|
@@ -7,64 +7,44 @@ http://wiki.devdemo.trs.net.cn/pages/viewpage.action?pageId=15009097
|
|
|
> * 分别在trs_hycloud_iip服务器与trs_mas服务器建立两个mas中间库
|
|
|
mas中间库均命名为trs_data_migration_mas
|
|
|
|
|
|
-
|
|
|
> SQL脚本说明:
|
|
|
> * 0开头:脚本为数据修复类SQL。
|
|
|
> * 1开头:脚本中间表。有data_migration_log(迁移日志表)、data_migration_offset(迁移偏移量表)
|
|
|
> * 3开头:脚本为迁移表对应的存储过程。
|
|
|
> * 4开头:脚本为迁移执行脚本。主要数据迁移的脚本都在脚本中。
|
|
|
> * 6开头:脚本为清除本次迁移的数据脚本。
|
|
|
-
|
|
|
-> 增量说明
|
|
|
-> * 六个节点不存在增量情况
|
|
|
-> * 六个节点共用mas,必须增量,每次迁移完成data_migration_offset不可清除、修改数据
|
|
|
-
|
|
|
-> 后续步骤中需手动指定的参数说明:
|
|
|
-> * 节点id例如:4
|
|
|
-> * 节点后缀 例如 '_city4' 注:数字需与节点id匹配
|
|
|
-> * 中间库的数据库名称,当前所使用的中间库库 例如trs_data_migration_city4,
|
|
|
-> * 迁移起始tabelinfoID 传0即可
|
|
|
-> * masID的偏移量 可传0,会从中间库读取,务必保证存储过程执行前两个mas中间库的offset表同步完成。
|
|
|
-> * masurl前缀http://[ip]/mas/openapi/pages.do?method=exPlay&appKey=[appKey]&id=
|
|
|
- 例如:http://172.16.153.72/mas/openapi/pages.do?method=exPlay&appKey=gov&id=
|
|
|
|
|
|
-> 迁移时间评估说明:
|
|
|
-> 通过验证迁移贵州环境4节点和5节点,平均每个节点数据量在2百万左右,单个节点迁移脚本用时在4个小时以内。
|
|
|
+## 迁移步骤
|
|
|
|
|
|
-## 迁移方式
|
|
|
-0. 迁移节点前可做的事:
|
|
|
- * 复制webpic目录下数据至采编服务器相同目录
|
|
|
- * 提前迁移mas数据:
|
|
|
+### 数据准备
|
|
|
+#### 拷贝图片(待补充)
|
|
|
+ 复制webpic目录下数据至采编服务器相同目录
|
|
|
+ 通过 rsync + inotify 实现文件系统的 实时同步+增量同步
|
|
|
+#### 拷贝视频
|
|
|
+##### 拷贝视频文件(待补充)
|
|
|
+ * 将原mas服务器masdata/public目录下文件全部拷贝至新服务器临时文件夹
|
|
|
**这里解释下为什么mas必须提前迁移**
|
|
|
- **mas缩略图的存储规则为:masdata/public/[日期]/[masId].images/[pic文件]**
|
|
|
- **迁移之后masId会变,所以需要修改缩略图存放路径**
|
|
|
- mas迁移步骤:
|
|
|
- * 将原mas服务器masdata/public目录下文件全部拷贝至新服务器临时文件夹
|
|
|
- **这里再解释下为什么必须用临时文件夹**
|
|
|
- **原视频id、日期与当前mas文件下极有可能相同,造成意料之外的错误**
|
|
|
- * 将mas库中以下几张表的数据迁移到与trs_mas相同环境下的trs_data_migration_mas中间库
|
|
|
- * mas_publishedvideo
|
|
|
- * mas_videostream
|
|
|
- * mas_masid
|
|
|
- * mas_masvideo
|
|
|
- * mas中间库 trs_data_migration_mas,迁移mas数据
|
|
|
- ```sql
|
|
|
- #mas数据迁移
|
|
|
- call sp_city_mas();
|
|
|
- ```
|
|
|
- * 执行python脚本修改缩略图文件夹名称(暂未提供)
|
|
|
- * 将临时文件夹与正式文件夹合并
|
|
|
- * **备份trs_hycloud_iip数据库**
|
|
|
-
|
|
|
-1. 正式迁移开始:
|
|
|
- * 停止IIP应用和需要迁移的WCM应用。避免期间用户操作产生新数据,导致迁移失败。
|
|
|
- ```
|
|
|
- ps aux | grep IIP
|
|
|
- kill [PID]
|
|
|
- ```
|
|
|
- * 当迁移失败是直接回滚trs_hycloud_iip数据库备份。
|
|
|
-
|
|
|
- * 创建节点中间库,trs_data_migration_city[n](用于迁移wcm数据;n表示节点ID,如trs_data_migration_city4)和 trs_data_migration_mas(用于迁移MAS数据);
|
|
|
+ **mas缩略图的存储规则为:masdata/public/[日期]/[masId].images/[pic文件]**
|
|
|
+ **迁移之后masId会变,所以需要修改缩略图存放路径**
|
|
|
+ mas迁移步骤:
|
|
|
+ * 将原mas服务器masdata/public目录下文件全部拷贝至新服务器临时文件夹
|
|
|
+ **这里再解释下为什么必须用临时文件夹**
|
|
|
+ **原视频id、日期与当前mas文件下极有可能相同,造成意料之外的错误**
|
|
|
+ * 将mas库中以下几张表的数据迁移到与trs_mas相同环境下的trs_data_migration_mas中间库
|
|
|
+ * mas中间库 trs_data_migration_mas,迁移mas数据
|
|
|
+ * 执行python脚本修改缩略图文件夹名称(暂未提供)
|
|
|
+ * 将临时文件夹与正式文件夹合并
|
|
|
+ * 通过 rsync + inotify 实现文件系统的 实时同步+增量同步
|
|
|
+##### 拷贝mas视频数据
|
|
|
+ * 将mas库中以下几张表的数据迁移到与trs_mas相同环境下的trs_data_migration_mas中间库
|
|
|
+ * mas_publishedvideo
|
|
|
+ * mas_videostream
|
|
|
+ * mas_masid
|
|
|
+ * mas_masvideo
|
|
|
+ * 在trs_data_migration_mas运行3_sp_data_migration_mas*.sql 和 4_sp_city_mas.sql
|
|
|
+#### 拷贝数据
|
|
|
+##### 拷贝wcm数据表
|
|
|
+ 创建节点中间库,trs_data_migration_city[n](用于迁移wcm数据;n表示节点ID,如trs_data_migration_city4;
|
|
|
将WCM中的以下表迁移到trs_data_migration_city[n]
|
|
|
* 所有元数据表(wcmmetatable...)
|
|
|
* wcmappendix
|
|
|
@@ -88,23 +68,12 @@ http://wiki.devdemo.trs.net.cn/pages/viewpage.action?pageId=15009097
|
|
|
* xwcmmetaviewfieldgroup
|
|
|
* xwcmtableinfo
|
|
|
* xwcmviewfieldinfo
|
|
|
- * xwcmviewinfo
|
|
|
- * 重新将mas库中以下几张表的数据迁移到与trs_mas相同环境下的trs_data_migration_mas中间库
|
|
|
- * mas_publishedvideo
|
|
|
- * mas_videostream
|
|
|
- * mas_masid
|
|
|
- * mas_masvideo
|
|
|
-
|
|
|
-2. 处理中间库的脏数据和加载SQL脚本。
|
|
|
- *** 中间库trs_data_migration_city[n],在Navicat中,中间库运行0-3开头的所有SQL存储过程。如果该节点第一次运行使用全量下的迁移SQL;
|
|
|
- 在trs_data_migration_mas运行3_sp_data_migration_mas*.sql;
|
|
|
- * ----- 由于sql较多,上述步骤可以按下方分割线内步骤减轻实施工作 ----
|
|
|
- * 工程下src\com\trs\exchange\MyScripts.java可对应生成merge.sql,
|
|
|
- * 在trs_data_migration_city[n]中运行0,1,3,4_merge.sql
|
|
|
- * 在trs_mas服务器下的trs_data_migration_mas库运行mas_merge.sql
|
|
|
- * 在trs_hycloud_iip服务器下的trs_data_migration_mas无需运行sql
|
|
|
- * ---------------------------------------------------------------------
|
|
|
- * 清理脏数据脚本。
|
|
|
+ * xwcmviewinfo
|
|
|
+##### 准备脚本
|
|
|
+ 中间库trs_data_migration_city[n],在Navicat中,中间库运行0-3开头的所有SQL存储过程。
|
|
|
+ 
|
|
|
+##### 数据清洗
|
|
|
+ * 清理脏数据
|
|
|
```sql
|
|
|
#删除有问题的素材库数据
|
|
|
DELETE FROM xwcmmaterial WHERE MATERIALTYPE = 1 and FILENAME is NULL;
|
|
|
@@ -114,7 +83,7 @@ http://wiki.devdemo.trs.net.cn/pages/viewpage.action?pageId=15009097
|
|
|
create table t_chnldoc as SELECT MAX(RECID) as 'RECID',DOCID,CHNLID,count(1) datacount FROM wcmchnldoc GROUP BY DOCID,CHNLID HAVING COUNT(1) > 1 ;
|
|
|
DELETE FROM wcmchnldoc WHERE recid IN(SELECT recid FROM t_chnldoc);
|
|
|
```
|
|
|
- * 添加素材库的索引。
|
|
|
+ * 添加素材库的索引
|
|
|
```sql
|
|
|
ALTER TABLE `xwcmmaterial`
|
|
|
ADD PRIMARY KEY (`MATERIALID`);
|
|
|
@@ -122,9 +91,7 @@ http://wiki.devdemo.trs.net.cn/pages/viewpage.action?pageId=15009097
|
|
|
ADD INDEX (`MATERIALID`) USING BTREE ,
|
|
|
ADD INDEX (`DOCID`) USING BTREE ;
|
|
|
```
|
|
|
-
|
|
|
-3. 迁移站点,栏目,视图,模板等基本数据。(用户可以在新系统中增加角色,调整视图和模板)
|
|
|
- * 中间库trs_data_migration_city[n],处理数据中视图字段,使字段字段对应;
|
|
|
+ * 处理数据中视图字段
|
|
|
```sql
|
|
|
# 相关视频 FieldType 由 51 变为 20
|
|
|
update XWCMDBFieldInfo set FieldType=20 where FieldType=51;
|
|
|
@@ -148,82 +115,98 @@ http://wiki.devdemo.trs.net.cn/pages/viewpage.action?pageId=15009097
|
|
|
update XWCMDBFieldInfo set FieldType=12 where FieldType=63;
|
|
|
update XWCMViewFieldInfo set FieldType=12 where FieldType=63;
|
|
|
```
|
|
|
- * 中间库trs_data_migration_city[n],迁移站点,栏目,视图到trs_hycloud_iip;
|
|
|
- ```sql
|
|
|
- call sp_city_base(节点ID);
|
|
|
- ```
|
|
|
- * 中间库trs_data_migration_city[n],处理元数据表信息;需要先对迁移元数据表进行整理,将需要迁移的元数据表拷贝到中间库;
|
|
|
- * 删除多余元数据字段。
|
|
|
- * 执行存储过程update_data_dbfield.sql和update_data_table.sql。
|
|
|
+ * 元数据表调整
|
|
|
```sql
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ call update_data_table('_city[n]', 0);
|
|
|
# 注意该存储过程结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
- call update_data_table('_city4',迁移起始tabelinfoID);
|
|
|
+
|
|
|
```
|
|
|
- * 中间库trs_data_migration_city[n],中间库修改元数据表名;
|
|
|
- * 获取修改元数据的表名的SQL;拷贝以下SQL生成的结果,运行生成的SQL。
|
|
|
-
|
|
|
- ```sql
|
|
|
- # 注意该sql结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
- SELECT
|
|
|
- CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', table_name, '_city4' , ';' ) sqls
|
|
|
- FROM
|
|
|
- information_schema.TABLES
|
|
|
- WHERE
|
|
|
- table_schema = 'trs_data_migration_city[n]'
|
|
|
- AND table_name LIKE 'wcmmetatable%';
|
|
|
- ```
|
|
|
- * 中间库trs_data_migration_city[n],生成创建表sql以保存元数据表索引;拷贝以下SQL生成的结果,运行生成的SQL。
|
|
|
- ```sql
|
|
|
- # 注意sql结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
- SELECT concat('create table trs_hycloud_iip.wcmmetatable',TABLENAME,'_city4 like ','wcmmetatable',TABLENAME,'_city4;') from xwcmtableinfo;
|
|
|
- ```
|
|
|
-4. 迁移数据 和 附件。
|
|
|
+ 修改云数据表名
|
|
|
+ ```sql
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ SELECT
|
|
|
+ CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', table_name, '_city[n]' , ';' ) sqls
|
|
|
+ FROM
|
|
|
+ information_schema.TABLES
|
|
|
+ WHERE
|
|
|
+ table_schema = 'trs_data_migration_city[n]'
|
|
|
+ AND table_name LIKE 'wcmmetatable%';
|
|
|
+ # 注意该存储过程结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
+ ```
|
|
|
+
|
|
|
+#### 备份正式库
|
|
|
+ 使用Navicat打开海云正式环境IIP数据库,执行如下截图中的操作
|
|
|
+ 
|
|
|
+
|
|
|
+ 
|
|
|
|
|
|
- * 中间库trs_data_migration_city[n],将wcmdocuemnt,wcmchnldoc 元数据表中的数据拷贝到trs_hycloud_iip;拷贝以下SQL生成的结果,运行生成的SQL。
|
|
|
+### 迁移
|
|
|
+ 该过程属于数据迁移到正式环境,一旦出现迁移错误,如果不能及时处理。请立即还原备份的正式库。迁移失败等待下次数迁移。
|
|
|
+#### 停止运行市州WCM、海云IIP
|
|
|
+ ```
|
|
|
+ # 使用XShell进入市州[n]IIP服务器运行以下命令
|
|
|
+ # 执行本命令,预期应该可以见到一串阿拉伯数字,代表IDS运行程序的PID,说明IDS正常运行
|
|
|
+ ps aux | grep java | grep IIP | grep -v 'grep' | awk '{print $2}'
|
|
|
+ # 执行本命令将kill IDS运行程序
|
|
|
+ ps aux | grep java | grep IIP | grep -v 'grep' | awk '{print $2}' | xargs kill -9
|
|
|
+ # 执行本命令(和上上条是一样的),预期将不会看到任何输出结果,说明IDS已被正常kill;否则,说明kill IDS失败,建议暂停暂停,并求助于项目组
|
|
|
+ ps aux | grep java | grep IIP | grep -v 'grep' | awk '{print $2}'
|
|
|
+ ```
|
|
|
+#### 基本数据迁移
|
|
|
+ 迁移站点,栏目,视图到trs_hycloud_iip;
|
|
|
+ 基本数据迁移后,可以实现在海云中,处理站点下栏目下角色模板视图样式等问题。
|
|
|
+ ```sql
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ call sp_city_base([n]);
|
|
|
+ ```
|
|
|
+ ```sql
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ SELECT concat('create table trs_hycloud_iip.wcmmetatable',TABLENAME,'_city[n] like ','wcmmetatable',TABLENAME,'_city[n];') from xwcmtableinfo;
|
|
|
+ # 注意sql结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
+ ```
|
|
|
+#### mas数据迁移
|
|
|
+ 在中间库 trs_data_migration_mas,迁移mas数据
|
|
|
+ ```sql
|
|
|
+ #mas数据迁移
|
|
|
+ call sp_city_mas();
|
|
|
+ ```
|
|
|
+#### 文档和附件数据迁移
|
|
|
+ * 迁移元数据
|
|
|
```sql
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ SELECT concat('INSERT INTO trs_hycloud_iip.wcmmetatable',TABLENAME,'_city[n] SELECT * from ','wcmmetatable',TABLENAME,'_city[n];') from xwcmtableinfo;
|
|
|
# 注意sql结果为sql 脚本。需要复制结果再执行一遍。
|
|
|
- SELECT concat('INSERT INTO trs_hycloud_iip.wcmmetatable',TABLENAME,'_city4 SELECT * from ','wcmmetatable',TABLENAME,'_city4;') from xwcmtableinfo;
|
|
|
```
|
|
|
- * 中间库trs_data_migration_city[n],执行迁移脚本
|
|
|
+ * 迁移数据
|
|
|
```sql
|
|
|
- #注意检查其中sp_data_migration_wcmmetatable 存储过程是否执行成功。查看结果是否存在 "sp_data_migration_wcmmetatable 执行完成"
|
|
|
call sp_city_data(节点ID)
|
|
|
```
|
|
|
- * 中间库 trs_data_migration_mas,迁移mas数据
|
|
|
- ```sql
|
|
|
- #mas数据迁移
|
|
|
- call sp_city_mas();
|
|
|
- ```
|
|
|
-
|
|
|
* 节点中间库trs_data_migration_city[n],迁移附件
|
|
|
- **注意迁移附件前必须完成数据的迁移**
|
|
|
- **必须先完成迁移上一步骤的mas信息**
|
|
|
- **同步trs_mas服务器下mas中间库的data_migration_offset表至trs_hycloud_iip服务器下的mas中间库**
|
|
|
- **务必完成mas中间库偏移量同步操作,下一步骤中masId偏移量会从中间库读取**
|
|
|
```sql
|
|
|
- #迁移附件
|
|
|
- call sp_city_appendix(节点ID, 0);
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ call sp_city_appendix([n], 0);
|
|
|
```
|
|
|
* 中间库trs_data_migration_city[n],修改元数据中相关图片,相关视频字段不对
|
|
|
```sql
|
|
|
- #注意检查其中update_data_relation_appendix_2 存储过程是否执行成功。查看结果是否存在 "update_data_relation_appendix_2 执行完成"
|
|
|
- call update_data_relation_appendix(节点ID, masurl前缀, 0,0);
|
|
|
+ # [n]代表节点序号。迁移第1节点时,执行 call update_data_table('_city1', 0),迁移第2节点时执行 call update_data_table('_city2', 0),以此类推。
|
|
|
+ # masurl前缀http://[ip]/mas/openapi/pages.do?method=exPlay&appKey=[appKey]&id= 。例如:http://172.16.153.72/mas/openapi/pages.do?method=exPlay&appKey=gov&id=
|
|
|
+ call update_data_relation_appendix([n], masurl前缀, 0, 0);
|
|
|
```
|
|
|
- 5. 清除redis缓存,启动后台后的操作:
|
|
|
- redis 清理命令
|
|
|
- ```
|
|
|
- redis-cli -h 127.0.0.1 -p 6379
|
|
|
- auth password
|
|
|
- select 1
|
|
|
- flushdb
|
|
|
- ```
|
|
|
+### 清除redis缓存,启动后台后的操作:
|
|
|
+ redis 清理命令
|
|
|
+ ```
|
|
|
+ redis-cli -h 127.0.0.1 -p 6379
|
|
|
+ auth password
|
|
|
+ select 1
|
|
|
+ flushdb
|
|
|
+ ```
|
|
|
* 生成所有视图应用:进入http://ip/gov/wcm_use--应用工具--生成视图应用
|
|
|
* 发布全部站点
|
|
|
* 验证其他功能
|
|
|
|
|
|
-
|
|
|
- 6. 其他工具
|
|
|
- * 自动生成索引 
|
|
|
+### 其他工具
|
|
|
+ * 自动生成索引 
|
|
|
通过配置文件 idxid.generatedtable.properties 配置需要生成的元数据表名称。
|
|
|
|
|
|
|