一、mysql百萬(wàn)級(jí)表在不停機(jī)的情況下增加一個(gè)字段要怎么處理的
mysql百萬(wàn)級(jí)表在不停機(jī)的情況下增加一個(gè)字段使用pt-online-schema-change。pt-online-schema-change是percona公司開(kāi)發(fā)的一個(gè)工具,在percona-toolkit包里面可以找到這個(gè)功能,它可以在線(xiàn)修改表結(jié)構(gòu)。
首先它會(huì)新建一張一模一樣的表,表名一般是_為前綴_new后綴,例如原表為t_user 臨時(shí)表就是_t_user_new;
然后在這個(gè)新表執(zhí)行更改字段操作;
然后在原表上加三個(gè)觸發(fā)器,DELETE/UPDATE/INSERT,將原表中要執(zhí)行的語(yǔ)句也在新表中執(zhí)行;
最后將原表的數(shù)據(jù)拷貝到新表中,然后替換掉原表。
SQL語(yǔ)句:
ALTER TABLE tmp_task_user ADD support tinyint(1) unsigned NOT NULL DEFAULT ‘1’;
工具命令:
sh pt.sh tmp_task_user “ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT ‘1’”
好處:
降低主從延時(shí)的風(fēng)險(xiǎn)可以限速、限資源,避免操作時(shí)MySQL負(fù)載過(guò)高建議:
在業(yè)務(wù)低峰期做,將影響降到最低刪除索引后再修改表結(jié)構(gòu),效率將大大提升延伸閱讀:
二、應(yīng)用架構(gòu)是什么
應(yīng)用架構(gòu)(Application Architecture)是描述了IT系統(tǒng)功能和技術(shù)實(shí)現(xiàn)的內(nèi)容。應(yīng)用架構(gòu)分為以下兩個(gè)不同的層次:
企業(yè)級(jí)的應(yīng)用架構(gòu):企業(yè)層面的應(yīng)用架構(gòu)起到了統(tǒng)一規(guī)劃、承上啟下的作用,向上承接了企業(yè)戰(zhàn)略發(fā)展方向和業(yè)務(wù)模式,向下規(guī)劃和指導(dǎo)企業(yè)各個(gè)IT系統(tǒng)的定位和功能。在企業(yè)架構(gòu)中,應(yīng)用架構(gòu)是最重要和工作量最大的部分,他包括了企業(yè)的應(yīng)用架構(gòu)藍(lán)圖、架構(gòu)標(biāo)準(zhǔn)/原則、系統(tǒng)的邊界和定義、系統(tǒng)間的關(guān)聯(lián)關(guān)系等方面的內(nèi)容。單個(gè)系統(tǒng)的應(yīng)用架構(gòu):在開(kāi)發(fā)或設(shè)計(jì)單一IT系統(tǒng)時(shí),設(shè)計(jì)系統(tǒng)的主要模塊和功能點(diǎn),系統(tǒng)技術(shù)實(shí)現(xiàn)是從前端展示到業(yè)務(wù)處理邏輯,到后臺(tái)數(shù)據(jù)是如何架構(gòu)的。這方面的工作一般屬于項(xiàng)目組,而不是企業(yè)架構(gòu)的范疇。