MySQL復(fù)制技術(shù)指部署中遇到的問題 A. 復(fù)制中斷 mysql主從復(fù)制,經(jīng)常會(huì)遇到錯(cuò)誤而導(dǎo)致slave端復(fù)制中斷,這個(gè)時(shí)候一般就需要人工干預(yù),跳過錯(cuò)誤才能繼續(xù) 跳過錯(cuò)誤有兩種方式: 1.跳過指定數(shù)量的事務(wù): mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳過一個(gè)事務(wù) mysql>slave start 2.修改mysql的配置文件,通過slave_skip_errors參數(shù)來(lái)跳所有錯(cuò)誤或指定類型的錯(cuò)誤 vi /etc/my.cnf [mysqld] #slave-skip-errors=1062,1053,1146 #跳過指定error no類型的錯(cuò)誤 #slave-skip-errors=all #跳過所有錯(cuò)誤 B. 冷備份恢復(fù)的UUID問題 本次的slave是通過關(guān)閉master后,直接復(fù)制datadir目錄下的所有文件到slave服務(wù)器;然后啟動(dòng)slave,則會(huì)報(bào)錯(cuò) Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. 分析問題: 上面報(bào)錯(cuò)說(shuō)的是replication架構(gòu)中需要保證每個(gè)mysql實(shí)例UUID(UUID保存在datadir目錄下的auto.cnf文件中)唯一,就跟server_id一樣需要保證主從架構(gòu)中所有mysql實(shí)例server_id唯一。 之所以出現(xiàn)會(huì)出現(xiàn)這樣的問題,是因?yàn)槲业膹膸?kù)主機(jī)是克隆的主庫(kù)所在的主機(jī),所以auto.cnf文件中保存的UUID會(huì)出現(xiàn)重復(fù)(server_id已經(jīng)在my.cnf文件中修改過) 解決問題: 關(guān)于該問題的解決方案其實(shí)很簡(jiǎn)單,停掉備庫(kù)實(shí)例,刪除備庫(kù)的auto.cnf文件,啟動(dòng)備庫(kù)實(shí)例,此時(shí)備庫(kù)就會(huì)產(chǎn)生一個(gè)新的auto.cnf文件(產(chǎn)生新的UUID)。網(wǎng)上也有人說(shuō)直接修改auto.cnf里面的uuid值,然后重啟從庫(kù)實(shí)例,該種方案沒有測(cè)試過。 C. Last_SQL_Errno: 1677 Last_SQL_Errno: 1677 Last_SQL_Error: Column 0 of table ‘a(chǎn)a.heartbeat’ cannot be converted from type ‘smallint’ to type ‘int(11)’ @Shane Bester 建議slave_type_conversions=ALL_NON_LOSSY,能解決這個(gè)問題。以前沒有關(guān)注過這個(gè)參數(shù),我們線上環(huán)境都沒有設(shè)置。 slave_type_conversions:在slave上進(jìn)行字段類型轉(zhuǎn)化的,因?yàn)橹鱾渲g可能在某些情況下,有相同的表名,但字段多少、字段類型、字段順序不一樣,可能導(dǎo)致1677錯(cuò)誤,這時(shí)需要設(shè)置相應(yīng)參數(shù)來(lái)進(jìn)行處理。 MySQL 5.5.3版本開始,支持屬性提升特性,包括有損轉(zhuǎn)化和無(wú)損轉(zhuǎn)換 參數(shù)支持值: 1、ALL_LOSSY:可以將int型轉(zhuǎn)化成tinyint,存在截?cái)嗟那闆r,有損轉(zhuǎn)化 2、ALL_NON_LOSSY:不允許出現(xiàn)截?cái)嗲闆r,slave的類型范圍大于master方可轉(zhuǎn)化。設(shè)置這個(gè)參數(shù)后,如果存在截?cái)嗲闆r,slave會(huì)報(bào)錯(cuò) 3、以后兩個(gè)參數(shù)都設(shè)置,就存在截?cái)嗟那闆r 4、未設(shè)置,主備之間必須一致 在slave上類型轉(zhuǎn)化需要注意: Whether you use statement-based or row-based replication, the slave’s copy of the table cannot contain more columns than the master’s copy if you wish to employ attribute promotion. 參考: http://dev.mysql.com/doc/refman/5.5/en/replication-features-differing-tables.html#replication-features-attribute-promotion 在一臺(tái)主機(jī)上增加一個(gè)slave,啟動(dòng)的時(shí)候報(bào) [ERROR] Slave SQL: Slave failed to initialize relay log info structure from the repository, Error_code: 1872 原因可能是:1、my.cnf沒指定relay_log,2、沒有reset slave |
免責(zé)聲明:本站部分文章和圖片均來(lái)自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信