首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL中使用undrop恢复drop的(上)

MySQL中可以使用编程语言(比如Python)解析binlog中DML的逆操作达到闪回的效果,如果数据不多,手工解析也可以。这也是现在大家碰到的很多DML Flashback的一个基本原理。...yum install flex 然后我们尝试编译一个文件sys_parser.c,先配置basedir basedir=/usr/local/mysql_5.7 gcc `$basedir/bin/...不过实际上我们可以做个减法,只创建一个我们需要重点关注的,然后导入数据即可。...row in set (0.00 sec) 要解析ibdata,可以使用stream_parser做。...REDUNDANT),D(D 表示只恢复被删除的记录),f生成文件 然后依次使用c_parser解析页得到其他几个数据字典的信息,比如(SYS_INDEXES,SYS_COLUMNS,SYS_FIELDS

2.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    日志信息记录|全方位认识 mysql 系统库

    在上一期《复制信息记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的复制信息记录,本期我们将为大家带来系列第八篇《日志记录等混杂|全方位认识 mysql 系统库》,下面请跟随我们一起开始...general_log和slow_log默认是CSV引擎,使用逗号分割的格式存放日志记录,CSV数据文件可以很方便地导入其他程序进行处理,例如:excel电子表格。...可以使用RENAME TABLE实现日志的归档,新旧表做一个原子的名称互换操作,如下: use mysql; DROP TABLE IF EXISTS general_log2; CREATE TABLE...日志的数据变更操作不会记录到binlog,因此不会被复制到从库。 可以使用FLUSH TABLES或FLUSH LOGS语句刷新日志或日志文件。 日志不支持分区。...PS: CONNECTION字符串方式不会在mysql.servers中添加记录

    1.2K10

    MYSQL 的手动更新统计分析记录

    MYSQL 5.6 开始,统计分析的信息会固化在系统的存储中,通过下面的语句可以查看我们相隔的开关是否打开。...默认抽样的页数是8 pages,我们可以改动默认抽样的页数,达到提高准确率的功效。但同样付出的代价就是,在抽样时的消耗的I/O 和相关资源。...我们是可以定期对一些大进行 analyze table 的,可以写一个定期的运行的脚本来完成此事,尽量达到统计分析的准确性。但通常一般都是通过自动触发的方式完成这样的工作。...而我们可以进行一个测试,关于MYSQL的索引和真是的信息之间是否有差距。...其实我们已经操作了analyze table 但是我们依然没有得到准确的数字,在平时这可能不会有什么问题,但如果是较大的例如上千万的,如果这方面错的比较错,会对执行计划产生问题,这时候可能就需要我们通过手动的方式更新某些记录

    3.9K30

    时区信息记录|全方位认识 mysql 系统库

    在上一期《优化器成本记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql 系统库中的优化器成本记录,本期我们将为大家带来系列第六篇《时区信息记录|全方位认识 mysql 系统库》,下面请跟随我们一起开始...自带的mysql_tzinfo_to_sql程序填充时区。...如果您的系统没有zoneinfo数据库,则可以使用本节后面所述的可下载软件包进行填充时区: # 使用系统自带的时区数据集文件填充MySQL 时区(一次加载操作系统支持的所有时区),mysql_tzinfo_to_sql...命令会读取您系统的时区文件并生成SQL语句插入到MySQL的时区中。...02 时区信息记录详解 2.1. time_zone 该提供查询时区ID和跳秒之间的映射关系数据。 下面是该中存储的信息内容(需要手工导入时区数据信息到数据库才有数据)。

    1.6K10

    20亿条记录MySQL迁移实战

    我们的一个客户遇到了一个 MySQL 问题,他们有一张大,这张有 20 多亿条记录,而且还在不断增加。如果不更换基础设施,就有磁盘空间被耗尽的风险,最终可能会破坏整个应用程序。...而且,这么大的还存在其他问题:糟糕的查询性能、糟糕的模式设计,因为记录太多而找不到简单的方法进行数据分析。...我们为数据准备了新的 schema,使用序列 ID 作为主键,并将数据按月份进行分区。对大进行分区,我们就能够备份旧分区,并在不再需要这些分区时将其删除,回收一些空间。...因此,我们用新 schema 创建了新,并使用来自 Kafka 的数据填充新的分区。在迁移了所有记录之后,我们部署了新版本的应用程序,它向新进行插入,并删除了旧表,以便回收空间。...我开发了一个新的 Kafka 消费者,它将过滤掉不需要的记录,并将需要留下的记录插入到另一张。我们把它叫作整理,如下所示。

    4.7K10

    复制信息记录|全方位认识 mysql 系统库

    在上一期《时区信息记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的时区信息记录,本期我们将为大家带来系列第七篇《复制信息记录|全方位认识 mysql 系统库》,下面请跟随我们一起开始...其中host_name是从库服务器主机名,nnnnnn是文件后缀序列号。...连续的中继日志文件从000001开始的连续序列号创建。使用索引文件跟踪当前正在使用的中继日志文件。...,然后,才会去按照规则寻找一个空闲的worker线程执行,如下图(郑重声明:该图来自书籍《MySQL 运维内参》): 每一个事务在分发到worker线程之后,都会分配一个编号,这个编号在某一段时间内...,这样一,当复制意外终端之后,重新开始复制时,就可以通过所有的worker线程记录的Checkpoint_point_bitmap字段计算出哪些事务是已经执行过的,哪些事务是还未执行的,即通过所有worker

    96130

    记录一次MySQL拆分和迁移

    背景# 最近遇到一个关于MySQL过大的问题,该存放的主要是日志文件,且其中有一个字段存放的数据过大,导致占用空间过大以及查询效率的降低,这种设计其实是不合理的。...目前该占用1.2T容量,数据量超过3亿条,而这个RDS数据库的容量总共就2T,且由于种种原因无法扩容,迫不得已急需给出解决方案。 2....解决方案# 根据上面的背景,可得出以下这些问题,也给出了解决方案: 问题 解决方法 1 某字段占用空间较大,在MySQL中为text类型,存储的是json格式的数据,该字段平均占用空间为5KB 对字段进行压缩...,把json格式压缩成字节序列,压缩后可节省5倍空间左右 2 单数据量过大,而我们的业务是基本只取本年的数据,该中很多不使用的数据导致查询效率降低 对该按年份分,本年的数据为热数据,之前的数据为冷数据...具体做法: 每次查询1万条数据 查询的时候只查询需要的字段,即id字段和需要压缩的字段,id字段为主键,采用主键索引 采用分页查询的方式,即每次查询完记录最后一条数据的id,下一次查询直接在这个id的基础上查询

    1.4K10

    统计信息记录|全方位认识 mysql 系统库

    在上一期《数据库对象信息记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的元数据记录,本期我们将为大家带来系列第四篇《统计信息记录|全方位认识 mysql 系统库》,下面请跟随我们一起开始...MySQL查询优化器使用关于索引的键值统计信息计算索引选择度,根据选择度选择执行计划的索引。那么这些统计信息是如何得来的呢?...统计信息是否精确可以通过SELECT DISTINCT(index_name)返回的值与mysql.innodb_index_stats持久统计信息中提供的估计值进行对比检查。...为了避免这种情况,可以启用系统参数innodb_stats_include_delete_marked确保InnoDB在计算持久化统计信息时包含被打上删除标记的记录。...PS:我们可以使用该中的索引信息页数结合系统变量innodb_page_size的值计算索引的数据大小,如下 root@localhost : mysql 08:31:14> SELECT SUM(

    1K30

    优化器成本记录|全方位认识 mysql 系统库

    在上一期《统计信息记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的统计信息记录,本期我们将为大家带来系列第五篇《优化器成本记录|全方位认识 mysql 系统库》,下面请跟随我们一起开始...01 优化器成本模型概述 为了生成执行计划,优化器使用了基于成本的模型对各种操作成本进行估算。...02 优化器成本记录详解 2.1. engine_cost 该提供查询针对特定存储引擎的操作需要使用到的的优化器成本估算常量值。 下面是该中存储的信息内容。...该记录的有效成本常量值如下: io_block_read_cost(默认1.0):从磁盘读取索引或数据块的成本。...如果需要恢复默认值,只需要将此字段设置为NULL值即可,然后执行FLUSH OPTIMIZER_COSTS语句通知Server重新读取中的数据。

    85020

    Mysql序列

    尽管MySQL本身没有像Oracle那样的序列对象,但它提供了多种方法实现类似的功能,包括自动递增(AUTO_INCREMENT)、触发器和用户变量等。...本文将深入探讨MySQL中的序列生成策略,包括自动递增字段的使用、基于触发器的序列生成,以及使用存储过程和函数的高级序列管理技术,通过具体案例展示每种方法的实现细节和适用场景。...一、自动递增(AUTO_INCREMENT) 定义 自动递增字段是最简单也是最常用的序列生成方法。当向中插入新记录时,如果没有显式指定该字段的值,数据库将自动为其分配一个递增的整数值。...VARCHAR(50), email VARCHAR(100) ); 每当向users中插入新记录时,id字段会自动获得一个新的递增值: INSERT INTO users (username...我们可以创建一个名为sequence_table的辅助存储当前值,并使用触发器在插入新记录时更新这个值: CREATE TABLE sequence_table ( seq_name VARCHAR

    27710

    小白学习MySQL - “投机取巧”统计记录

    同事提了个统计需求,MySQL某个库60%的都有个isdel字段(char(1)),值是0或1,现在要检索该数据库所有存在isdel字段且isdel=‘0’的记录数,举个例子,执行如下的count...的量就通过dba_tab_modifications(数据字典基是mon_mods、mon_mods_all,DML操作记录到mon_mods,然后merge到mon_mods_all)统计的,他会记录数据库的...(2) 依次执行count(*),统计每张记录数。 (3) 将(2)中得到的名和记录数,存储到另外一张中,作为检索用途。 我们按照倒序,依次操作下, 1....(2) 如果(1)的num>0,则将名、记录数、插入时间,存入table_count。...检索table_count,此时记录,就是所有isdel='0',且count(*)>0的名和对应的记录数了, select * from table_count; 其实整个过程,就是我们惯性思维能考虑到的

    4.3K40

    MySQL 序列使用

    MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列实现。...本章我们将介绍如何使用MySQL序列。 ---- 使用 AUTO_INCREMENT MySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 定义序列。...在PHP或PERL脚本中也提供了相应的函数来获取最后的插入中的自增列的值。 PERL实例 使用 mysql_insertid 属性获取 AUTO_INCREMENT 的值。...); $seq = mysql_insert_id ($conn_id); ---- 重置序列 如果你删除了数据中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列...AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); ---- 设置序列的开始值 一般情况下序列的开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句实现

    94100

    SQL-记录历史

    很多时候,都需要对数据进行历史记录。比如每修改一次表单,之前的表单数据都需要计入历史。当表单比较多的时候,记录历史是一件比较麻烦的事情。又要建日志,又要写存储过程,又要写页面逻辑等等。...最近做项目时碰到了,要求每次审核、退回等操作时就要记录历史。于是,笔者就想到了以下方案。在此与大家分享了,如果有更合适的或合理的建议,请回复本帖。...1)创建日志 一个一个建是一件烦躁的事,而且还容易出错。那么,以下存储过程就能批量建了,还添加了LogCreateDate、LogDefaultFlag、LogPTID这3个字段。...3)记录日志 日志有了,还得记录日志呢。为每个写个存储过程会过于繁琐,而且改动了就得跟着改动。就是码农也吃不消。...========================================= -- Author: LWQ -- Create date: 2011-6-29 -- Description: 记录日志

    59330

    mysql分区_MySQL分区分

    水平拆分是指数据行的拆分,把一张的的数据拆成多张存放。...水平拆分原则,通常情况下,我们使用hash、取模等方式进行的拆分 比如一张有400W的用户users,为提高其查询效率我们把其分成4张users1,users2,users3,users4 通过用...ID取模的方法把数据分散到四张内Id%4= [0,1,2,3] 然后查询,更新,删除也是通过取模的方法查询 部分业务逻辑也可以通过地区,年份等字段进行归档拆分; 进行拆分后的,这时我们就要约束用户查询行为...举个简单例子:一个包含十年发票记录可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。...,当id列的值小于3将会插入到p0分区,大于3小于6的记录将会插入到p1分区,以此类推,所有id值大于12的记录都会插入到p4分区。

    10.9K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券