博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql之 openark-kit online ddl
阅读量:6814 次
发布时间:2019-06-26

本文共 3693 字,大约阅读时间需要 12 分钟。

MySQL工具集openark-kit (官方网站 http://code.openark.org/forge/openark-kit),内部包含很多小工具,在5.6之前用于实现online ddl操作,

本文以CentOS为操作系统,且默认操作系统中已经安装Python环境。

 

1.0、 安装openark-kit工具包

安装Python模块包之MySQL-python,用于使用Python连接操作MySQL使用。

yum install -y MySQL-python

RPM安装方式

获得RPM包 https://code.google.com/p/openarkkit/downloads/detail?name=openark-kit-196-1.noarch.rpm

执行命令 rpm -ivh openark-kit-196-1.noarch.rpm

TAR包安装方式

获取tar包 https://code.google.com/p/openarkkit/downloads/detail?name=openark-kit-196.tar.gz

解压tar包 tar -zxvf openark-kit-196.tar.gz -C /usr/local/openark-kit/
安装openark-kit工具 python setup.py install

 

1.1 sysbench加载数据

/u01/sysbench-0.5/sysbench/sysbench --test=/u01/sysbench-0.5/sysbench/tests/db/insert.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=root123 --mysql-port=3306 --mysql-host=127.0.0.1 --mysql-db=replTestDB --max-requests=0 --max-time=60 --oltp-tables-count=2 --report-interval=10 --num_threads=2 prepare

/u01/sysbench-0.5/sysbench/sysbench --test=/u01/sysbench-0.5/sysbench/tests/db/insert.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=root123 --mysql-port=3306 --mysql-host=127.0.0.1 --mysql-db=replTestDB --max-requests=0 --max-time=60 --oltp-tables-count=2 --report-interval=10 --num_threads=2 run

1.2 检查ONLINE_DDL表是否有外键触发器 有则删除

** 通过 information_schema.key_column_usage**

SELECT TRIGGER_SCHEMA,TRIGGER_NAME,EVENT_OBJECT_SCHEMA,

EVENT_OBJECT_TABLE
FROM information_schema.TRIGGERS
WHERE event_object_schema = 'replTestDB';

Select * from information_schema.key_column_usage where

Referenced_table_schema='replTestDB' and
Referenced_table_name='sbtest1';

1.3 ONLINE_DDL

cd /u01/tools/openark-kit-196/scripts/

python oak-online-alter-table -u root --ask-pass -S /u01/mysql/my3306/run/mysql.sock -d replTestDB -t sbtest1 -g new_sbtest1 -a "add last_update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,add key last_update_time(last_update_time)" --sleep=300 --skip-delete-pass

1.4 ONLINE_DDL后数据校验

select count(*) from sbtest1

union all
select count(*) from new_sbtest1;

mysql> desc new_sbtest1
-> ;
+------------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| k | int(10) unsigned | NO | MUL | 0 | |
| c | char(120) | NO | | | |
| pad | char(60) | NO | | | |
| last_update_time | timestamp | NO | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------------+------------------+------+-----+-------------------+-----------------------------+
5 rows in set (0.02 sec)

1.5表切换

use replTestDB;

set names utf8;
rename table sbtest1 to old_sbtest1,new_sbtest1 to sbtest1;

mysql> SELECT TRIGGER_SCHEMA,TRIGGER_NAME,EVENT_OBJECT_SCHEMA,

-> EVENT_OBJECT_TABLE
-> FROM information_schema.TRIGGERS
-> WHERE event_object_schema = 'replTestDB';
+----------------+----------------+---------------------+--------------------+
| TRIGGER_SCHEMA | TRIGGER_NAME | EVENT_OBJECT_SCHEMA | EVENT_OBJECT_TABLE |
+----------------+----------------+---------------------+--------------------+
| replTestDB | sbtest1_AI_oak | replTestDB | sbtest1 |
| replTestDB | sbtest1_AU_oak | replTestDB | sbtest1 |
| replTestDB | sbtest1_AD_oak | replTestDB | sbtest1 |
+----------------+----------------+---------------------+--------------------+
3 rows in set (0.01 sec)

drop trigger sbtest1_AI_oak;
drop trigger sbtest1_AU_oak;
drop trigger sbtest1_AD_oak;
drop table old_sbtest1;

 

转载于:https://www.cnblogs.com/andy6/p/9828492.html

你可能感兴趣的文章
windows CMD命令查看局域网内所有主机名及IP
查看>>
Android WebView 开发详解(二)
查看>>
浏览器窗口 标签 图标 ,添加方法
查看>>
数据库主键外键总结
查看>>
Interaction
查看>>
goquery
查看>>
前端页面性能参数搜集
查看>>
Python操作excel
查看>>
Xtreme9.0 - Car Spark 动态规划
查看>>
加载和使用纹理
查看>>
impala 导出CSV 或excel
查看>>
Nuget控制台 - 给你的快速添加缺少的包
查看>>
ORACLE 使用RMAN管理归档日志 archived log
查看>>
最大流算法
查看>>
Oracle 级联with admin option 和 with grant option
查看>>
Leetcode: Min Stack
查看>>
C和C++头文件大全
查看>>
ExtJS中,将Grid表头中的全选复选框取消复选
查看>>
mmc加工配套问题
查看>>
JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
查看>>