首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL - 库了,但是很慢

    mysql 上执行了一句 drop database 半天没有完成,详细的慢查询日志如下,那当时MySQL 在做什么呢?...如果我们从 linux 内核层面看,还是可以发现 mysql 这个时候在执行哪些函数的;从而达到更加细粒度的确认 MySQL 在做什么,进而回答 drop database 为什么慢。...可以看到在库时调用的是 mysql_rm_db 这个函数,而这个函数又调用了 mysql_rm_table_no_locks 函数,mysql_rm_table_no_locks 会去清理数据字典。...那库为什么会慢呢?回答这个问题还需要更加深入地分析才行。 ---- OFF-CPU 如果一个进程所依赖的所有资源都已经准备好,那它就可以被调度到 cpu 上执行。...我在分析清理文件的时候发现 vfs 并没有 rm_file 这样的 API ,而是采用“以写代” 的方式来完成删除操作; 也就是说操作系统并不直接去删除文件,而是把文件系统里面对应的 inode 标记为

    2.4K20

    如何库跑路?教你使用Binlog日志恢复误删的MySQL数据

    前言 “库跑路”是程序员经常谈起的话题,今天,我就要教大家如何!库!跑!路! ?...开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQL的binlog日志是什么?通常是用来干什么的?...所以说,想要能够恢复数据,首先,你得打开Mysql的binlog,在平常你自己安装的单机Mysql中,默认情况下不会开启。下面就一步步地实践下如何开启你服务器上的Binlog日志。...在本文中,我们做一个恢复两条插入语句的操作,执行语句: sudo mysqlbinlog /var/lib/mysql/mysql-bin.000002 --start-position 154 --...网上大部分文章写到mysql-bin.000002,如果你不在目录里,mysqlbinlog命令并不会自动定位binlog所在路径。

    2.1K10

    MySQL中drop和delete用户场景

    关于用户创建的文章,之前写过几篇《MySQL创建用户提示1396》《小白学习MySQL - 不同版本创建用户的些许区别》。 碰巧看到技术社群的这篇文章《同样是用户,为啥还有差别?》...在MySQL当中,对于删除用户的操作大家并不陌生,先来看看问题, # 创建用户testuser01 mysql> create user 'testuser01'@'%' identified by '...接着往下看, # 再次删除用户testuser01 mysql> delete from mysql.user where user = 'testuser01'; Query OK, 1 row affected...mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) # 创建用户testuser01成功 mysql> create user '...分析  还是回到这条语句上,这条语句是创建一个用户'testuser01'@'%',在MySQL当中,这条语句在执行器执行时,大致上看成对mysql库的user表插入一条记录,既然是表,大可以先查查看,

    19020

    库不跑路:论MySQL数据恢复

    /mysql_test/mysql-bin.000032 > backup_inc.sql [mysql@mysql-test-83 ~]$ tail -n 20 backup_inc.sql .......@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup.sql # 应用增量日志 [mysql@mysql-test ~]$ mysql -S /tmp/...table t_innodb; 检查表 使用 mysqldump 导出数据,然后再导入到要恢复的数据库 注意: 在新实例上恢复再dump出来是为了避免风险,如果是测试,可以直接在原库上操作步骤 2-6 在...@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup_inc_1.sql [mysql@mysql-test ~]$ mysql -S /tmp/mysql.sock...是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具,项目链接 MyFlash 限制: binlog格式必须为row,且 binlog_row_image=full 仅支持5.6与5.7 只能回滚DML(增、

    1.5K20

    MySQL库到跑路_高级(六)——索引

    MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。...MyISAM和InnoDB存储引擎支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。     2、索引的优点 A、提高数据检索效率,降低数据库的IO成本。...二、索引的分类 1、单列索引 单列索引包含单个列,但一个表中可以有多个单列索引。 A、普通索引 普通索引允许在定义索引的列中插入重复值和空值。...possible_keys:MySQL在搜索数据记录时可以选用的各个索引 key:实际选用的索引 key_len:显示MySQL使用索引的长度(使用的索引个数),当key字段的值为 null时,索引的长度就是...MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提供效率。

    1.2K20

    库跑路?这篇文章教你如何使用xtraback备份MySQL数据库

    至此全备完全成功,然后向mysql某个库插入几条数据,然后进行增量备份 对完全备份的后数据库更改进行二进制日志增量备份: 查看完全备份时binlog日志位置(position): ?...增量备份二进制文件: [root@master ~]# mysqlbinlog --start-position=1279 /usr/local/mysql/data/mysql-bin.000001...当数据恢复至DATADIR目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如mysql,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。...如: # chown -R mysql:mysql /usr/local/mysql/data/  重启mysql服务查看是否还原成功 ?...授予mysql访问权限 [root@master ~]# chown -R mysql:mysql /usr/local/mysql/data/  启动mysql服务查看还原是否成功 ?

    62310

    MySQL库到跑路(三)——SQL语言

    db.student from 'wang'@'localhost'; 3、数据操作语言(DML) DML:Data Manipulation Language 用于操作数据库对象中所包含的数据,增、、...全局系统变量:针对所有默认设置 会话系统变量:针对当前用户生效,用户登录MySQL会使用全局系统变量,如果会话中更改了变量值,使用更改后的值,不过针对当前用户生效。...如果对一个字段存储了一个超出许可范围的数字,MySQL会根据允许范围最接近的一端截短后再进行存储。MySQL会在不合规定的值插入表前自动修改为0。 UNSIGNED 修饰符规定字段保存正值。...CHAR和VARCHGAR不同之处在于MySQL数据库处理范围指示器的方式:CHAR把范围大小视为值的大小,在长度不足的情况下就用空格补足;而VARCHAR类型把范围指示器视为最大值并且使用存储字符串实际需要的长度...MySQL 会自动使用系统当前的日期和时间来填充它。

    1.8K30

    库时如何避免跑路

    延时节点解决方案 库跑路也是个老梗了,可见在运维数据库的过程中误删除数据,或者开发的代码有bug,造成数据的误删除屡见不鲜。...本小节就简单演示一下如何搭建这种异构集群下的延时节点,我这里已经事先准备好了一个PXC集群和一个用作延时节点的数据库: ?...在Master上执行一些SQL语句,如下: mysql> create database test_db; mysql> use test_db; mysql> CREATE TABLE `student...在Slave节点上分别执行如下语句: mysql> stop slave; mysql> change master to master_delay=1200; -- 设置同步延时为1200秒 mysql...sec) mysql> 此时,因为延时同步的原因,在Slave节点上依旧能够正常查询到被删除的数据: mysql> use test_db; mysql> select * from student

    95020
    领券