• MySQL Galera Cluster 快速删除大表


    MySQL Galera Cluster 快速删除大表

    先上步骤,以下步骤每台机器上都要按顺序执行。(一台一台搞):

    第一步:为ibd文件创建硬链接来加速删除,减少对数据库造成的影响。

    cd /data/mysqldata/test/
    ln sbtest1.ibd sbtest1.ibd.hdlk


    第二步:进入MySQL,执行两条命令,在执行set命令之后,此session就不要对数据进行操作了,避免数据不同步。

    set @@session.wsrep_on = OFF ;
    drop table sbtest1;


    第三步:退出MySQL,删除.hdlk文件

    rm -r sbtest1.ibd.hdlk


    原理:

    执行完ln命令后,我们发现多了一个是吧sbtest1.ibd.hdlk文件,且sbtest1.ibd.hdlk和sbtest1.ibd的inode数均为2,因为我们知道,一个磁盘上的文件,可以有多个文件系统的文件引用,这个多个文件是完全相同的,都指向同一个磁盘上的文件,当我们删除任何一个文件的时候,都不会影像真实的文件,只是将其被引用数目减1,只有当被引用数目变为1的时候,再次删除文件,才会真正被删除。

    删除时,这两种情况的却别很明显,一个是在减少被引用数目,一个是在真正做IO来删除它。这就将由MySQL来删除大文件的操作转换为一个简单的操作系统级的文件删除,从而减少了对MySQL的影响。

  • 相关阅读:
    防止sql注入的小函数 以及一些小验证
    PHP几个防SQL注入攻击自带函数区别
    redis配置文件.conf和常用配置
    redis常用命令
    redis数据类型
    redis的安装和简单操作
    yum CentOS7安装mysql
    Linux安装mysql
    firewall-cmd 常用命令
    解决linux下启动tomcat找不到jdk
  • 原文地址:https://www.cnblogs.com/likappe/p/9504472.html
Copyright © 2020-2023  润新知