美文网首页
Mysql定期把新数据备份到备份表内

Mysql定期把新数据备份到备份表内

作者: 刘大坝 | 来源:发表于2021-09-30 10:58 被阅读0次

背景

一个备份表,一个新表,需要定期的增量把新表产生的数据备份到备份表内,再清空新表。

创建新表及数据

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL COMMENT '姓名',
  `nick_name` varchar(32) DEFAULT NULL COMMENT '昵称',
  `age` int(11) NOT NULL DEFAULT '18' COMMENT '年龄',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='测试表';

INSERT INTO `t_student` VALUES ('1', '张三', '张傻', '11', null);
INSERT INTO `t_student` VALUES ('2', '李四', '李屎', '25', null);
INSERT INTO `t_student` VALUES ('3', '王五', '网五', '26', null);

创建备份表及数据

SET FOREIGN_KEY_CHECKS=0; 
DROP TABLE IF EXISTS `t_student_bak`;
CREATE TABLE `t_student_bak` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL COMMENT '姓名',
  `nick_name` varchar(32) DEFAULT NULL COMMENT '昵称',
  `age` int(11) NOT NULL DEFAULT '18' COMMENT '年龄',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_nick_name` (`nick_name`) USING BTREE,
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='innodb 引擎测试表';

INSERT INTO `t_student_bak` VALUES ('2', '李四', '李屎', '25', null);
INSERT INTO `t_student_bak` VALUES ('3', '王五', '网五', '26', null);
INSERT INTO `t_student_bak` VALUES ('8', '王老五', '王老虎', '55', null);
INSERT INTO `t_student_bak` VALUES ('9', '李大大', '李打打', '18', '备注');

查询新表

mysql> SELECT * from t_student ;
+----+------+-----------+-----+--------+
| id | name | nick_name | age | remark |
+----+------+-----------+-----+--------+
|  1 | 张三 | 张傻      |  11 | NULL   |
|  2 | 李四 | 李屎      |  25 | NULL   |
|  3 | 王五 | 网五      |  26 | NULL   |
+----+------+-----------+-----+--------+
3 rows in set

查询备份表

SELECT * from t_student_bak  ;
mysql> SELECT * from t_student_bak  ; 
+----+--------+-----------+-----+--------+
| id | name   | nick_name | age | remark |
+----+--------+-----------+-----+--------+
|  2 | 李四   | 李屎      |  25 | NULL   |
|  3 | 王五   | 网五      |  26 | NULL   |
|  8 | 王老五 | 王老虎    |  55 | NULL   |
|  9 | 李大大 | 李打打    |  18 | 备注   |
+----+--------+-----------+-----+--------+

4 rows in set

执行批量更新

INSERT INTO t_student_bak 
SELECT * from t_student WHERE NOT EXISTS (
 SELECT 1 FROM t_student_bak WHERE  
  t_student_bak.id = t_student.id  
)


查看结果

mysql> SELECT * from t_student_bak  ;

+----+--------+-----------+-----+--------+
| id | name   | nick_name | age | remark |
+----+--------+-----------+-----+--------+
|  1 | 张三   | 张傻      |  11 | NULL   |
|  2 | 李四   | 李屎      |  25 | NULL   |
|  3 | 王五   | 网五      |  26 | NULL   |
|  8 | 王老五 | 王老虎    |  55 | NULL   |
|  9 | 李大大 | 李打打    |  18 | 备注   |
+----+--------+-----------+-----+--------+
5 rows in set

此时id为"1"的第一行数据,被增量添加进备份表。

相关文章

  • Mysql定期把新数据备份到备份表内

    背景 一个备份表,一个新表,需要定期的增量把新表产生的数据备份到备份表内,再清空新表。 创建新表及数据 创建备份表...

  • 如何备份远程 MySQL 数据到本地

    如何备份远程 MySQL 数据到本地? 对于远程的 MySQL 数据库,如何定期将数据备份到本地呢?对于需要远程备...

  • Mysql数据备份导出csv文件

    Mysql数据库备份 1 . 备份数据库 备份多个数据库 备份所有数据库 2 . 备份表数据 还原数据 导出数据到...

  • 数据从Mysql恢复到Postgres

    执行步骤: 1.备份mysql数据库2.导入数据到pg数据库中 1.备份mysql数据库 备份工具目录结构: 备份...

  • Xtrabackup备份mysql

    xtrabackup备份mysql,是逻辑物理备份,主要备份表空间。 1.当mysql是新的,只执行过set pa...

  • 数据的备份与还原

    一、备份方式数据备份的方式有:数据表备份,单表数据备份,SQL备份,增量备份 数据表备份 不需要通过sql来备份,...

  • 数据备份yu还原;

    数据备份yu还原 方式: 数据表备份 单表数据备份 SQL备份 增量备份 数据表备份 存储引擎:innodb、my...

  • Linux命令------Mysql数据库备份和还原

    一、数据库备份 1、备份数据库到home目录 2、直接将MySQL数据库压缩备份 3、备份到当前目录 备份MyS...

  • mysql

    mysql授权 mysql备份单独一张表 备份导入MySQL

  • mysql定时备份

    最近把公司 devops 总算搞起来了,然后把线上的 mysql 数据库定期备份到 oss 上。 中间遇到不少头痛...

网友评论

      本文标题:Mysql定期把新数据备份到备份表内

      本文链接:https://www.haomeiwen.com/subject/bxhenltx.html