MySQL5.5復(fù)制升級(jí)到5.7的一點(diǎn)簡(jiǎn)單嘗試-創(chuàng)新互聯(lián)

MySQL 5.5復(fù)制升級(jí)到5.7的一點(diǎn)簡(jiǎn)單嘗試

創(chuàng)新互聯(lián)建站是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

最近有個(gè)需求是升級(jí)MySQL 5.5到MySQL 5.7版本,為此我們想了一些方案,比如MySQL級(jí)聯(lián)復(fù)制升級(jí),這么考慮主要是基于版本的差異性,盡可能保持兼容。

還有邏輯備份恢復(fù),物理備份恢復(fù)的方案,當(dāng)然無(wú)論如何體現(xiàn)業(yè)務(wù)價(jià)值才能使得技術(shù)價(jià)值更有意義。所以我們希望通過(guò)升級(jí)版本來(lái)盡可能使得線上版本統(tǒng)一的同時(shí),帶給業(yè)務(wù)和DBA的幾大福利就是online DDL,數(shù)據(jù)延遲降低,優(yōu)化器的增強(qiáng)。

當(dāng)然能不能升級(jí)也是拍腦袋想,原理上是可以的,但是實(shí)際上效果如何,沒有驗(yàn)證心里還沒有底。之前所做的比較多的是遷移式升級(jí),通過(guò)邏輯備份恢復(fù)的方式,在數(shù)據(jù)量比較大的情況下,那種方式就有些吃力了。

所以我按照5.5,5.6,5.7的版本搭建了3套MySQL環(huán)境,然后以這3套環(huán)境為基礎(chǔ)來(lái)實(shí)現(xiàn)級(jí)聯(lián)復(fù)制。看看能夠?qū)崿F(xiàn)平滑的數(shù)據(jù)庫(kù)升級(jí)。

數(shù)據(jù)庫(kù)版本為5.5.19, 5.6.14, 5.7.19

為了保持盡可能保持兼容性和更好的功能,我計(jì)劃使用如下的方式。

MySQL 5.5升級(jí)到MySQL 5.6使用偏移量的方式來(lái)同步

MySQL 5.6升級(jí)到MySQL 5.7使用GTID的方式來(lái)同步

然后說(shuō)干就干,其實(shí)初始化環(huán)境這部分主要就是參數(shù)的兼容性,

比如下面的參數(shù)在5.5版本中就不存在,但是在5.6,5.7中存在,就需要根據(jù)需求來(lái)取舍。

171019 9:47:53 [ERROR] /usr/local/mysql_5.5/bin/mysqld: unknown variable 'master_info_repository=TABLE'

171019 9:47:53 [ERROR] Aborting

171019 9:48:48 [ERROR] /usr/local/mysql_5.5/bin/mysqld: unknown variable 'relay_log_info_repository=TABLE'

171019 9:49:12 [ERROR] /usr/local/mysql_5.5/bin/mysqld: unknown variable 'binlog_checksum=NONE'

關(guān)鍵就在于復(fù)制關(guān)系的配置了。

我先來(lái)驗(yàn)證5.6到5.7的配置關(guān)系,沒想到啟動(dòng)slave后看到了如下的錯(cuò)誤。

Last_SQL_Error: Column 1 of table 'mysql.user' cannot be converted from type 'char(48(bytes))' to type 'char(96(bytes) utf8)'

這類問(wèn)題可以考慮修改參數(shù)來(lái)設(shè)置無(wú)損復(fù)制的程度,比如這樣設(shè)置。

mysql> set global slave_type_conversions='ALL_LOSSY,ALL_NON_LOSSY';

接著就收到了另外一個(gè)錯(cuò)誤。

Last_SQL_Error: Can't create conversion table for table 'mysql.user'

當(dāng)然按照這個(gè)思路,我們可以完全拋棄mysql庫(kù),直接復(fù)制數(shù)據(jù)所在的庫(kù)即可。

然后是配置5.5到5.6的環(huán)境,發(fā)現(xiàn)5.6配置了GTID,和偏移量的使用方式是有沖突的。

所以折衷下來(lái)的取舍就是先取消GTID的設(shè)置,統(tǒng)一使用偏移量,重新配置一下主從庫(kù),重置一下。重新建立主從關(guān)系即可。

經(jīng)過(guò)簡(jiǎn)單的測(cè)試,5.5->5.6->5.7的方式通過(guò)偏移量的配置是可行的,無(wú)需設(shè)置復(fù)制的過(guò)濾配置,我做了DDL,DML的操作,重新配置了用戶,這些操作都是可以的。

然后我更進(jìn)一步,嘗試配置5.5到5.7的復(fù)制關(guān)系,沒想到也是可以的。

所以上面的簡(jiǎn)單嘗試讓我對(duì)復(fù)制有了一種新的認(rèn)識(shí),至少在這一點(diǎn)上數(shù)據(jù)確實(shí)能夠完全同步過(guò)來(lái),至于更為復(fù)雜的場(chǎng)景后續(xù)還要做更多的補(bǔ)充測(cè)試。

當(dāng)前題目:MySQL5.5復(fù)制升級(jí)到5.7的一點(diǎn)簡(jiǎn)單嘗試-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article44/dpdpee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、定制網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)