Online DDL 工具:pt-osc
成都創(chuàng)新互聯(lián)主打移動(dòng)網(wǎng)站、網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、空間域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
對(duì)于 MySQL Online DDL 目前主流的有三種工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要講解 pt-online-schema-change 的使用以及三種工具的簡(jiǎn)單對(duì)比。
一、原理及限制
1.1 原理
1.?創(chuàng)建一個(gè)與原表結(jié)構(gòu)相同的空表,表名是?_new?后綴;
2. 修改步驟 1 創(chuàng)建的空表的表結(jié)構(gòu);
3. 在原表上加三個(gè)觸發(fā)器:delete/update/insert,用于 copy 數(shù)據(jù)過(guò)程中,將原表中要執(zhí)行的語(yǔ)句在新表中執(zhí)行;
4. 將原表數(shù)據(jù)以數(shù)據(jù)塊(chunk)的形式 copy 到新表;
5. rename 原表為 old 表,并把新表 rename 為原表名,然后刪除舊表;
6. 刪除觸發(fā)器。
用如下語(yǔ)法:
alter?table?table_name?rename?table_new_name;
其中,table_name是舊表名,table_new_name是新表名。
mysql簡(jiǎn)介:
MySQL 是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典 MySQL AB 公司開(kāi)發(fā),目前屬于?Oracle?旗下公司。
MySQL 最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL 所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。
MySQL 軟件采用了雙授權(quán)政策(本詞條“授權(quán)政策”),它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。
由于其社區(qū)版的性能卓越,搭配?PHP?和?Apache?可組成良好的開(kāi)發(fā)環(huán)境。
4.4.6刪除字段
語(yǔ)句格式:ALTER TABLE 表名 DROP 字段名;
上面語(yǔ)句格式中,“表名”指定要?jiǎng)h除字段的是哪個(gè)表,“DROP”表示要在表中刪除字段,其后的“字段名”即指定了要?jiǎng)h除的是哪個(gè)字段。
下面截圖中的“ALTER TABLE”語(yǔ)句在t_dept表中刪除了一個(gè)字段descri。
4.4.3修改字段類型
語(yǔ)句格式:ALTER TABLE 表名 MODIFY 字段名?數(shù)據(jù)類型;
在上面語(yǔ)句格式中,“表名”指定要修改的是哪個(gè)表,“MODIFY”表示要修改表中字段數(shù)據(jù)類型,“字段名”指定要修改表中哪個(gè)字段(的數(shù)據(jù)類型),“數(shù)據(jù)類型”指定表中字段要修改成的新數(shù)據(jù)類型。
下面截圖中的“ALTER TABLE”語(yǔ)句將t_dept表中deptno字段數(shù)據(jù)類型由原來(lái)的 int(10)修改為varchar(20)。