首页 > 其他分享 >DBA笔记-第七部分(percona toolkit工具添加索引 )

DBA笔记-第七部分(percona toolkit工具添加索引 )

时间:2024-07-27 12:54:54浏览次数:8  
标签:12 07 DBA 31 toolkit 2024 percona 26T14 table

为处理alter table 的情况DBA常使用percona toolkit工具

下载工具地址:

wget https://www.percona.com/downloads/percona-toolkit/3.1.0/binary/tarball/percona-toolkit-3.1.0_x86_64.tar.gz

解压后cd到bin目录 或者添加环境变量


vim /etc/profile

环境变量最下行添加你自己的bin路径:

export PATH=$PATH:/my_mysql/percona-toolkit-3.1.0/bin

pt-online-schema-change --alter "ADD INDEX idx_column (column_name)" D=my_database,t=my_table --execute

执行失败的话顺序安装CPAN工具-Digest::MD5模块-perl-DBD-MySQL链接工具

-sudo yum install perl-CPAN

sudo cpan Digest::MD5

sudo yum install perl-DBD-MySQL

 我这边多实例选择的是socket连接执行的是(注意要有个主键,我找了半天创建失败问题)

[root@my1 ~]# pt-online-schema-change --alter "ADD INDEX idx_b (b)" D=emp,t=a --execute --socket /temp/mysql.sock4
No slaves found.  See --recursion-method if host my1 has slaves.
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
Operation, tries, wait:
  analyze_table, 10, 1
  copy_rows, 10, 0.25
  create_triggers, 10, 1
  drop_triggers, 10, 1
  swap_tables, 10, 1
  update_foreign_keys, 10, 1
Altering `emp`.`a`...
Creating new table...
Created new table emp._a_new OK.
Altering new table...
Altered `emp`.`_a_new` OK.
2024-07-26T14:31:12 Creating triggers...
2024-07-26T14:31:12 Created triggers OK.
2024-07-26T14:31:12 Copying approximately 3 rows...
2024-07-26T14:31:12 Copied rows OK.
2024-07-26T14:31:12 Analyzing new table...
2024-07-26T14:31:12 Swapping tables...
2024-07-26T14:31:12 Swapped original and new tables OK.
2024-07-26T14:31:12 Dropping old table...
2024-07-26T14:31:12 Dropped old table `emp`.`_a_old` OK.
2024-07-26T14:31:12 Dropping triggers...
2024-07-26T14:31:12 Dropped triggers OK.
Successfully altered `emp`.`a`.

 工具执行完后查看索引是否创建

show create table a;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                               |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| a     | CREATE TABLE `a` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_a` (`a`),
  KEY `idx_b` (`b`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

具体percona toolkit工具原理,简单来说创建几个增删改replace机制的触发器来同步修改备份表,然后把表按固定行数分批插入到备份表中(执行插入时会使用低优先级执行,且忽略报错,因为先有的增量备份可能会有数据重复部分),同时最后删除原表将备份表改为原表名

具体操作情况可以打开通用日志(具体怎么打开,看我前面的文章),将日志改为表,然后执行修改,在通用日志中可以查看修改时执行的语句

标签:12,07,DBA,31,toolkit,2024,percona,26T14,table
From: https://blog.csdn.net/etinemark/article/details/140718009

相关文章

  • DBA笔记-第八部分
    出道关于innodb存储的计算题,来分析为什么数据量不影响索引查询速度:有一个表t主键为a大小为8字节每行数据300个字节,每页大小能存16k那么在b+树高度为123时一页存放的记录数B+树计算(使用8字节指针)数据基础每行记录的大小:300字节每页的大小:16,384字节(16KB)主键的......
  • 如何在不修改DBAPI游标的情况下捕获SQLAlchemy中的所有SQL查询结果?
    我正在尝试实现一个系统,该系统捕获SQLAlchemy中的所有查询结果以用于日志记录和分析目的。然而,在尝试直接修改DBAPI游标时,我遇到了挑战,因为它的属性通常是只读的。因此需要:捕获SELECTSQL查询的所有结果,并使用不同的结果获取方法(fetchone、fetchmany、fetchall、ite......
  • 将DBF文件(dBase, FoxPro等)中的数据转换到SQLite
    将DBF文件(dBase,FoxPro等)中的数据转换到SQLite,可遍历指定目录下所有的dbf文件。可参考以下程序,本程序参考了dbf-to-sqlite: #_*_coding:utf-8_*_'''@File:main.py@Time:2024/07/17@Author:LionGIS@Contact:[email protected]@Description:......
  • 【小白向】在conda-forge中下载cudatoolkit和cudnn报错
    由于直接condasearch没有想要的cudatoolkit版本(当前windows对应的tensorflow-gpu只能<2.11),所以换成conda-forge进行搜索,condainstallcudatoolkit==11.2.0后报错:ERRORconda.core.link:_execute(950):Anerroroccurredwhileinstallingpackage'conda-forge::cudatoolki......
  • KU注册链接:如何手动编译Percona Server for MySQL 5.5
    此文由KU注册链接вт989点сс编译原创,随着MySQL8.x版本的陆续更新,Percona的PerconaServerforMySQL也同样支援,不过想要在新的OS(例如DebianLinux12Bookworm)上使用旧版MySQL,Percona已经不提供5.5版DEB安装档,所以藉由此实验在DebianLinux12Bookwor......
  • 成为MySQL DBA后,再看ORACLE数据库(十三、物理备份)
    前面总结了ORACLE的逻辑备份,本文来总结以下ORACLE的物理备份。数据库的备份一般分为冷备份和热备份,其中冷备份是指将数据库彻底关闭后进行的一致性备份,由于需要关停数据库所以在实际应用中很少用到冷备份。而热备份是指在数据库运行的同时对数据库进行备份,本文主要总结的是ORACLE......
  • day03-loadbalancer
    1概述LoadBalancer:被包含于springcloudcommons下用来替换以前的ribbon组件,一个客户端负载均衡器。不仅支持RestTemplate,还支持WebClient(SpringWebFlux中提供的功能,可以实现响应式异步请求)。客户端负载均衡和服务端负载均衡有什么区别服务端负载均衡:负载均衡在服务器上......
  • Nerdbank.GitVersioning .net 版本自动生成工具
    在.NET7中使用Nerdbank.GitVersioning进行版本控制,可以按照以下步骤进行配置:安装Nerdbank.GitVersioning包:使用NuGet包管理器控制台安装该包: Install-PackageNerdbank.GitVersioning安装nbgv工具:使用.NETCLI安装nbgv工具:dotnettoolinstall-gnbgv......
  • NVIDIA+CUDA Toolkit+Pytroch安装
    1NVIDIA驱动安装一般来说,驱动可以使用兼容的最新版本window安装https://www.nvidia.cn/geforce/drivers/2CUDAToolkit安装(1)CUDAToolkit版本要求win+R输入nvidia-smi查询可以安装CUDAToolkit版本,CUDAToolkit版本小一点没有关系(2)下载CUDAToolkit并直接运行安装h......
  • WPF Performance Suite, Microsoft Windows Performance Toolkit
    Copyfrom https://www.cnblogs.com/lindexi/p/12086719.htmlhttps://learn.microsoft.com/en-us/previous-versions/aa969767(v=vs.110) 1.Downloadurl:  https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKPerformanceT......