在日常工作中可能会存在误删数据的情况,今天就简单介绍下如何利用延迟库进行数据库的快速恢复。
看到标题,有的童鞋心中暗想“数据删除有什么可提的呢?不就是执行个delete语句吗?有什么难的呀?”其实呢数据删除没有你想的这么简单,一般情况下公司会明确的要求数据只能逻辑删除,不能物理删除。那什么优势逻辑删除,什么又是物理删除呢?
前几天客户反馈,误删除了权限表,导致无法连接到实例中了,但是又没有备份,咨询要怎么去恢复;
删库跑路也是个老梗了,可见在运维数据库的过程中误删除数据,或者开发的代码有bug,造成数据的误删除屡见不鲜。不过现在也有许多用于恢复或预防误删除的方案,例如SQL管理系统,将要执行的SQL先交由管理员审核,然后由管理员备份一个镜像数据库,在镜像上执行该SQL,并在执行后还原镜像。这样经过层层把关就可以大大减小出现误操作的几率。
目前我司正处于一种混乱的开发环境中; 对于数据库字段增修都是开发人员直上服务器数据库修改(我多次强调); 我未入职前,是直接通过SFTP连接服务器,对项目进行开发和修改(话说造成代码覆盖都不知道是谁干的,多次建议开发使用Git); 虽然对开发规范有所改变,但还是因为不可抗力因素无法执行,也是造成我最近想跳槽的原因;
目前我司正处于一种混乱的开发环境中; 对于数据库字段增修都是开发人员直上服务器数据库修改(我多次强调); 我未入职前,是直接通过SFTP连接服务器,对项目进行开发和修改(话说造成代码覆盖都不知道是谁干的,多次建议开发使用Git); 入职后我写一个开发规范文档:软件开发手册(欢迎各位大佬提出意见) 虽然对开发规范有所改变,但还是因为不可抗力因素无法执行,也是造成我最近想跳槽的原因;
从表面意思上看,MySQL分表就是将一个表分成多个表,数据和数据结构都有可能会变。MySQL分表分为垂直分表和水平分表。
再说binlog2sql闪回工具之前,我们先聊下binlog。Binlog记录了MySQL数据库所有的DDL和DML操作。它在MySQL数据库里起着至关重要的作用。
前几天有个新闻,说是gitlab的工程师把数据文件给误删了,搞了个大事件,很多人都去围观了.备份工作应该在最开始的时候就要做,否则就会失去最佳时机,为了保证我的数据是安全的,因此我要搞备份了.备份分为逻辑备份和物理备份,逻辑备份是导sql,物理备份是基于文件的,这两种我都搞一下.
技术交流群总是能带来很多实际生产环境遇到的问题,例如,近期就有人遇到user表内容被清空的情况。如果发生了此情况,千万不要慌,更不能隐瞒问题(这位朋友就比较惨,别人删了也没敢告知,结果binlog已经清理了),以免不利于恢复。现在针对几种情况,进行恢复操作的演示。
在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。
首先看下MySQL误删数据排名最前的几种是什么,然后说几点平时预防误操作导致文件/数据丢失不成熟的建议,最后再说万一发生误操作时,怎么以最快速度进行补救。
例如:如果使用 Navicat、PHPMyAdmin 之类的可视化工具,可以直接点击转储 SQL 文件,或者导出 SQL 文件之类的功能。
数据无价,谨慎操作, 防止误删,学习备份... 一、mysqldump 备份工具 MySQL自带的逻辑备份工具 它支持数据库全备或指定库备份 它备份的输出以文件形式保存 并且文件内容都是SQL语句 选项 含义 -A --all-databases导出MySQL中所有数据库 -B --databases导出一个或多个数据库 -d 只导出表结构 -t 只导出表内容 --tables 指定需要导出的表名 --single-transaction innodb热备启用一个大的事务完成的备份保证数据完整性 --flu
用于保证InnoDB备份数据时的一致性,配合RR隔离级别一起使用;当发起事务时,读取一个数据的快照,直到备份结束,都不会读取到本事务开始之后提交的任何数据
昨天介绍了 MySQL 数据库 UPDATE 更新的用法,今天来讲解下 DELETE 语句。
在前面几篇文章中,我们介绍了 MySQL 的高可用架构。当然,传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。
binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。
爱可生 DBA 团队成员,负责项目数据库日常问题处理及公司 DMP 平台问题处理,对数据库有强烈的兴趣。认为不会游泳的厨师绝不是一个好数据库工程师。
说明:-p表示需要输入用户密码。-u用来指定用户名。用户名和密码需要管理员提前设置。
如果是使用 delete 语句误删了数据行,可以用 Flashback 工具通过闪回把数据恢复回来。 Flashback 恢复数据的原理,是修改 binlog 的内容,拿回原库重放。而能够使用这个方案的前提是,需要确保 binlog_format=row 和 binlog_row_image=FULL。
主服务器上 binlog-do-db= //仅同步指定的库(多个库,可以用“ , ”逗号分隔)——>英文的逗号 , binlog-ignore-db= //忽略指定库 从服务器上 replicate_do_db= //仅同步指定的库 replicate_ignore_db= //忽略指定库 replicate_do_table= //仅同步指定的表 replicate_ignore_table= //忽略指定表, - 例
作为DBA 运维MySQL 数据库的过程中,肯定遇到过在没有备份和binlog的情况下,ibd文件损坏或者误删除数据的情况,如何恢复呢?本文介绍一个工具Percona Data Recovery Tool for InnoDB
那大概是一个春暖花开的季节,我的内心是激动澎湃的,因为已经安排了休假计划。在这前几天,已经把一个新项目的数据库环境都部署好了,包括 自动化备份。
使用flashback工具,原理是修改binlog的内容,拿回原库重放。需要binlog格式为row格式,并且binlog_row_image=FULL
MySQL数据备份与恢复 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 #3. 导出表: 将表导入到文本文件中。 一、使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql (本地使用可以省略 -h 服务器名) 当用户登陆不需要密码时(密码为空或在配置文件中已
备份前准备: 修改InnoDB为独立表空间模式,即在my.cnf中[mysqld]下设置innodb_file_per_table=1 建议创建一个单独的备份目录 例:/xbackup 全备:
前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上数据必然对应用带来一定的影响。大多数情况是开发误操作delete数据,update多数行,根据之前的操作经验,本文介绍常用的恢复方法。
冷备份: 这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。
Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。
假如某个数据库被人删除了,但是拥有数据库权限的人很多,这样有必要记录下每个人的操作纪律。但是如果开启了general log的话,日志又非常大。
数据可以重复导入,每次都是导入的那个数据,如果数据不一致,会以导入的数据覆盖现在有的。
恢复时间点之前首先将全量备份恢复之后,在此基础上回放增加的binlog直至指定的时间点
mysql的下载安装 在mysql官网获取yum源安装包 http://dev.mysql.com/downloads/repo/yum/ 复制下载链接地址为: mysql80-community-release-el7-3.noarch.rpm # 下载和安装 wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm
根本原理:就根据程序的字符串拼接name='%s',我们输入一个xxx' -- haha,用我们输入的xxx加'在程序中拼接成一个判断条件name='xxx' -- haha'
作为小站长,mysql数据库算是比较常用的了。作为运维,肯定遇到过数据被误删的情况。下面模拟数据库为误操作删除后的恢复过程。
当时想了一下,因为博主没有遇到过这个问题,但是也多少了解一些,所以就回答通过mysql的binlog日志进行恢复。
所谓的数据操作语言是指DML,这仅仅只是中英直译而已,具体是指我们对数据表进行增删改查的操作,主要涉及insert,delete,update,select几个关键命令,同时,我们还会结合一些其它的命令进行操作筛选、汇总等。下面我们依次对这些sql脚本操作进行学习。 1.增加数据操作insert
Flashback恢复数据的原理是通过修改binlog内容,拿回原库进行回放,前提是binlog_format=row和binlog_row_image=FULL。
redo是引擎层的日志,而且是InnoDB特有的。InnoDB的redo log是有固定大小的,比如可以配置为 一组4个文件(logfile-1,logfile-2,logfile-3,logfile-4),每个文件的大小是1GB,那么它总共可以记录4GB的操作。一个环状循环结构,从头开始写,写到末尾又回到开始循环写。
本次恢复的数据库安装在客户本地服务器上,服务器操作系统为windows2008 r2 。在当前环境内安装有mysql5.6单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。未进行数据库备份,未开启binlog。
在当前数字化经济的时代下,数据成为企业的关键资产。但因数据误删、服务器故障、病毒入侵等原因导致数据丢失影响业务,会对公司造成重大损失,所以如何保证数据资产的安全、稳定及可用,是企业必须考虑的事情。
有时我们会遇到操作人员误删或者误更新数据的情况,这时我们迫切希望把原来的数据还原回来,今天我们介绍一个简单的工具来方便的实现此功能。
在 IT 圈内,“删库跑路”已经成为程序员经常提及的一句玩笑话。虽然是玩笑话,但却反映了数据库内数据对企业的重要性。2020年的“微盟事件”就直接让香港主板上市公司微盟集团的市值一天之内蒸发超10亿元,数百万用户受到直接影响。
在这里用when方法来判断此索引是否存在,日过不存在的话就不用这个索引,不然会报错,避免有人误删索引后,导致系统报错。 此处强制索引的语句是:
一. 什么是MERGE引擎 MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。
添加jemalloc管理内存 [mysqld_safe] malloc-ib=/usr/lib64/libjemalloc.so
本文分享下对于 my2sql 的一些改进,并且接入到 DBeaver 中供开发便捷使用的一个实际案例。
数据库审计平台(简称DB Audit),实时记录用户操作数据库的行为,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行实时告警。通过对用户访问数据库行为记录、分析和汇报,来帮助DBA事后生成合规报告、事故追根溯源,同时通过搜索技术提供高效查询审计报告,定位事件原因,以便日后查询、分析、过滤,实现加强内外部数据库网络行为的监控与审计,提高数据资产安全。
领取专属 10元无门槛券
手把手带您无忧上云