在mysql 5.6的环境下修改生产环境的表结构(在线ddl) ----工具pt-osc
随着需求的变化越来越快,在线修改表结构变得越来越需要。
在mysql5.6以前,mysql的修改表结构操作会锁表,这样就会造成开发人员或者DBA修改表结构必须要等到凌晨流量谷值或者停服修改。这样必定会流失一部分用户,在当下的互联网需求里是不太能容忍的。
在mysql5.6之后,虽然mysql支持在线ddl,但是一些操作仍然会造成锁表。详情请看mysql官方文档介绍。
所以博主在查阅工具手册,他人经验后,采取了一种相对稳妥的办法。采用pt-osc工具。
注:pt-osc不适用于
1:修改带有触发器的表
2:不能用于修改主键
//在线修改tb_pt_user表结构(在线ddl)
一、安装插件
1.sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
2.yum list | grep percona-toolkit
3.冲突问题先手动安装yum list Percona-Server-shared-compat包
4.yum install Percona-Server-shared-compat.x86_64
5.sudo yum install percona-toolkit
二、数据更新处理
1.更新zwcmopenid 的NULL字段为''
update tb_pt_user set zwcmopenid = '' where zwcmopenid is null;
2.更新openid 的NULL字段为''
update tb_pt_user set openid = '' where openid is null;
3.更新usernmae 的NULL字段为''
update tb_pt_user set username = '' where username is null;
4.更新telephone 的NULL字段为 '0'
update tb_pt_user set telephone = '0' where telephone is null;
5.更新country 的NULL字段为''
update tb_pt_user set country = '' where country is null;
6.更新province 的NULL字段为''
update tb_pt_user set province = '' where province is null;
7.更新city的 NULL字段为''
update tb_pt_user set city = '' where city is null;
8.更新sex的 NULL字段为 0
update tb_pt_user set sex = 0 where sex is null;
9.更新picture 的NULL字段为''
update tb_pt_user set picture = '' where picture is null;
10.更新browsetime 的NULL 字段为 '1900-01-01 00:00:00'
update tb_pt_user set browsetime = '1900-01-01 00:00:00' where browsetime is null;
11.更新channelid 的NULL 字段为 0
update tb_pt_user set channelid = 0 where channelid is null;
12.更新ptid 的NULL字段为 0
update tb_pt_user set ptid = 0 where ptid is null;
13.更新template 的NULL字段为0
update tb_pt_user set template = 0 where template is null;
14.更新createtime 的NULL字段为 '1900-01-01 00:00:00'
update tb_pt_user set createtime = '1900-01-01 00:00:00' where createtime is null;
15.更新cardno 的NULL字段为 '0'
update tb_pt_user set cardno = '0' where cardno is null;
16.更新bindbankcard 的NULL字段为0
update tb_pt_user set bindbankcard = 0 where bindbankcard is null;
三、通过pt-osc工具修改表结构
pt-online-schema-change h=127.0.0.1,u=root,p=,D=test_user,t=tb_pt_user --alter="MODIFY zwcmopenid varchar(64) NOT NULL DEFAULT '',MODIFY openid varchar(64) NOT NULL DEFAULT '',MODIFY username varchar(128) NOT NULL DEFAULT '',DROP COLUMN password ,MODIFY telephone varchar(20) NOT NULL DEFAULT '0',MODIFY country varchar(16) NOT NULL DEFAULT '',MODIFY province varchar(16) NOT NULL DEFAULT '',MODIFY city varchar(16) NOT NULL DEFAULT '',MODIFY sex tinyint(1) NOT NULL DEFAULT '0',MODIFY picture varchar(255) NOT NULL DEFAULT '',DROP COLUMN email ,DROP COLUMN address ,MODIFY browsetime datetime NOT NULL DEFAULT '1900-01-01 00:00:00',DROP COLUMN device ,MODIFY channelid int(11) NOT NULL DEFAULT '0',DROP COLUMN channelname,MODIFY ptid int(11) NOT NULL DEFAULT '0',DROP COLUMN ptname ,MODIFY template tinyint(1) NOT NULL DEFAULT '0',MODIFY loadfull tinyint(1) NOT NULL DEFAULT '1',MODIFY createtime datetime NOT NULL DEFAULT '1900-01-01 00:00:00',MODIFY cardno varchar(32) NOT NULL DEFAULT '',MODIFY bindbankcard tinyint(4) NOT NULL DEFAULT '0',ADD COLUMN is_check_tel tinyint(1) NOT NULL DEFAULT 0,ADD INDEX idx_tel_zwcmopenid (telephone,zwcmopenid)" --set-vars --lock-wait-timeout=1 --ask-pass --execute --no-drop-old-table
在mysql 5.6的环境下修改生产环境的表结构(在线ddl) ----工具pt-osc的更多相关文章
- 一、在windows环境下修改pip镜像源的方法(以python3为例)
在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...
- (转)win下修改jdk环境变量后,java版本不变 java -version
背景:在windows下安装了多个版本的jdk,发现修改环境变量无法切换. win 7环境下修改JAVA_HOME后,在命令行执行:java -version 发现版本没有变化,以为需要重启才行,就把 ...
- Windows环境下修改Oracle实例监听IP地址
Windows环境下修改Oracle实例监听IP地址. 配置文件路径:<ORACLE_HOME>\NETWORK\ADMIN 如:C:\Oracle11gR2\product\11.2.0 ...
- 不停机不停服务,MYSQL可以这样修改亿级数据表结构
摘 要:本文阐述了MySQL DDL 的问题现状.pt-online-schema-change的工作原理,并实际利用pt-online-schema-change工具在线修改生产环境下1.6亿级数 ...
- Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1
交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...
- win 环境下 node.js环境变量
在win 环境下 node.js环境变量有两种情况: (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...
- 番外篇:搭建Windows环境下的RabbitMQ环境
搭建Windows环境下的Rabbitmq环境 下载erlang语言包OTP.官网地址: https://www.erlang.org/downloads 如果下载不了,可以选择百度网盘下载,里面的版 ...
- Tomcat与Jre绿色环境配置(生产环境)
Tomcat与Jre绿色环境配置(生产环境) 博客分类: Apache Java jreapachetomcat Tomcat运行时需要jre的支持,一般有两种方式,一种是用jdk带的jre,另一种 ...
- [资料收集]MySQL在线DDL工具pt-online-schema-change
MySQL在线DDL工具pt-online-schema-change pt-online-schema-change使用说明(未完待续) 官网
随机推荐
- HTML 5入门知识(三)
<canvas>标签 在网页中使用canvas元素,像使用其他HTML标签一样简单,然后利用JavaScript脚本调用绘图API,绘制各种图形.canvas拥有多种绘制路径.矩形.圆形. ...
- h5标签基础 table表格标签
一.表格的定义:用于有规范的显示数据. 二.基本组成: 行<tr>/列<td>/表头<caption>/表标题<th> eg: <table> ...
- iOS集成ApplePay
Apple Pay正式在国内上线的那天,一起工作的小伙伴就走进了Starbucks,7-11等带有银联闪付的店进行了尝鲜.不管是否要再次输入一次密码,但是它的出现确实给我们带来了极大的便捷.下面就尝试 ...
- BigInteger和BigDecimal的练习
前言: BigInteger用于处理大数据的计算,它继承自java.math.BigInteger.用法相对来说比较简单,掌握几个基本运算即可. 初始化: BigInteger sum=new Big ...
- python3.4 安装 scrapy 报错 VS2010
安装scrapy框架报错是常见问题 还好,本人只碰到其中一个bug,以下是此次安装经验 环境 py3.4 windows7 64位 安装有VS2010 pip包管理(pycharm) 报错信息 安装l ...
- 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路
1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 3 ...
- UINavigationBar统一修改导航条样式
#pragma mark -- 统一导航条样式 //统一导航条样式 UIFont *font = [UIFont systemFontOfSize:19.f]; NSDictionary *textA ...
- Angular企业级开发(9)-前后端分离之后添加验证码
1.背景介绍 团队开发的项目,前端基于Bootstrap+AngularJS,后端Spring MVC以RESTful接口给前端调用.开发和部署都是前后端分离.项目简单部署图如下,因为后台同时采用微服 ...
- JVM-Java程序性能监控-初级篇
前篇 - 小伙们都知道,java程序的性能监控主要是针对jvm中heap的监控~ 那么在做压力测试时如何对heap.线程等一系列的指标进行的监控的呢? 首先-你若不懂命令,那么就需要了解一套Java程 ...
- Effective Modern C++ Item 27:重载universal references
假设有一个接收universal references的模板函数foo,定义如下: template<typename T> void foo(T&& t) { cout ...