`

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

阅读更多

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

 

 

前言:

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

 

目标:

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
分享到:
评论

相关推荐

    MxsDoc是基于Web的文件管理系统,支持权限管理、历史版本管理、.rar

    今天为大家推荐一个免费的企业数据备份方案 - MxsDoc。 MxsDoc是基于Web的文件管理系统,支持权限管理、历史版本管理、Office编辑、Office预览、在线解压缩、文件分享、文件加密、远程存储、跨仓库推送、跨服务器推...

    存储方案整体设计.docx

    存储方案整体设计 1 存储方案整体设计 数据的存储是档案扫描系统的核心组成部分,肩负着中国第二历史档案馆关键业务系统数据的存储与保护功能。由于系统包含扫描、加工、应用、数据库等重要系统,我们将依据不同...

    VSIP服务器虚拟化解决方案.pptx

    资源数据层:资源网格模型与数据、虚拟机模板数据、软件镜像数据、事件和日志数据、物理机和虚拟机历史监控数据。 资源调度控制层:任务及任务策略在线编辑、分布式任务调度、任务调度规则管理、调度任务监控、任务...

    mysql-workbench-community-6.0.7-win32-noinstall

    MySQL Workbench 现在为将 Microsoft SQL Server、Sybase ASE、PostreSQL 及其他 RDBMS 表、对象和数据迁移至 MySQL 提供了一个全面、简单易用的解决方案。开发人员和 DBA 可以轻松、快速地转换现有应用,使其可运行...

    数据库设计文档(样例).doc

    现在,随着企业对数据可用性认识的加深,关键业务不允许出现哪怕是1%的灾难威胁 ,因而,异地数据备份已成为数据可用性解决方案的重要组成部分。异地容灾系统提供 一个远程的应用备份现场,能有效地防止因本地毁灭...

    oracle数据库dba管理手册

    4.4.3 具有历史数据的产品OLTP数据库 设计 71 4.4.4 数据仓库设计 72 4.5 文件位置 75 4.6 数据库空间使用概述 76 4.6.1 storage子句的意义 77 4.6.2 表段 78 4.6.3 索引段 79 4.6.4 回滚段 79 4.6.5 临时段 79 ...

    基于vue+node+socket+vant+mysql实现的在线客服系统.zip

    前后端分离,浏览器指纹作为访客唯一id,内置chatGPT...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统

    使用Subversion进行版本控制(针对 Subversion 1.4)

    迁移CVS版本库到Subversion C. WebDAV和自动版本 什么是WebDAV ? 自动版本化 客户端交互性 独立的 WebDAV 应用程序 Microsoft Office,Dreamweaver,Photoshop Cadaver,DAV 浏览器 文件浏览器 WebDAV 扩展 ...

    cognos 管理与安全性指南

    保存作业步骤的历史记录明细 29 查看 Lineage 信息 29 增强的追溯功能 29 门户页面中的 Metric Studio 内容 29 版本 8.4 中的已更改功能 29 IBM Cognos 8 Virtual View Manager 替换 Composite Information Server ...

    windowsnt 技术内幕

    备份Windows NT的注册表 备份磁带集的循环 理解备份记录和存储循环 设置备份选项 使用Windows NT备份恢复数据 为一次计划好的备份工作创建一个备份脚本文件 使用AT命令调度一次备份 NT备份程序在并行设备上的使用 ...

    Access+2000中文版高级编程

    12.1.3 数据访问页与窗体和报表的比较 362 12.1.4 哪类用户需要数据访问页 364 12.2 省时的数据访问页向导 364 12.2.1 使用“自动创建数据页:纵栏式” 364 12.2.2 使用数据页向导 365 12.3 创建及完善...

    Access 2000中文版高级编程(part1)

    12.1.3 数据访问页与窗体和报表的比较 362 12.1.4 哪类用户需要数据访问页 364 12.2 省时的数据访问页向导 364 12.2.1 使用“自动创建数据页:纵栏式” 364 12.2.2 使用数据页向导 365 12.3 创建及完善简单的...

    云计算第二版

    5.2.2 虚拟机数据备份恢复工具 181 5.2.3 虚拟机安全工具 181 5.2.4 可靠性组件FT和HA 182 5.3 云架构服务提供平台vCloud Service Director 182 5.3.1 创建虚拟数据中心和组织 183 5.3.2 网络的设计 184 5.3.3 目录...

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    TCP/IP教程TCP/IP基础

    第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 有关RFC的幽默 ...

    TCP/IP技术大全

    24.2 传统解决方案:NetWare 3.x到 NetWare 4.x的IP支持 263 24.2.1 IP隧道 264 24.2.2 IP中继 264 24.2.3 LAN WorkPlace 264 24.2.4 IPX-IP网关 265 24.2.5 NetWare/IP 265 24.3 NetWare 5—Novell对IP的 完全支持 ...

    TCP/IP详解

    第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 有关RFC的幽默 ...

    TCP-IP技术大全

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 ...

Global site tag (gtag.js) - Google Analytics