MySQL 数据库归档工具pt-archive 与归档数据的安全存储 与 为什么每次归档都少数...

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1780人左右 1 + 2 + 3 + 4 +5) 4群(300+),另欢迎 OpenGauss 的技术人员加入。

1173e3f90447296aa4cff7f3ce764cc2.png

这里先做一个广告,在12月28日应邀,有异常分享活动,这里做一个广告

9e08bba9a16176a928e8836dfffb4f33.png

DBA 在日常的工作中,数据归档是DB 人员工作中的必选项。这里有技术的因素和法律的因素,数据库中的业务在使用一段时间内,数据表中必然存在大量的过期的数据,这些数据将不在与当前的业务有关,同时这些数据的存在会影响当前一些SQL 的执行的性能,所以从技术的角度需要进行数据的归档。从法律的因素来讲,数据也是资产,有些数据有恢复和追溯的可能性。

数据归档的方法有很多,基于不同场景,在大批量MySQL 数据库需要归档的情况下,一些使用存储过程,或使用手动的方式都不应该是我们常规的选择,工具化以及可以集成化的手段才是我们需要学习和使用的。

pt-archiver 工具是一个满足在数据归档情况下,同时可以将数据进行清理的程序,他可以将数据插入到另一个表中,或写入文件中的方式进行数据的归档的处理。本身pt-archiver可以支持在归档程序中插入复杂的归档的逻辑进行数据的归档,在通过pt_archiver进行归档的首要注意的部分是表需要有主键的情况下才能进行数据的归档,在数据归档中严禁不指定任何的索引,进行数据归档的行为,因为pt-archiver 的设计是从它选择的索引起始位置开始向前扫描。

同时我们需要弄清楚一点数据归档不是数据备份,数据备份要求的数据的所有表的一致性在备份时间点,但数据归档,是根据业务逻辑将数据抽离走,这点类似ETL的一个过程。

下面列举一些,pt-archiver 中的选项

1  --no-check-columns 默认的情况下,pt_archiver 是要检查原表与目的表之间的字段是否都吻合,数据类型是否匹配。特殊情况下可以通过选项将这个问题忽略

2  --no-check-charset 默认的情况下,pt-archiver 是要检测链接和表之间的字符集是否匹配,在一些情况下通过添加此配置忽略这个设置

3 --columns  在归档中如果目的表和目的文件不需要原表的所有的信息可以退通过此参数来进行数据归档中过滤部分需要的字段进行数据的处理,字段通过逗号来进行分割。

4  --for-update 如果使用了次参数,在对数据库表进行数据的处理读取数据添加此参数后,可以在 select 数据库时添加for update 后缀,保证读取时行的一致性。

5  --limit 这里的在归档中,这个部分默认的每次处理的数据是1行,调整大这个部分可以提高归档的速度,但调整过大会影响在业务期间的查询部分,尤其添加了for  update参数

6  --low-priority-delete  在进行清理的数据的时候,对于删除的操作降低他的操作的等级,降低性能影响。

7  --no-delete  默认的情况是归档的行就要被清理和删除,添加--no-delete 后相当于将pt-archiver 变为数据迁移工具。

8  --progress 将工作的进度进行展示

9 --replace 将数据插入的语句更换成 replace 

10 --retries 默认值为1 ,在操作超时或死锁的情况下,操作会重试多少次,默认1次

11 --skip-foreign-key-checks  在数据处理中禁止外键检查

12  --sleep¶在数据 fetch的情况下,每次的fetch 间隔时间

13 --where 条件

14  --analyze 在操作归档删除后,对原表进行analyze 的操作

根据这些条件,我们下面举一个例子

我们在world_x 数据库中有一个表city 同时我们将表归档到 city_new中,命令是这样写的,这里pt-archiver 使用的是最新的版本。

City 表

mysql> select * from city limit 10;
+----+----------------+-------------+---------------+-------------------------+
| ID | Name           | CountryCode | District      | Info                    |
+----+----------------+-------------+---------------+-------------------------+
|  1 | Kabul          | AFG         | Kabol         | {"Population": 1780000} |
|  2 | Qandahar       | AFG         | Qandahar      | {"Population": 237500}  |
|  3 | Herat          | AFG         | Herat         | {"Population": 186800}  |
|  4 | Mazar-e-Sharif | AFG         | Balkh         | {"Population": 127800}  |
|  5 | Amsterdam      | NLD         | Noord-Holland | {"Population": 731200}  |
|  6 | Rotterdam      | NLD         | Zuid-Holland  | {"Population": 593321}  |
|  7 | Haag           | NLD         | Zuid-Holland  | {"Population": 440900}  |
|  8 | Utrecht        | NLD         | Utrecht       | {"Population": 234323}  |
|  9 | Eindhoven      | NLD         | Noord-Brabant | {"Population": 201843}  |
| 10 | Tilburg        | NLD         | Noord-Brabant | {"Population": 193238}  |
+----+----------------+-------------+---------------+-------------------------+
10 rows in set (0.00 sec)

运行下面的命令,这里city表中最大的ID 没有超过5000,这相当于整体进行数据的归档,并清空city 表。

pt-archiver --source h=192.168.198.101,u=admin,p=admin,P=3306,D=world_x,t=city             --dest h=192.168.198.101,u=admin,p=admin,P=3306,D=world_x,t=city_new  --where "id < '5000'"

73eb719deed9aea3f9eb572620f4ee7b.png

6637912158be0cd52a72c805860d809a.png

但在归档后,我们发现一个问题,使用pt_archiver 归档中,有一条记录并未进行归档,到 city_new表。

3a3000b483640b1711e0e6ff56b6a7f9.png

这里也做了反向的测试,在测试中,city_new 到 city 表也会缺一条数据,而且是有规律的都是最后一条数据。经过查询,这与数据库表的自增与pt_archiver 中的 safe-auto-increment 有关,在默认的情况下工具会计算归档数据库的自增与步长,等所以归档期间会会保护一行数据,这里通过参数  --no-safe-auto-increment 来进行数据的归档,会忽略保护措施,归档的数据就与原有的条件对应了。

pt-archiver --source h=192.168.198.101,u=admin,p=admin,P=3306,D=world_x,t=city_new --dest h=192.168.198.101,u=admin,p=admin,P=3306,D=world_x,t=city  --no-safe-auto-increment --where "id < 5000"

a4946c06890ae78a911ed60549b0cae0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2660976.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

开源预约挂号平台 - 从0到上线

文章目录 开源预约挂号平台 - 从0到上线演示地址源码地址可以学到的技术前端技术后端技术部署上线开发工具其他技术业务功能 项目讲解前端创建项目 - 安装PNPM - 使用VSCODE - 安装插件首页顶部与底部 - 封装组建 - 使用scss左右布局中间内容部分路由 - vue-routerBANNER- 走马…

HCIA-Datacom题库(自己整理分类的)——OSPF协议判断

1.路由表中某条路由信息的Proto为OSPF则此路由的优先级一定为10。√ 2.如果网络管理员没有配置骨干区域,则路由器会自动创建骨干区域&#xff1f; 路由表中某条路由信息的Proto为OSPF&#xff0c;则此路由的优先级一定为10。 当两台OSPF路由器形成2-WAY邻居关系时&#xff0…

小梅哥Xilinx FPGA学习笔记18——专用时钟电路 PLL与时钟向导 IP

目录 一&#xff1a;IP核简介&#xff08;具体可参考野火FPGA文档&#xff09; 二&#xff1a; 章节导读 三&#xff1a;PLL电路原理 3.1 PLL基本实现框图 3.2 PLL倍频实现 3.3 PLL分频实现 四: 基于 PLL 的多时钟 LED 驱动设计 4.1 配置 Clocking Wizard 核 4.2 led …

useReducer 的奇妙世界:探索 React 状态管理的新境界(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

首发卡密引流系统 支持短视频点赞/关注获取卡密

搭建教程&#xff1a; 环境要求&#xff1a;Nginx、MySQL 5.6、PHP 5.6 步骤&#xff1a; 将压缩包解压至网站根目录。 打开域名/install&#xff0c;按照提示填写数据库信息进行安装。 管理后台&#xff1a; URL&#xff1a;域名/admin 账号密码&#xff1a;admin/123456 …

人机协同编程pyqt/pyside界面开发——第一章pyqt/pyside编程基础

环境安装:https://www.bilibili.com/video/BV1wc411D7WF/ 特别说明本文章适用于出于科研需要,用到这部分技术的,对其中的技术细节并未作过多的探究。而把侧重点放在科研工作者,如何通过这项技术的使用来达到自己的目的。尽可能的做到需要什么讲什么,用到什么学什么。这可以…

关于“Python”的核心知识点整理大全48

目录 world_population.py 16.2.5 制作世界地图 americas.py 16.2.6 在世界地图上呈现数字数据 na_populations.py 16.2.7 绘制完整的世界人口地图 world_population.py 16.2.8 根据人口数量将国家分组 world_population.py 16.2.9 使用 Pygal 设置世界地图的样式 w…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

elasticsearch系列四:集群常规运维

概述 在使用es中如果遇到了集群不可写入或者部分索引状态unassigned&#xff0c;明明写入了很多数据但是查不到等等系列问题该怎么办呢&#xff1f;咱们今天一起看下常用运维命令。 案例 起初我们es性能还跟得上&#xff0c;随着业务发展壮大&#xff0c;发现查询性能越来越不…

YOLOv5改进 | 2023Neck篇 | CCFM轻量级跨尺度特征融合模块(RT-DETR结构改进v5)

一、本文介绍 本文给大家带来的改进机制是轻量级跨尺度特征融合模块CCFM&#xff08;Cross-Scale Feature Fusion Module&#xff09;其主要原理是&#xff1a;将不同尺度的特征通过融合操作整合起来&#xff0c;以增强模型对于尺度变化的适应性和对小尺度对象的检测能力。我将…

Python - 深夜数据结构与算法之 Binary Search

目录 一.引言 二.二分查找的简介 1.查找条件 2.代码模版 3.查找示例 三.经典算法实战 1.Search-Rotated-List [33] 2.Sqrt-X [69] 3.Search-2D-Matrix [74] 4.Find-Rotated-Min [153] 5.Valid-Perfect-Square [367] 四.总结 一.引言 前面介绍了二叉树和堆&#xf…

【Vue2+3入门到实战】(12)自定义指令的基本语法(全局、局部注册)、 指令的值、v-loading的指令封装 详细示例

目录 一、学习目标1.自定义指令 二、自定义指令1.指令介绍2.自定义指令3.自定义指令语法4.指令中的配置项介绍5.代码示例6.总结 三、自定义指令-指令的值1.需求2.语法3.代码示例 四、自定义指令-v-loading指令的封装1.场景2.需求3.分析4.实现5.准备代码 六、自定义指令总结 一、…

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作&#xff1a; 1、首先 /etc/sysconfig/jenkins&#xff1a;jenkins配置文件&#xff0c;“端口”&#xff0c;“JENKIN…

【占用网络】OccNet: Scene as Occupancy 适用于检测、分割和规划任务 ICCV2023

前言 本文分享“占用网络”方案中&#xff0c;具有代表性的方法&#xff1a;OccNet。 它以多视角相机为核心&#xff0c;首先生成BEV特征&#xff0c;然后通过级联结构和时间体素解码器重建生成3D占用特征。 构建一个通用的“3D占用编码特征”&#xff0c;用以表示3D物理世界…

2023-12-29 服务器开发-centos-安装php8

摘要: 2023-12-29 服务器开发-centos-安装php8 centos-安装php8 必备条件 Minimal CentOS 8 / RHEL 8User with sudo rightsInternet Connection (1) 更新系统 更新系统 $ sudo dnf update $ sudo dnf upgrade 重启系统 $ sudo reboot (2) 启用 EPEL & Remi 软件库…

Starling-LM-7B与GPT-4:开源AI的新纪录

引言 在人工智能的前沿领域&#xff0c;Starling-LM-7B的出现标志着开源大型语言模型&#xff08;LLM&#xff09;的一大突破。与GPT-4的近距离竞争不仅展示了Starling-LM-7B的技术实力&#xff0c;也突显了开源社区在推动AI发展方面的重要作用。 模型特点 Starling-LM-7B&a…

HTML使用JavaScript的三种方式

要使用 JavaScript&#xff0c;你可以在 HTML 文件中的 <script> 标签中编写代码&#xff0c;或者将代码保存到一个单独的 .js 文件中并在 HTML 文件中引入。以下是一些常用的 JavaScript 使用方式&#xff1a; 内联 JavaScript&#xff1a;在 HTML 文件的 <script&g…

【电子通识】开关的种类

开关在我们日常生活与工作中使用较多。开关有无数种形式&#xff0c;种类繁多。从微小的按钮到巨大的控制器&#xff0c;功能多种多样。这种多样性受到机械或电气操作、手动或电子控制等因素的影响&#xff0c;并且与个人在设计美学和用户界面方面的偏好也有关。 电子开关采用 …

mysql查询出json格式字段中的值

一、使用场景 由于一些特殊数据使用json格式保存到表数据种中了&#xff0c;在查询的时候需要查询出这条数据中json格式中的某个字段 比如&#xff1a;需要将下列字符串中的“nationality”字段单独查询出来 json格式是一个对象 结果&#xff1a; json格式是一个集合 查询结…