b. 之前老的事務(wù)如果發(fā)生超時,需要繼續(xù)等待。

因為如果用戶設(shè)置為ON之后,預(yù)期是不會發(fā)生超時。

(2)設(shè)置rpl_semi_sync_wait_forever為OFF

如果此時有一直在等待的事務(wù),要喚醒。最初的方案是

signal_waiting_sessions_all()來喚醒這些事務(wù),然后如果事務(wù)等待的時間超過了rpl_semi_sync_master_timeout,降級為異步模式。如果等待的時間wait_time < rpl_semi_sync_master_timeout,那么繼續(xù)等待rpl_semi_sync_master_timeout – wait_time。但是通過sysbench壓測發(fā)現(xiàn)這樣的方案會導(dǎo)致死鎖,。

所以最終的簡化方案是:

1.3 新增狀態(tài)

2. 自動轉(zhuǎn)換MyISAM表為InnoDB表

MyISAM表因為不支持事務(wù),所以存在故障恢復(fù)丟數(shù)據(jù)的可能。在復(fù)制環(huán)境下,如果使用MyISAM表,master和slave就可能出現(xiàn)不一致情況。即使騰訊云強烈建議用戶只使用InnoDB表,但是還是無法避免用戶在某些情況仍然去使用MyISAM表。為了解決這個問題,騰訊云提供了新的選項,在建表的時候默認將MyISAM表轉(zhuǎn)為InnoDB表。

新增變量

可選值

由于InnoDB內(nèi)部的一些限制,會導(dǎo)致有些情況下轉(zhuǎn)換失敗。

(1) auto-increment

在InnoDB中只允許定義一個自增列,并且這個列必須被定義為主鍵。在MyISAM中則無此限制。

(2) max key length

在InnoDB中,innodb_large_prefix關(guān)閉的情況下,max key length不能大于767,而在MyISAM中,則不能大于1000。

(3) row format

在InnoDB中,innodb_strict_mode開啟的情況下,row format FIXED是不支持的。

3. 增加不同的工作模式

除了復(fù)制強制一致、自動轉(zhuǎn)換MyISAM表為InnoDB表,這兩項功能的實現(xiàn)以外,在TXSQL 5.7中,騰訊云還為其增加了READ_ONLY模式。

眾所周知,MySQL 5.7中增加了一個新的參數(shù)offline_mode(WL#3836),設(shè)置此參數(shù)為OFF,server拒絕對外服務(wù),root用戶可以對系統(tǒng)進行診斷操作或升級操作等。在TXSQL 5.7中增加了READ_ONLY模式,不同的工作模式,將會實現(xiàn)更多的功能。

目前,這只是騰訊云TXSQL 5.7的第一個版本,從總體功能來看,這些已經(jīng)實現(xiàn)的功能,都相對來說非常的人性化和實用。這也將進一步促進騰訊云CDB的功能實現(xiàn)全面突破和領(lǐng)先。

分享到

songjy

相關(guān)推薦