`

(游戏)历史数据的迁移和备份方案

阅读更多

整理了一下思路,记录下。供以后参考吧。

 

 

前言:

游戏服务器。部分游戏数据。超过一定时间后。对玩家来讲,不再有很大的使用价值。但这部分数据却一直保存在数据库中。特别是如:玩家信件,道具消费日志,等每日增加量比较大的表。问题尤其明显。

 

目标:

1.将数据库中超过指定时间的数据,从游戏服务器数据库中,迁移到备份数据库中。

2.并实现迁移目标分表的自动切分。

3.各待迁表支持设置不同的迁移间隔。

4.每次迁移备份后。将处理结果发送邮件。

 

分析:

1.仔细分析要迁移的表结构可以发现。这些表都有添加时间(createDate)类的字段标志。某些表可能出了添加时间外,还有其他的判断依据。如任务记录类。为了尽可能的保证迁移数据的正确性,还要添加任务状态的条件(state=9)类。

2.同一款游戏,不同的游戏分区。表结构基本上时完全相同的。要做的备份迁移的逻辑也基本一致的。

 

设计:

不同的最终要求,可能设计的具体方案不尽相同。

 

已知:

1.mysql存储过程中,不支持如oracle里的dblink。所以一个存储过程里调用不同机器上mysql查询,暂时实现不了。

2.mysql存储过程中,不支持动态创建数据库。但可以动态创建表。

 

准备:要迁移备份的表信息,配置表。

transfer_database_info;     

--游戏分区信息(含:数据库名,分区名,用户名,密码等)

--主要是考虑最复杂的情况时,如,多个游戏分区在不同的电脑上。备份服务器在另外电脑上时候用。

  

transfer_table_template;    

--迁移表模板(含:表名,鉴别字段,分表间隔,迁移间隔,是否备份)

--分表间隔,过多久将备份库里面的目标表切分

--迁移间隔,每个表要迁移的间隔不尽相同。有的可能迁移3各月前的,有的可能1个月前的旧可以迁移走。

--是否备份,有些数据可能再也没有用到得可能了。只需从运行库中删除,不需备份到备份库里

 

transfer_setting_info;         

--前两个表的一个整合表,保存实际迁移备份过程中。实际需要处理的所有表。

 

只所以这么设计,主要是基于分析2.

 

辅助表:

transfer_table_log;

--(transferSettingInfoId,createDate,destTableName)

--记录待处理表中,要在备份库中生成的目标表表名。

transfer_task_log;

--迁移备份的日志。每运行一次该任务。生成一条日志。

 

-------------------------------------------------分割线-------------------------------------------------

实现目标一:

1.在游戏所在的服务器上,同一个mysql进程下。备份各区的数据到一个库中。

 

实现:

考虑用存储过程实现。在linux中添加shell脚本,创建cronjob。每天或指定时间运行该任务即可。

伪代码:

创建存储过程{
     迭代transfer_setting_info{
             
         --第一部分:
         -- 本次迁移环境信息获取。主要是找到要迁移的源表,迁往的目标表
         {
              取出数据库,及表配置信息。

              设置:当前要迁往的目标库。--后面用;

              按transfer_setting_info.id检查备份目标表
             (transfer_table_log中destTable)是否存在。
         
              不存在,新建表;
              设置当前要迁往的目标表(新建的表)。
              存在,按表模板里配置的信息检查是否该分表
              {
                 分表。不分表
                 设置当前要迁往的目标表。
              }
           }

           -- 第二部分:迁移
           1.拼接sql中where条件。模板里配置的.按多少天或多少月。等
             拼出,本表的具体条件。
           
           --本表需要备份:往目标表插入  
           {
                insertsql := concat(" insert into desttable select *  from sourcetable where;");
                execute insertsql;                 
           }
                 
            --源表:从源表按where条件清除
           {
                 deletesql := ;
                 execute;
           }
          
           --拼本表迁移日志
     }
     --记录总日志,本次迁移的日志。
}

 

shell脚本里,查询最新日志。发送邮件。

 

 

实现目标二:

1.在游戏所在的服务器上,同一个mysql进程下。备份各区的数据到不同个库中。

 

由于mysql存储过程不支持动态创建库。所以在设置备份信息时候。先创建好备份库。

其他实现基本同目标一。

 

实现目标三:

1.各游戏服务器在不同机器上,备份库在另一台机器上。

 

思路一:

1.用java写个小程序。连接不同的数据库。

2.先将要迁移备份的信息dump到备份机。dump可以支持--where的。因此是可以实现增量处理的。

3.然后将dump文件,执行到备份机的备份库中。

 

思路二:

1。将备份处理逻辑,分别放到不同的游戏服务器上。由不同的游戏服务器上的cronjob定期执行备份处理。

2。将游戏服务器上的数据文件,文件夹映射到远程备份机的指定文件夹下。

 

思路三:

借助,mysql提供的备份策略,mysql的增量备份策略等实现。只是粗粗看了下,感觉可控性不高。就没有试验。应该也是可以实现的。

 

 

 

 

0
0
分享到:
评论

相关推荐

    应用系统迁移方案.pdf

    本方案旨在满足用户招标需求,实现应用和新建业务平台的一体化集成,并确保在迁移过程中,工作不会中断,历史数据得以完整保留。迁移过程需与原系统承建公司进行协作,同时需要处理好与运营商接入链路的转换以及数据...

    利用导出功能实现历史数据迁移

    在本次迁移方案中,我们将讨论如何 利用导出功能实现历史数据迁移,以腾出数据库的有效空间,提高系统和数据备份工作效率。以下是相关知识点的总结: 1. 需求分析 在进行数据迁移之前,需要了解客户的需求和环境。...

    数据迁移方法-技术方案

    历史数据迁移方法是指通过数据提取、转移、装载工具或定制程序进行装载。该方法可以实现高性能的数据迁移,适合于频繁移动数据的大型企业。 数据迁移方法的选择取决于具体的业务需求和环境。不同的数据迁移方法适合...

    应用系统迁移技术方案.pdf

    本文档主要介绍了应用系统迁移技术方案的设计和实施,旨在将中心原有应用系统迁移到虚拟化服务平台,确保业务不中断、历史数据不损失,并实现与多媒体融合通信指挥平台的融合对接。 一、系统迁移需求分析 在系统...

    ORA_ROWSCN伪列在Oracle历史数据迁移中的应用研究.pdf

    ORA_ROWSCN伪列在Oracle历史数据迁移中的应用研究 Oracle数据库系统中,数据迁移是不可避免的,特别是在大型企业中,数据库系统的数据量会随着时间的推移不断增长。为了解决这个问题,Oracle提供了多种数据迁移...

    数据库异地备份方案

    数据库异地备份方案是确保数据安全性的重要措施,尤其是在面临自然灾害、硬件故障或人为错误时,能够保证数据的可恢复...同时,企业应持续关注数据保护的新技术和法规,确保备份方案与时俱进,满足日益复杂的安全需求。

    在原生DBeaver的基础上,支持了DM、Kingbase、瀚高、神通等国产数据库 并且增加了数据库备份还原以及数据迁移等功能

    DBeaver提供了便捷的数据迁移工具,支持不同数据库之间的数据迁移,包括结构迁移(如表、视图、存储过程等)和数据迁移,确保在迁移过程中最小化业务中断,同时保持数据的一致性和完整性。 在DBeaverRelease-master...

    专业信息化应用系统迁移方案.doc

    - 关键挑战在于合理规划切割时间节点、电话接入路由转换和历史数据迁移。 3. **迁移方案总体思路** - **业务中断停机时间最小化** - 使用P2V技术,利用卷影副本复制服务,实现操作系统级别的无停机迁移。 - ...

    SQL Server数据迁移方案.docx

    数据迁移主要有两种情况:数据结构相同和不同。对于数据结构不同的情况,迁移策略包括建立新旧系统之间的数据映射,创建逻辑视图,然后使用SQL Server的导入导出工具进行数据迁移。在迁移过程中,需遵循一系列原则:...

    系统云迁移方案说明.docx

    这需要对历史数据进行分析,并制定相应的备份计划,以便在迁移过程中出现问题时能够迅速恢复服务。 ##### 迁移后完整性测试 迁移完成后,进行全面的完整性测试是必不可少的。这些测试包括但不限于数据一致性测试、...

    江苏电信综合结算系统备份应用方案

    面对复杂的业务环境和庞大的数据量,传统的备份方案已经无法满足其需求。在这个背景下,江苏电信选择了DSG SnapAssure-DC作为其备份管理系统,以解决一系列挑战。 首先,江苏电信面临的首要问题是数据量巨大。每月...

    铁路中央主机系统迁移总体方案.pdf

    对于数据迁移,包括历史数据和联机数据的迁移。历史数据以文本文件形式存于虚拟磁带库,需迁移到UNIX平台的Oracle数据库中。联机数据的无损迁移则要求在不中断服务的情况下,将数据从DB2平滑过渡到Oracle,同时保持...

    ES备份归档操作说明

    ES备份归档操作是指将原索引中的历史数据reindex到新索引中,并删除原索引数据,以节省磁盘空间和提高系统性能。这个过程需要创建新索引、执行reindex、校验数据结果、索引迁移和删除原索引归档数据等步骤。 二、...

    AD域服务器合并与迁移的解决方案

    此外,还需关注迁移期间的安全事项,例如服务管理与物理性安全、SID历史记录(SIDHistory)的迁移和密码策略的制定。 正式迁移过程的规划同样重要。规划的目的是为了确保迁移工作能够顺利进行,减少业务中断时间,...

    PACS系统数据管理迁移解决方案.pdf

    为了解决上述问题,PACS系统数据迁移方案引入了数据分级存储的概念。这一方案的核心在于根据数据的生命周期、产生时间和访问频率等因素,将数据存储在不同的介质上。例如,近期的、访问频率高的、重要的数据,存放在...

    基于Oracle数据泵的多版本Geodatabase备份迁移.pdf

    Geodatabase,特别是多版本的,需要完整的备份解决方案来保留其历史数据和版本信息。Oracle数据泵(Oracle Data Pump)提供了一种高效且灵活的逻辑备份方法,适用于多用户和启用归档功能的Geodatabase。 1. **备份...

    es迁移数据.zip

    当面临数据迁移的需求时,确保数据的完整性和一致性至关重要。"es迁移数据.zip"这个压缩包正是为了解决这一问题而提供的资源集合。 该压缩包主要包含两部分关键内容:Elasticsearch的数据迁移工具和必要的安装包,...

    SQLSERVER数据库备份与恢复方案.pdf

    例如,一个完善的备份与恢复方案还需要考虑到如何处理大数据量的备份、如何在不同硬件和操作系统平台上迁移数据库、以及如何在云环境中实施备份策略等问题。在实际环境中,企业级数据库的备份与恢复方案往往需要借助...

    专业信息化应用系统迁移方案及对策.doc

    考虑到可能存在的工程风险,如与原系统建立单位的协调,系统迁移的关键点包括运营商接入的切割、数据迁移和时间节点的规划。 1.3 迁移方案总体思路 为了满足用户对业务中断时间的要求,迁移方案应尽可能减少停机...

    Oracle 9i 11g历史库升级迁移数据至19c CDB.docx

    升级的目标之一是归档历史数据,同时保持原有的字符集。 #### 需求概述 - 升级的数据库版本包括9.2.0.7、9.2.0.8以及11.2.0.4。 - 涉及的操作系统环境有AIX和Linux。 - 升级后的字符集需保留原有设置(ZHS16GBK、US...

Global site tag (gtag.js) - Google Analytics