Browse Source

修改readme描述信息

lijihong 6 years ago
parent
commit
f95ff57a0c

BIN
TRS.WCM.Developer/贵州项目6个WCM节点迁移到海云/img/备份1.png


BIN
TRS.WCM.Developer/贵州项目6个WCM节点迁移到海云/img/备份2.png


BIN
TRS.WCM.Developer/贵州项目6个WCM节点迁移到海云/img/脚本.png


+ 109 - 126
TRS.WCM.Developer/贵州项目6个WCM节点迁移到海云/readme.md

@@ -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存储过程。
+   ![脚本](./img/脚本.png)
+##### 数据清洗
+   * 清理脏数据
      ```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数据库,执行如下截图中的操作
+   ![备份1](./img/备份1.png)
+   
+   ![备份2](./img/备份2.png)
 
-   * 中间库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. 其他工具
-    * 自动生成索引  ![索引相关规则](./img/IdxId.png)
+### 其他工具
+   * 自动生成索引  ![索引相关规则](./img/IdxId.png)
       通过配置文件 idxid.generatedtable.properties 配置需要生成的元数据表名称。