主页 > InnoDB存储引擎 > pt-online-schema-change原理与应用

pt-online-schema-change原理与应用

小牛教程 InnoDB存储引擎 2021年07月01日
  pt-osc:支持在线ddl,可以并行执行dml语句,而且主从复制延迟的时间非常少
  

  1.安装pt-osc:

  
  。cd /server/tools/
  
  。rz 上传工具包
  
  。tar zxf percona-toolkit-3.2.1_x86_64.tar.gz 解压工具包
  
  。mv percona-toolkit-3.2.1 /usr/local/pt 移动并改名
  
  ```
  
  安装pt工具依赖:
  
  yum -y install perl-Digest-MD5
  
  yum -y install perl-DBI
  
  yum -y install perl-DBD-MySQL
  
  yum -y install perl-Time-HiRes
  
  yum -y install perl-IO-Socket-SSL
  
  ```
  
  。vim /etc/profile 将pt目录加入到环境变量
  
  ​    PATH="$PATH:/usr/local/mysql/bin:/usr/local/pt/bin"
  
  。. /etc/profile 环境变量生效
  

  2.pt-osc语法

  
  pt-osc执行条件:操作的表必须是具有主键索引或唯一索引
  
  pt-online-schema-change --user=root --password=123456 --socket=/data/mysql/mysql3306/mysql.sock D=db,t=t1 --alter "add name varchar(10) not null" --execute
  
  alter table t1 add name varchar(10) not null;
  
  --user指定用户
  
  --password=指定密码
  
  --socket指定socket文件
  
  D 指定操作的数据库
  
  t 指定操作的表
  
  --alter 指定表结构变更命令
  
  --execute 执行
  
  案例:
  
  添加索引:pt-online-schema-change --user=root --password=123456 --socket=/data/mysql/mysql3306/mysql.sock D=db,t=t1 --alter "add index i_name(name)" --execute
  
  alter table t1 add index i_name(name);
  
  修改字段类型:pt-online-schema-change --user=root --password=123456 --socket=/data/mysql/mysql3306/mysql.sock D=db,t=t1 --alter "modify name varchar(30) not null" --execute
  
  alter table t1 modify name varchar(30) not null;
  

  3.pt-osc原理:


  
  。创建一个和原表结构一致的新表(t1_new)
  
  。在原表上添加insert update delete三个触发器
  
  。从原表拷贝数据到新表中
  
  。拷贝完数据后,将t1 改名 t1_old,将新表改名为t1
  
  。删除t1_old
广告位
标签: mysql索引