zoukankan      html  css  js  c++  java
  • percona-toolkit中在线ddl

    percona-toolkit中在线ddl

    percona-toolkit工具提供了一组用于mysql操作的工具,比如主从复制,在线更改mysql表ddl等

    一.安装
    1.安装perl(略)

    yum install perl
    

      

    2.安装必要软件:

    yum install perl-DBI
    yum install perl-DBD-MySQL 
    yum install perl-Time-HiRes 
    

      

    3.安装percona-toolkit
    wget http://percona.com/get/percona-toolkit.tar.gz

    tar zxvf percona-toolkit-2.1.5.tar.gz
    cd percona-toolkit-2.1.5
    perl Makefile.PL
    make
    make test
    make install


    二.使用pt-online-schema-change在线更改ddl

    D代表数据库
    t代表数据表
    alter 代表操作语句,但无需alter table,pt-online-schema-change不能rename table.

    *表必须要有主键,删除主键的更改不会被接受 

    1.增加列(操作)
    pt-online-schema-change -u root -h 127.0.0.1 -p test --alter='drop column vid' --charset=utf8 --execute D=test,t=test

    注意:需要增加--charset,否则可能会造成数据表结构注释的乱码

    2.增加列(只显示操作过程)
    pt-online-schema-change -u root -h 127.0.0.1 -p test --alter='drop column vid' --charset=utf8 --print D=test,t=test

    3.删除列
    pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "DROP COLUMN content " D=aaa,t=tmp_tes

    4.修改字段
    pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "MODIFY COLUMN age TINYINT NOT NULL DEFAULT 0" D=aaa,t=tmp_test --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --execute

    5.字段改名
    pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "CHANGE COLUMN age address

    6.增加索引
    pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "ADD INDEX idx_address(address)" D=aaa,t=tmp_test --no-check-alter --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --print --execute

    7.删除索引
    pt-online-schema-change --user=root --password=123456 --host=192.168.200.25 --alter "DROP INDEX idx_address" D=aaa,t=tmp_test --no-check-alter --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --print --execute

    需要注意:在生产环境中更改,需要备份,及测试,测试无误后再做更改

  • 相关阅读:
    C#线程锁使用全功略
    viewstate 与 session 区别
    Server.MapPath() 用法
    SQL Server 存储过程
    数据库索引的概念
    从C#程序中调用非受管DLLs
    [转载]C++、C#写的WebService相互调用
    解决WCF接口无法传递object参数的问题
    UTF-8,UTF-16
    js 验证字符串是否全为中文
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6131732.html
Copyright © 2011-2022 走看看