范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

mysql之ptschemachange

  条件:
  1,表格必须带有主键或者唯一索引
  1, 原理
  1.1 检查表是否带有主键或者唯一索引,show create table test;
  1.2 创建新表,create table _test_new;
  1.3 变更新表,alter table _test_new;
  1.4 在原表上创建 insert、update、delete 三种类型的触发器;
  1.5 将旧表的数据拷贝到新表中,同时通过触发器将旧表中的操作映射到新表;
  1.6 将新表替换原表,rename 表名,RENAME TABLE `testdb`.`test` TO `testdb`.`_test_old`, `testdb`.`_test_new` TO `testdb`.`test`
  1.7 删除旧表(可以根据选项来控制是否删除旧表)
  1.8 删除新表上的删除、更新、插入 触发器
  2, 使用场景
  2.1 亿级大表在线不锁表变更字段与索引
  3,pt-online-schema-change安装
  yum install perl-DBI
  yum install perl-DBD-MySQL
  yum install perl-Time-HiRes
  yum install perl-IO-Socket-SSL
  4,pt-online-schema-change使用
  选项:--alter 修改的内容,不支持 rename表重命名。 --alter-foreign-keys-method :auto 自动选择 rebuild_constraints 或者 drop_swap,优先选择rebuild_constraints --no-drop-old-table 确认后再手动删除 --ask-pass --execute 创建触发器,保证最新的变更数据及时更新到新表。注意:如果不加这个参数,这个工具在执行会再制造一些检查后退出。 --max-load --max-load="Threads_running=100,Threads_connected=500" --chunk-time 默认0.5s,即拷贝数据行的时候,为了尽量保证0.5s内拷完一个chunk,动态调整chunk-size的大小,以适应服务器性能的变化 --chunk-size 禁止动态调整,如果指定则默认1000行 --max-lag=5 默认为 1s 每个 chunks 拷 完成后,会查看 check-slave-log 参 数所指定的从库的延迟信息,如果超过了max-log的阀值则暂停复制数据,直到复制延迟小于 max-log 的阀值。检查复制延迟信息依赖于 show slave status 返回中 的 seconds_behind_master 列的值 --check-interval=2 当出现复制延迟暂停复制数据后,按照 check-interval 指定时间周期来检查复制延迟,直至延迟时间低于 max-log 阀值然后进行拷 数据。 --check-slave-lag 指定主从复制延迟大于选项"--max-lag"指定的值之后暂停检查校验操作。默认情况下,工具会检查所有的从库,但该选项只作用于指定的从库(通过DSN连接方式)。 --recurse=i --recursion-method ;processlist host --no-check-replication-filters --dry-run: 这个参数不建立触发器,不拷 数据,也不会替换原表,只是创建和 更改新表 --print配合最佳 --set-vars 如设置sql_log_bin=0,一般不设置 --no-version-check 阿里云RDS必须添加此参数 D 数据库名 t 表名 --check_size:用于每次控制每次拷 数据的大小,默认 1000 --chunk_size_limit:默认值 4.0;当需要复制的块大于设置的 chunk_size 大小,就不复制 --critical-load:default thread_runing = 50,该参数在 copy 每个块后检查 show global status,如果负载过高则终止,如果不给出,则工具检查启动当前值来确定阀值。 --max-load:default threads_running=25 该参数用于拷 数据每个数据块的时候进行检查 show global status,如果任何状态变量高于阀值会暂停,如果不设置,该工具会在检测到的当前值上再加 20%来 确定阀值(方式 Threads_connected:100 或者 Thread_connected:110)该选项 主要 的是为了防止给服务器添加太多的负载,导致锁等待以及其他干扰行为。 --[no]drop-new-table 默认为 YES,如果复制失败后,删除新表。 --[no]drop-old-table 注意:执行该参数需指定—nodrop-new-table 复制的新表很大,新的数据都会缓存在bufferpool 内。 Mysql 在删除表的过程中 innodb 会将文件在 buffer pool 中对应的 面清 楚。如果这里设置 buffer pool 的值过大的话,或者 buffer pool 里面有很 多需要被 flush 的 面,那么此时要遍历扫描 面就会占用比较 的时间, 导致其他事物在用到 buffer pool 实例时就会阻塞,从而影响到整个数据库 的性能。造成了 MySQL 夯住。 那么此表的删除可以停放一周后进行删除 --charset=utf8	连接到MySQL后运行SET NAMES UTF8 --check-replication-filters	检查复制中是否设置了过滤条件,如果设置了,程序将退出 --no-check-replication-filters	不检查复制中是否设置了过滤条件 --set-vars	设置mysql的变量值 --chunk-size	默认值:1000,为每个复制的块选择的行数。 --[no]drop-old-table	默认值:是;重命名后删除原始表。成功重命名原始表以让新表取代它之后,如果没有错误,该工具将默认删除原始表。如果有任何错误,该工具会将原始表保留在原位。注意:如果异常中断,则需要删除原表上已创建的触发器与创建出的新表"_XXXXX"
  示例:
  1, 添加列pt-online-schema-change --alter "add column c1 int" h=localhost,u=root, P=3306,D=test,t=user --ask-pass --no-drop-old-table --execute
  2, 删除列pt-online-schema-change --alter "drop column c1" h=localhost,u=root,P=3306,D=test,t=user --ask-pass --no-drop-old-table --execute
  3, 添加索引pt-online-schema-change --alter "add index idx_ename(ename)" h=localhost,u=root,P=3306,D=test,t=test --ask-pass --no-drop-old-table --execute
  4, 删除索引pt-online-schema-change --alter "drop index idx_ename" h=localhost,u=root,P=3306,D=test,t=test --ask-pass --no-drop-old-table --execute
  5, 修改字段长度pt-online-schema-change --alter "modify column remark text " h=localhost,u=root,P=3306,D=test,t=test --ask-pass --no-drop-old-table --execute
  6,重建表pt-online-schema-change -hIP -uroot --no-version-check --no-drop-old-table --alter="engine=innodb" D=test,t=test --ask-pass --critical-load="Threads_running=400" --execute
  7, 修改自增ID为bigintpt-online-schema-change -hIP -uroot --no-drop-old-table --alter="modify id bigint not null auto_increment" D=test,t=test --ask-pass --critical-load="Threads_running=400" --execute
  8 添加字段pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "add comment varchar(50)" --charset=utf8 --execute 限制活跃连接超出25即停止pt-osc操作,--critical-load=Threads_running=25
  9 修改字段pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "modify column comment varchar(50) character set utf8mb4" --execute
  10 删除字段pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "drop column comment,drop column comment2" --execute
  11 添加索引pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "add index idx_b(b)" --execute
  12 删除索引pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "drop index idx_b" --execute
  13 修改字段为null/not null
  # 改为nullpt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "modify column c varchar(255) default null" --execute
  # 改为 not nullpt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "modify column c varchar(255) not null" --execute
  14 添加主键pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "add primary key(id)" --execute
  15 删除主键pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "drop primary key" --execute
  16 重建表pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "engine=InnoDB" --execute
  17 保留变更的新旧表
  # 保留旧表pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "add comment varchar(50)" --no-drop-old-table --execute
  # 保留新表,pt-online-schema-change h=192.168.66.101,P=3306,D=ytest,t=data_million_small --user=root --ask-pass --alter "add comment2 varchar(50)" --no-drop-new-table --no-swap-tables --new-table-name="data_million_small_newt" --execute
  优势:
  1,降低主从延时的风险
  2,可以限速、限资源,避免操作时MySQL负载过高
  建议:
  1,在业务低峰期做,将影响降到最低

人海战术玩不下去,险企的出路在哪要致富,背话术赚大钱,多增员。曾几何时,人海战术是保险业颠扑不破的成功之道。因为保险公司的核心竞争力说来说去,最后都会落到人身上,有人不一定有保费,没人就一定没保费。过往20年,只PDL1临床超预期,基石药业将上演中国版K药逆袭故事?得适应症得天下,这句话虽然老套但实用。这在PD1市场的竞争中,体现的淋漓尽致。早几年,K药便是通过占领肺癌适应症,一举逆袭O药,成为一代药王。O药拿到一手好牌却打烂,说起来,它是败资本偏爱背后,微盟打出数字商业组合拳这几年,随着互联网进入下半场,ToB生意成为互联网行业的最大风口。几乎所有投资人心中都坚信一点中国SaaS大概率能复制美国过去20年的辉煌时代。在很多投资人看来,押注SaaS领域,13年366倍的申洲国际,还是个好标的吗?世道真是变了。一家做服装代工的企业,市值能够做到3000多亿港元,申洲国际堪称一个神话。另一个代工神话则是,电子烟行业的思摩尔国际。不同于思摩尔国际的资本坦途,申洲国际的资本市场之一季报背后,51Talk的认知差在行为经济学中,对认知差有这样一段描述人对事物的直观判断,受本身知识储备和感性因素双方面的影响,因而对事物的认知往往是不准确的,一旦打破偏差,形成正确的认知,就会产生禀赋效应即,人长城汽车大跃进过分依赖于前30年,长城汽车挺得过明年吗?2020年7月,长城汽车成立30年,发布了一个微电影,董事长魏建军亲自出镜,抛出了这句发人深省的灵魂拷问。在颠覆性巨变面前,一家企业的负隅陆金所的拐点到了?有投资人说,这是一个前所未有的时代。一方面,革命性的新技术愈加快速地涌现和体量的指数级增长,使得有很多的科技公司上市后仍能拥有10倍20倍增长的空间。另一方面,创新技术产生的价值也最强一季报背后,小米的科技原力觉醒19世纪,法拉第发现电磁感应现象,做了一个小模型向大家展示,但当时,一位夫人讥笑他的研究,说您的发明很好,可它有什么用呢?法拉第反问道新生的婴儿有什么用?后来的事情,大家都知道了。银行不相信互联网没有边界8901亿元。这是蚂蚁基金一季度末非货币市场公募基金的保有规模,位列全市场第一。短短几年时间,蚂蚁超过所有金融机构,包括宇宙行与零售之王。互联网巨头的能量果然不可小觑。但当它们想要瑞思教育全面升级背后,素质教育正在驶向宽阔水域2021年,教育行业的日子并不好过。突如其来的监管政策,让很多公司猝不及防。但拉长周期看,教育行业仍然是中国最具确定性最强的行业之一。究其原因,在当下社会环境下,教育可能是比住房医Docker实战001简单的认识下docker什么是DockerDocker是一个开源的轻量级虚拟化技术容器,它可以将应用程序的代码运行环境依赖库配置文件等资源打包到一个容器中。Docker可以将硬件上的资源进行隔离,避免程序
阅文为什么被腾讯接管?酝酿了一天的瓜终于落下。北京时间2020年4月27日傍晚,阅文集团官宣管理团队调整,包括首席执行官吴文辉在内的几位高管荣退,辞任管理职位,接任的新CEO为腾讯集团副总裁腾讯营业首席李国庆今日回当当夺权4月26日,当当网原创始人李国庆回到位于北京的当当总部夺权。据目击者称,李国庆背后跟着四个大汉,直奔保存公章的员工去了,以股东名义把公章带走。该目击者称,警察都来了。随后,一封告当周冬雨多了件内衣叫维密身材娇小的青年演员周冬雨,一直给人以少女感,这与她的平胸有点关系,然而最近她多了件内衣叫维密。4月20日,美国内衣品牌维多利亚的秘密(VictoriasSecret)宣布大中华区的做空机构的秃鹫式生存瑞幸咖啡这件事,当多数媒体都在夸赞做空机构浑水之际,背后的那份详做空报告才是它最致命的一击。4月3日的报道中,我对瑞幸自燃的原因已有所分析其一是因为这份做空报告,瑞幸在海外遭到集体一剪梅为何会爆火欧美?XueHuaPiaoPiaoBeiFengXiaoXiao这串字符代表什么?它就是雪花飘飘北风啸啸的汉语拼音。最近,这串字符爆火欧美,外国网友都如何使用?上海热线的一则报道举了如下别了,OurHours全时文新经济沸点郭娟5月11日,OurHours全时(以下简称全时)便利店曝出将于5月20日24点前关闭北京地区所有店面,全场商品6到7折。受此消息影响,北京的多家全时店面均出现排队抢网红炮制了巴菲特退休文新经济沸点郭娟6月17日起,一则书信在流传,因为事关股神巴菲特将退休,所以得到了广泛关注,信中煞有介事地透露了大家关心的问题,巴菲特退休后,他的继承人是谁?信中描述由DavidS荣耀30Pro体验报告不完美,但足够诚意!今年上半年的旗舰机扎堆,感觉高端手机市场的竞争从来没有这么激烈过。备受关注的荣耀数字终于来了。和华为P40系列一样,荣耀直接发布了3款新品荣耀30荣耀30Pro荣耀30Pro,不用华为畅享Z深海蓝配色惊艳登场千元5G,一步到位随着5G网络的快速覆盖,手机厂商的5G新品也接踵而至,从去年动则三五千才能买到的5G手机,今年已经覆盖到千元价位。今天,华为迎来了首款的5G新品华为畅享Z。华为畅享Z旨在为Z世代年净无止境!HUAWEIHiLink生态再添新品卡赫智能净水器600G体验很多人问,净水器有必要买吗?我认为,不仅有,而且非常有必要!毕竟是天天喝到肚子里的。由于工作原因,买了一套简装房,就是简单到不能再简单的那种。房子最大的缺点就是厨房小,小到不能再小魅族17系列正式发布,你想知道的都在这里了魅族1723401080分辨率,6。6英寸SuperAMOLED屏幕,2。99mm孔径,90Hz刷新率,100DCIP3,局部峰值1100nit,全局峰值700nit,300万美金