在 mysql 上执行了一句 drop database 半天没有完成,详细的慢查询日志如下,那当时MySQL 在做什么呢?...可以看到在删库时调用的是 mysql_rm_db 这个函数,而这个函数又调用了 mysql_rm_table_no_locks 函数,mysql_rm_table_no_locks 会去清理数据字典。...那删库为什么会慢呢?回答这个问题还需要更加深入地分析才行。 ---- OFF-CPU 如果一个进程所依赖的所有资源都已经准备好,那它就可以被调度到 cpu 上执行。...我在分析清理文件的时候发现 vfs 并没有 rm_file 这样的 API ,而是采用“以写代删” 的方式来完成删除操作; 也就是说操作系统并不直接去删除文件,而是把文件系统里面对应的 inode 标记为...---- 结论 通过函数调用堆栈(火焰图)我们可以知道,删除一个库依赖于删除这个库下所有的表,删除一个表不只要清理数据字典还要删除磁盘文件。
说白了就是二进制日志记录了对 MySQL 数据库执行更改的所有操作,若操作本身没有导致数据库发生变化,该操作可能也会写入二进制文件。...这些事件使数据库从备份点更新,数据将变化恢复到指定的时间点(Point-in-time)。...主从复制(replication):主数据库向从数据库发送binlog到从数据库,从数据库执行和复制binlog从而将数据恢复到从数据库中。...审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。 binlog的格式 MySQL有好3种格式记录binlog,具体的格式取决于MySQL数据库的版本。...参考: ❝https://dev.mysql.com/doc/refman/5.7/en/binary-log.html https://baike.baidu.com/item/Mysql%20Binlog
正常情况下还好,但如果操作数据库时出现失误,比如: 删除订单数据时where条件写错了,导致多删了很多用户订单。 更新会员有效时间时,一次性把所有会员的有效时间都更新了。...修复线上数据时,改错了,想还原。 还有很多很多场景,我就不一一列举了。 如果出现线上环境数据库误操作怎么办?有没有后悔药? 答案是有的,请各位看官仔细往下看。...(为了装逼,把自己也坑了,哈哈哈) 线上环境有时候需要通过命令行连接数据库,比如:mysql,你把sql语句复制过来后,在命令行界面执行,由于屏幕滚动太快,这时根本无法确定sql是否都执行成功。...很多时候,由于我们人为失误,把where条件写错了。但没有怎么仔细检查,就把sql语句直接执行了。影响范围小还好,如果影响几万、几十万,甚至几百万行数据,我们可能要哭了。...他们给出的理由是:节省数据库的存储空间。 想法是好的,但是现实很残酷。 如果有条极重要的数据删错了,想恢复怎么办? 此时只剩八个字:没有数据,恢复不了。
删错文件 No~~~可能每个人都干过这种事虽然有回收站,但也不保险有时文件就是被真的删掉了有救吗?
MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。...phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web界面管理MySQL资料库。 ...二、MySLQ存储引擎 1、MySQL存储引擎简介 插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是否使用事务等。...MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据库建模工具,是著名的数据库设计工具DBDesigner4的继任者。...64.rpm MySQL开发库:MySQL-devel-5.6.35-1.el6.x86_64.rpm MySQL共享库:MySQL-shared-5.6.35-1.el6.x86_64.rpm 嵌入式版本
背景# 最近有一个需求,需要根据业务需求更新数据库中某张表的state字段数据,这其实是一个很简单的需求,sql语句就一行更新语句:update table set state = ?...然后编写脚本,根据id一一对应的把state字段的数据修改过来,故障期间造成了一些数据的丢失,不过好在不多,只能根据他们的反馈然后把数据补上 最后,经过分析可以知道,开头提到的写法本身就是错误的,但是mysql
IT 界的有一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了…… 删库跑路,这一几乎每个程序员都懂得一个都市传说,让sudo rm -rf成了大佬蒙骗萌新的高频词汇...值得注意的是,犯罪嫌疑人已通过登录账号和IP地址被追查到,并且并非误操作,而是故意删库。 好吧,言归正传。本文我们来讨论下,程序员如何优雅地删库跑路。 1..../ -name mysql # 删除找到的关于mysql的一切 rm -rf /var/lib/mysql rm -rf /var/lib/mysql rm -rf /usr/lib64/mysql...删库中 可以即使在root用户下还是有些文件删不了,但是这些根本就不会影响到你需要跑路的后果。...删库完毕 删库完毕大部分命令失效,操作系统以及基本不可以用 重启试试 可以看到系统基本废了,不能用了,删库有风险使用需谨慎 开始跑路 8.后记 十二提醒你:道路千万条,数据第一条
日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。...如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件,但若刚好数据库没有打开这个表文件,那就只能跑路了。...> mytest_table_insert.sql # 恢复表结构到 mytest 库 mysql -u -p mytest < mytest_table_create.sql # 恢复表数据到...; DROP TABLE `b` /* generated by server */ 从结果中我们可以看到 drop 所在语句的前一句开始位置是 35134,所以我们同步到 35134 (这个可别选错了...是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具,项目链接 MyFlash 限制: binlog格式必须为row,且 binlog_row_image=full 仅支持5.6与5.7 只能回滚DML(增、删、
链接:http://dwz.date/caSp 日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生。但是,如果每次删库都跑路的话,怕是再也不好找工作了吧!...所以,删库跑路不是上上策。 1、前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。...延迟库停止同步 stop slave; 找出执行了 drop table 语句的前一句的 pos 位置 [mysql@mysql-test ~]$ mysqlbinlog -vv /data/mysql_log.../; DROP TABLE `b` /* generated by server */ 从结果中我们可以看到 drop 所在语句的前一句开始位置是 35134,所以我们同步到 35134(这个可别选错了...限制: binlog 格式必须为 row,且 binlog_row_image=full; 仅支持5.6与5.7; 只能回滚 DML(增、删、改)。
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一、创建数据库 1、创建数据库 创建数据库,指定数据库的默认字符集为utf8。...create database schoolDB default character set utf8; 连接数据库,客户端必须选择UTF8字符集。...数据库中的三张表分别为学生表(student)、课程表(TSubject)、分数表(TScore)。 ?...StudentID nvarchar(15), subJectID nvarchar(10), mark decimal)ENGINE=InnoDB DEFAULT CHARSET=utf8; 二、数据库信息的生成
视图包含一系列带有名称的数据列和数据行,但视图中的数据并不真实存在于数据库中,视图返回的是结果集。...2、创建视图的目的 视图是存储在数据库中的查询的SQL语句,创建视图主要出于两种原因: A、实现安全。视图可设置用户对视图的访问权限。...C、视图对重构数据库提供了一定程度的逻辑独立性 数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。...数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。...在关系数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。
事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次...2、事件的优点 A、对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。 B、可以实现每秒钟执行一个任务,在一些对实时性要求较高的环境下非常实用。...DISABLE ON SLAVE] [COMMENT 'comment']DO event_body; event_name :事件名,不能超64个字符,名字必须是当前Dateabase中唯一的,同一个数据库不能有同名的...2、事件调度器的开启 MySQL默认关闭事件调度器。...global variables like '%event_scheduler%';SHOW PROCESSLIST; 开启事件调度器 set global event_scheduler=ON; 在MySQL
SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、MySQL、Sybase以及其他数据库系统。...,增、删、改。...VERSION() 返回数据库的版本号 CONNECTION_ID() 返回服务器的连接数,也就是到现在为止mysql服务的连接次数 DATABASE(),SCHEMA() 返回当前数据库名 USER(...MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。...忽略DECIMAL数据类型的精度和计数方法修饰符将会使MySQL数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。
在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。...2、索引的优点 A、提高数据检索效率,降低数据库的IO成本。 B、通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 C、大大加快数据的查询速度。...B、使用短索引 C、索引列排序 因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。...3、查看索引占用的磁盘空间 schoolDB数据库索引占用的磁盘空间。...possible_keys:MySQL在搜索数据记录时可以选用的各个索引 key:实际选用的索引 key_len:显示MySQL使用索引的长度(使用的索引个数),当key字段的值为 null时,索引的长度就是
备份 MySQL 中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑。...]> insert into test values (4,'d'); Query OK, 1 row affected (0.00 sec) 3.数据库突然故障(其实是小伙伴没事儿删库练手玩儿),数据无法访问...需要恢复备份: 删库跑路: # 这里为了便于测试,不把删库操作记入日志,当前 session 设置 sql_log_bin 为 off。...# 删库后,执行 flush logs,让后续的 binlog 到新的文件中,即名为 mysql-bin.000003中 MySQL [t2]> set sql_log_bin = 0; Query OK...-+------+ 2 rows in set (0.00 sec) 4.使用 mysqlbinlog 恢复自 mysqldump 备份以来的 binglog 根据前面操作的内容,可知从备份的时间点到删库的时间点之间的操作被记录到了
select * from TStudent where sname like '%志%' or class='net'; 10、查询结果不重复 在SELECT语句中可以使用DISTINCE关键字指示MySQL...studentid<=10 union select studentid, sname from TStudent where sname like '王%'; 13、为表和字段取别名 为字段取别名 MySQL...MySQL不支持全外连接。可以通过左外和右外求合集来获取全外连接的查询结果。...三、对查询结果排序 MySQL中可以通过在SELECT使用ORDER BY子句对查询的结果进行排序。 1、单列排序 ASC代表结果会以由小往大的顺序列出,而 DESC 代表结果会以由大往小的顺序列出。...MySQL用WHERE子句对正则表达式提供了初步的支持,允许指定用正则表达式过滤SELECT检索出的数据。 在SQL查询语句中,查询条件REGEXP后所跟的东西作为正则表达式处理。
心里慌的一批的小林,跟我的朋友们说了这件事,朋友建议我先第一时间上报给 leader,不要把删库的事情瞒着。 于是,小林就向 leader 说了我删库事情,本以为会被痛批一顿。...不过你这么一整,我突然想起编译服务器半年没备份,我先备份一下我的编译服务器,防止哪天也被你们删库了。” 我:“????” 吃瓜的小伙伴,是不是觉得小林要删库跑路了?...哈哈哈,小林没跑路,反而是恢复了回来,所以接下来说说小林是如何「从删库到恢复」的。 正文 初探案发现场 来看看小林写的垃圾代码,是如何引发这次的删库。 ?...遇到 rm -fr /* 删库事件发生,一定要沉住气,稳住心态 本次删库事件,之所以小林能幸运的恢复回来,有非常关键两点: 小林发现脚本执行不正常,果断立马的掐断它,没有造成重要的数据库信息被删除,如果掐断的时候再晚一点...小林现在是一个删过库没跑路的男人了,Goodbye, 我们下次见。
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一、存储过程简介 1、存储过程简介 存储过程是一组具有特定功能的SQL语句集组成的可编程的函数,经编译创建并保存在数据库中...存储过程是数据库管理中常用的技术之一,可以很方便的做些类似数据统计、数据分析等工作,SQL SERVER、ORACLE、MySQL都支持存储过程,但不同的数据库环境语法结构有所区别。...而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 C、存储过程能实现较快的执行速度。...针对同一个数据库对象的操作(如查询、修改),如果操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载...4、存储过程信息的查看 show procedure status; 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。...2、游标的特性 游标具有三个属性: A、不敏感(Asensitive):数据库可以选择不复制结果集 B、只读(Read only) C、不滚动(Nonscrollable):游标只能向一个方向前进,并且不可以跳过任何一行数据...3、游标的优点 游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。...数据库大部分是面对集合的,业务会比较复杂,而游标使用会有死锁,影响其他的业务操作,不可取。 当数据量大时,使用游标会造成内存不足现象。...5、游标的适用场景 MySQL数据库中,可以在存储过程、函数、触发器、事件中使用游标。
“删库跑路”作为一种历史悠久、后果严重的公司资产损坏事故,一旦发生,后果难以估量,轻则业务短时间不可用,重则公司倒闭关门,甚至有人为此坐牢。已经发生的事件历历在目,希望大家引以为戒。...在实际工作中,诸如删除表数据、删除表乃至删除数据库等操作都较为常见,尤其是在测试和发布环境中。作为数据工程师,我们要注意掌握以下 Hive DDL 操作方法,并在生产环境中谨慎执行: 1....删除数据库 DROP DATABASE IF EXISTS mydb; -- 强制删除数据库,级联删除,会递归删除数据库中的所有表及其数据。
领取专属 10元无门槛券
手把手带您无忧上云