当业务运行一段时间后,会出现有些表数据量很大,可能对系统性能产生不良的影响,常见的如订单表、登录log表等,这些数据很有时效性,比如我们一般很少去查上个月的订单,最多也就是报表统计会涉及到。

在我们的数据库中,用户登录表就是这种类型的表,一般而言,表中的数据是不可逆的,只有插入操作没有删除或者修改操作,表示在过去一段时间内完成的事实业务数据。比如登录表表示一段时间内用户的登录信息,登录一次游戏就会在数据库中记录一条数据。

1、对于备份这类表的策略是:

第一次备份全表的数据导入到备份表中,也就是全备。

以后每天只将增加的量自动迁移到备份表中,这里通过自增列的值相比较得到增量,如第一次全备导入备份表,这时自增列的最大值为max(idx),通过这个值到从库中查询,只要大于这个值的所有记录形成增量。

备份完成后,分批删除主库上的数据。

2、下面是具体操作步骤:

第一次全备和恢复

select * from table into outfile "/data/backup/xxxx.txt"; --导出备份数据

load data infile "/data/backup/ xxxx.txt " into table bak_table; --在另外服务器备份表中恢复

脚本程序实现:拉取线上服务器上的增量数据,然后导入本服务器,实现增量备份

1)需要在同一目录下建立三个sql脚本,如a.sql  b.sql  c.sql

a.sql: 拼接增量备份sql,形成备份语句

use report;

select concat('use report;select * from t_user_session where user_session_idx>',max(user_session_idx),' into outfile "/data/backup/incrementalbackup/t_user_session_ios1.txt";') from t_user_session;

b.sql:接受a.sql的输出

c.sql: 负责恢复数据

use report;

load data infile '/data/backup/incrementalbackup/t_user_session_ios1.txt' into table t_user_session_ios1;

2)loadlog1.sh:通过输入a.sql,生成备份语句到b.sql中。用于在线上服务器执行增量备份数据。

#!/bin/bash

/data/mysql/bin/mysql -h 127.0.0.1 -uroot -p'******' -N < /data/backup/scripts/a.sql > /data/backup/scripts/b.sql

3)loadlog2.sh:连接到线上服务器,删除以前备份文件,并通过b.sql进行数据导出,然后删除本地服务器上上次备份的文件。

1 #!/bin/bash

2

3 ssh root@1.1.1.1 "/data/backup/scripts/del_bak_file.sh"

4

5 /data/mysql/bin/mysql -uroot -p'*****' -h'1.1.1.1' < /data/backup/scripts/b.sql

6

7 rm -f /data/backup/incrementalbackup/*.txt

4)loadlog3.sh:将备份服务器上导出的数据文件拷贝到本地服务器

1 #!/bin/bash

2 scp root@10.10.67.114:/data/backup /*.txt /data/backup/

5)loadlog4.sh:加载数据到本地服务器

1 #!/bin/bash

2

3 /data/mysql/bin/mysql -h 127.0.0.1 -uroot -p'*******' < /data/backup/scripts/c.sql

6)loadlogall.sh:用于统一执行loadlog1-4,并输入日志。

1 #!/bin/bash

2

3 echo '------start-loadlog.sh-----'>> /data/backup/scripts/logs/loadlog.log

4

5 date "+%Y-%m-%d %H:%M:%S" >> /data/backup/scripts/logs/loadlog.log

6 /data/backup/scripts/loadlog.sh

7

8 echo '----end--loadlog.sh-----' >> /data/backup/scripts/logs/loadlog.log

9

10 /data/backup/scripts/loadlog2.sh

11

12 echo '----end---loadlog2.sh------' >> /data/backup/scripts/logs/loadlog.log

13

14 /data/backup/scripts/loadlog3.sh

15

16 echo '------end-loadlog3.sh------------' >> /data/backup/scripts/logs/loadlog.log

17

18 /data/backup/scripts/loadlog4.sh

19

20 echo '-----end-loadlog4.sh----------' >> /data/backup/scripts/logs/loadlog.log

7)将loadlogall.sh加入定时目录,每隔1个小时拉取一次。

crontab -e

--编辑文件      分 时 天 月 周 年 命令

到这里备份就完成了,然后可以清理部分的历史数据了,当然了,这里几个loadlog*.sh显得有些繁琐,这里为了一步一步看得更清楚些,完全可以把这些整合到一个shell脚本里。

未完待续。。。

mysql 数据转移历史表_mysql 历史数据表迁移方案相关推荐

  1. mysql 历史数据表迁移方案

    当业务运行一段时间后,会出现有些表数据量很大,可能对系统性能产生不良的影响,常见的如订单表.登录log表等,这些数据很有时效性,比如我们一般很少去查上个月的订单,最多也就是报表统计会涉及到. 解决方案 ...

  2. 清除mysql数据碎片_MySQL 清除表空间碎片方法总结

    mysql数据库会生成空间碎片了,这些空间碎片对于我们来讲影响不大但如果空间碎片多了会导致mysql查询缓存了,下面一起来看MySQL 清除表空间碎片方法吧,具体的如下所示. 碎片产生的原因 (1)表 ...

  3. 空间mysql数据还原_mysql通过表空间来恢复或者传递数据

    mysql的备份工具通常有 mysqldump ,mysqlpump(5.7后新特性)等备份工具,这里我们可以尝试使用表空间进行传递 方式是:拷贝数据文件+拷贝表空间   对应innodb引擎就是 i ...

  4. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  5. mysql导vertica_vertica从其他表迁移数据到新表(insertinto语句用法实例)

    #例:迁移微博用户数据. 由于源表weiboFriend与目标表weiboUser的表结构不完全相同,因此在语句不但要严排列字段顺序,而且还要用缺省(如:'' 等)补齐源表中没有的字段 具体SQL语句 ...

  6. MySQL超过800G的大表优化方案

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...

  7. mysql数据迁移工具_MySQL数据迁移工具的设计与实现

    一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...

  8. mysql 实务操作_mysql多表操作

    多表查询 内连接:过滤为空的数据(查询的实际上是两张表数据的交集部分) select * from 表1,表2 where 表1.字段=表2.字段; //隐式内连接,使用where条件消除笛卡尔积 s ...

  9. mysql数据控制语言_mysql数据控制语言DCL(Data Control Language)-数据库

    编辑推荐: 本文来自于网络,主要介绍了mysql数据控制语言DCL的创建.删除.修改用户密码.授予权限等代码编写. #创建用户 create user '用户名'@'允许登录的地址' identifi ...

最新文章

  1. Yii-mongo操作
  2. React Native知识
  3. 类固醇上的Java:5种超级有用的JIT优化技术
  4. C this指针的理解和作用
  5. 网不好怎么办?TLS握手带宽直降80%,BabaSSL是怎么做到的?| 龙蜥技术
  6. django-如何debug
  7. IO流基本知识总结【字节输入输出流、字符输入输出流、转换流、对象流】
  8. MySQL学习记录—Date函数系列
  9. 使用python下载加密的流媒体m3u8视频文件,获取电影资源
  10. 说话人识别----技术挑战点
  11. [转]解决Sublime Text 2中文显示乱码问题
  12. 硬盘(U盘)被误格式化(删除),重要的文件如何恢复?
  13. Microsoft Office 2016 简体中文Vl批量官方授权版镜像下载
  14. 广和通工业级5G模组产品线一览到底
  15. 几款少儿编程软件介绍
  16. 台式计算机硬盘主要接口,硬盘接口类型,详细教您怎么看硬盘接口的类型
  17. 云联惠认证身份_在秘乐短视频上实名认证了,输入了手机号,身份证号码,姓名,人脸识别,会被网贷吗?...
  18. Branches ‘develop‘ and ‘origin/develop‘ have diverged. Fatal: And branch ‘develop‘ may be fast-forwa
  19. 混合光电探测器(HPD)行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  20. LAN9220 MII并行接口 PHY设备

热门文章

  1. 转载:汇总详解:矩阵的迹以及迹对矩阵求导
  2. html涟漪动画效果,CSS+JS实现水滴涟漪动画按钮效果的示例代码
  3. unity 四元数旋转各元素值的计算方法
  4. 小白对于Linux的学习
  5. SSM洗衣店管理系统
  6. http://bbs.csdn.net/topics/392028373
  7. for根据ID去重_汽车ECU参数标定之配置Overlay RAM实现Qorivva MPC57xx系列MCU参数在线标定和代码重映射原理和方法详解...
  8. 论文阅读:Deep Residual Shrinkage Networksfor Fault Diagnosis
  9. 这篇文章让你轻松实现流动图片
  10. linux文件损坏怎么修复工具,在Ubuntu操作系统下修复损坏程序包的三种办法