Online DDL 工具:pt-osc
对于 MySQL Online DDL 目前主流的有三种工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。
一、原理及限制
1.1 原理
1. 创建一个与原表结构相同的空表,表名是 _new 后缀;
2. 修改步骤 1 创建的空表的表结构;
3. 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;
4. 将原表数据以数据块(chunk)的形式 copy 到新表;
5. rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;
6. 删除触发器。
PowerBuilder是目前公认的 最佳的数据库前端开发工具之一 在实际开发应用中 经常会遇到修改数据库表结构的情况 用PowerBuilder修改数据库表结构与用Foxbase修改数据库结构不同 在PowerBuilder中 除可以在数据库表结构中添加字段名外 无法直接修改数据库表结构 如删除某个字段名或类型或字段名长度等 都会导致数据库表记录的丢失 我们通过实践探索 总结了几种方法仅供大家参考 请大家批评指正一 修改数据库表结构 数据库表中没有记录
方法1 将表结构以Export Table 文件格式输出
从Database中选择要修改的数据库表Table
从Objects中选择Export Table/View Syntax to Log 取名保存即选Save Log As 以* sql格式保存
从Objects中选择Database Administration
从File中选择Dos Open 选文件名File name * sql 打开进行修改
从Objects中选择Execute SQL 即产生一新的数据库表结构
注意 Table名不要同名
方法2 将表结构以SQL Syntax 文件格式输出
从Database中选择要修改的数据库表Table
按Preview键
从File中选择Save Rows as File Format 选SQL Syntax 取表名* sql保存
从File中选择Dos Open 打开表名* sql 进行修改
取表名后 Execute SQL
注意 此种方法没有生成Primary Key
二 修改数据库表结构 保存原数据库表中记录
方法1 先修改数据库表结构 用SQL语句转移数据库表中记录
将表 生成表 sql 修改结构 将表 另取名为表
运行表 sql 生成表 此时产生一新的数据库表结构
从Objects中选择Database Administration 写SQL Statement Insert into 新表名select * from 旧表名 Execute SQL 将旧表中所有字段内容转入新表中
lishixinzhi/Article/program/PB/201311/24573
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)