RDS MySql支持online ddl

  • 时间:
  • 浏览:0
  • 来源:彩神大发APP_神彩大发APP官方

4.测试:

在测试的过程中,测试插入数据,删除数据,更新数据,观察是是不是阻塞,一齐对表进行不断的压测:

delimiter ;;

CREATE

PROCEDURE e_test()

BEGIN

WHILE 1 DO

insert into t(name,gmt_create,name2) values(‘xxx’,now(),’xxx’);

END WHILE;

END;

;;

b.表中暗含主键将会唯一索引

[root@testadmin bin]# ./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add column is_sign_1 int(11)” D=test,t=t –execute

Cannot chunk the original table `test`.`t`: There is no good index and the table is oversized. at ./pt-online-schema-change line 5365.

下载地址:http://www.percona.com/redir/downloads/percona-toolkit/2.2.1/percona-toolkit-2.2.1.tar.gz

[root@testadmin bin]# ./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add index ind_gmt_create(gmt_create)” D=qianyi,t=t –execute

Altering `qianyi`.`test`…

Creating new table…

Created new table qianyi._test_new OK.

Altering new table…

Altered `qianyi`.`_test_new` OK.

Creating triggers…

Created triggers OK.

Copying approximately 8388785 rows…

Copying `qianyi`.`test`: 41% 00:42 remain

Copying `qianyi`.`test`: 83% 00:12 remain

Copied rows OK.

Swapping tables…

Swapped original and new tables OK.

Dropping old table…

Dropped old table `qianyi`.`_test_old` OK.

Dropping triggers…

Dropped triggers OK.

Successfully altered `qianyi`.`test`.

call e_test();

加上字段:

./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add column is_sign_2 int(11)” D=qianyi,t=test –execute

加上索引:

./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add index ind_gmt_create(gmt_create)” D=qianyi,t=test –execute

修改字段:

./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”modify column is_sign_2 bigint” D=qianyi,t=test –execute

5.结果:

[root@testadmin bin]# ./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add column is_sign_1 int(11)” D=qianyi,t=t –execute

Altering `qianyi`.`test`…

Creating new table…

Created new table qianyi._test_new OK.

Altering new table…

Altered `qianyi`.`_test_new` OK.

Creating triggers…

Created triggers OK.

Copying approximately 8388968 rows…

Copying `qianyi`.`test`: 52% 00:26 remain

Copied rows OK.

Swapping tables…

Swapped original and new tables OK.

Dropping old table…

Dropped old table `qianyi`.`_test_old` OK.

Dropping triggers…

Dropped triggers OK.

Successfully altered `qianyi`.`test`.

[root@testadmin bin]#

[root@testadmin bin]# ./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”modify column is_sign_2 bigint” D=qianyi,t=t –execute

Altering `qianyi`.`test`…

Creating new table…

Created new table qianyi._test_new OK.

Altering new table…

Altered `qianyi`.`_test_new` OK.

Creating triggers…

Created triggers OK.

Copying approximately 8388885 rows…

Copying `qianyi`.`t`: 53% 00:25 remain

Copied rows OK.

Swapping tables…

Swapped original and new tables OK.

Dropping old table…

Dropped old table `qianyi`.`_test_old` OK.

Dropping triggers…

Dropped triggers OK.

Successfully altered `qianyi`.`test`.

mysql> insert into test(gmt_create) values(now());

Query OK, 1 row affected (0.12 sec)

grant REPLICATION SLAVE ON *.* TO ‘test123’@’%’;

附:pt-online-schema-change

mysql> update test set gmt_Create=now() where id=2;

Query OK, 1 row affected (0.300 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> delete from test where id=1;

Query OK, 1 row affected (0.01 sec)

原理:

在线修改表特征的工具,基本外理方式 累似 ,以下对pt-online-schema-change工具的工作原理进行分析:

1、将会占据 外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的外理。

2、创建有有一两个 新的表,表特征为修改后的数据表,用于从源数据表向新表中导入数据。

3、创建触发器,用于记录从拷贝数据始于 并且,对源数据表继续进行数据修改的操作记录下来,用于数据拷贝始于 后,执行哪些地方地方操作,保证数据不让丢失。

4、拷贝数据,从源数据表中拷贝数据到新表中。

5、修改外键相关的子表,根据修改后的数据,修改外键关联的子表。

6、rename源数据表为old表,把新表rename为源表名,并将old表删除。

7、删除触发器。

3.RDS支持:

a.在现有的用户权限基础上开通replication slave权限

[root@testadmin bin]# ./pt-online-schema-change –u=test123 –host=test.mysql.rds.aliyuncs.com –port=33006 –password=hell05a –alter=”add column is_sign_1 int(11)” D=test,t=t –execute

DBD::mysql::db selectall_arrayref failed: Access denied; you need the REPLICATION SLAVE privilege for this operation [for Statement “SHOW SLAVE HOSTS”] at ./pt-online-schema-change line 4051.

在日常和客户沟通的过程中发现,朋友在做mysql ddl变更的并且将会MySql而且 的缺乏不支持online ddl,是导致 朋友的业务不得不hang住一会儿,表越大,时间影响越长,全都期待有更好的外理方式 ;而且 用户也想了而且 方式 ,比如通过主备切换的方式 ,先在备库进行ddl,而且在通过主备切换到原主库进行ddl,但将会RDS对外提供给用户的是有有一两个 dns加port,所并且端的主备对用户是透明的,此方式 行不通。其我我觉得开源社区中将会有比较性成熟图片 图片 是什么是什么的句子的句子的句子的方式 ,那可是我percona的pt-online-schema-change工具是其中之一,下面通过测试主要了解该工具的可靠性以及占据 的问题报告 ,是是不是在RDS上支持。

6结论:

1.RDS开通用户帐号replication slave权限支持pt-online-ddl,用户的表必不可以有主键将会唯一索引;

2.当业务量较大时,修改操作会等待时间那么数据修改后,执行最后的rename操作。而且,在修改表特征时,应该尽量挑选在业务相对空闲时,至少修改表上的数据操作较低时,执行较为妥当。

猜你喜欢

哇靠,阿里云什么情况,服务器爆款仅2折

6、活动中涉及“打折”、“折扣”、“×折”或“省××元”,是指将本活动期间的某款产品的活动价格,与无任何活动期间的相同产品/的日常最小单位售价(类事:月价),按相同购买时长进行

2020-01-29

一个男生和我表白了后。我拒绝了,我和他说了一句我不想谈恋爱,然后他就没有回复我了,觉得他是不是挺小

你找他继续聊他后要照样回复你的,他就怕你不理他,让人拒绝了别人,你说歌词 他还有那些要讲的呢,当你找他聊的过后他高兴都来不及,为何会生你气,我因此原先。展开完正那你想为何样呢

2020-01-29

您觉得在大学里谈恋爱与婚姻的关系挂钩吗?*

步入社会后,社交面会明显变窄,选取的余地相对缩小全都,共要当时人的就更难遇到了。我我觉得大学时,顺其自然有共要当时人的何必 回避。现在我觉得大学时代不谈恋爱真的是一个 多很

2020-01-28

各位有问题可以直接提,紫泷老师结束后会给各位解答

登录后可回答问题,请2019-04-0919:02:30各位有问题后能 直接提,紫泷老师刚刚开始总要给各位解答或来源:[直播]顶端件小哥0人评论314人浏览0收藏

2020-01-28

是不是两个人在一起时间久了比如半年,什么时候都在一起,就会产生依赖,而舍不得分开呢

暗恋是五种自毁,是五种伟大的牺牲。暗恋,甚至不前要对象,朋友不过站在河边,看着被委托人的倒影自怜,却以为被委托人正爱着别人。感情的句子是哪些 和情歌一样,最高境界是余音袅袅。

2020-01-28