溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在MySQL中遷移線上日志庫(kù)

發(fā)布時(shí)間:2021-03-31 16:39:29 來(lái)源:億速云 閱讀:173 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

怎么在MySQL中遷移線上日志庫(kù)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

    首先看日志庫(kù)的情況:

1、日志庫(kù)中數(shù)據(jù)量大于5000w的大表有5張;

2、這5張表開(kāi)量前每個(gè)月的數(shù)據(jù)量大概在2000w左右,開(kāi)量后會(huì)更多;

3、有2個(gè)表的索引大小已經(jīng)超過(guò)數(shù)據(jù)文件大小

    詢問(wèn)了業(yè)務(wù)方和運(yùn)營(yíng)對(duì)這些表的要求,具體如下:

1、保留最近這3個(gè)月的數(shù)據(jù),其他的數(shù)據(jù)可以進(jìn)行流轉(zhuǎn),避免影響線上業(yè)務(wù)的性能。

2、3個(gè)月之前的數(shù)據(jù)流轉(zhuǎn)到一個(gè)本地庫(kù)中,可以支持查詢即可,查詢速度不能過(guò)于慢,分鐘級(jí)別的可以接受。

3、日志庫(kù)在遷移的過(guò)程中,能夠容忍幾分鐘的表數(shù)據(jù)丟失,對(duì)數(shù)據(jù)的同步實(shí)時(shí)性要求不是很高

4、線上的日志庫(kù)需要支持用戶活躍度等統(tǒng)計(jì)

5、不希望執(zhí)行分庫(kù)分表,有很多查詢近幾個(gè)月的SQL操作,表之間存在一定的耦合性,分表之后不利于關(guān)聯(lián)操作

    基于上面的分析,結(jié)合實(shí)際情況,初步設(shè)想的方案是:

1、對(duì)線上數(shù)據(jù)庫(kù)game_log中的表進(jìn)行rename操作,然后將原來(lái)的表重新創(chuàng)建出來(lái),這個(gè)過(guò)程中不是連續(xù)的,可能會(huì)丟失幾秒鐘的數(shù)據(jù)。具體的操作如下:

#第一步
rename table game_log.table to game_log_bak.table;

#第二步,獲取表結(jié)構(gòu),其中重要的是auto_increment的值,
#保證后續(xù)導(dǎo)入三個(gè)月內(nèi)數(shù)據(jù)的時(shí)候不會(huì)發(fā)生沖突
show create table game_log_bak.table\G

#第三步
在game_log庫(kù)中重新創(chuàng)建第二步的表結(jié)構(gòu)

2、將rename過(guò)后的game_log_bak庫(kù)中的數(shù)據(jù)流轉(zhuǎn)到本地的離線數(shù)據(jù)庫(kù)中,該數(shù)據(jù)庫(kù)采用infobright存儲(chǔ)引擎,這樣能夠支持離線數(shù)據(jù)的快速查詢

怎么在MySQL中遷移線上日志庫(kù)

3、備份并清理線上表3個(gè)月之外的數(shù)據(jù),大概是40G,并將線上的game_log_bak數(shù)據(jù)庫(kù)中3個(gè)月以內(nèi)的數(shù)據(jù)(大概10G)重新灌入game_log數(shù)據(jù)庫(kù)中,這樣結(jié)構(gòu)就變成了:

怎么在MySQL中遷移線上日志庫(kù)

4、刪除game_log_bak庫(kù),并搭建一個(gè)只讀從庫(kù),實(shí)時(shí)的從主庫(kù)上同步game_log庫(kù)的信息,如下:

怎么在MySQL中遷移線上日志庫(kù)

5、從本地的只讀從庫(kù)中,像本地的infobright數(shù)據(jù)庫(kù)中同步數(shù)據(jù),同步的方法可以選用dataX工具,像下面這樣:

怎么在MySQL中遷移線上日志庫(kù)

6、設(shè)置定時(shí)任務(wù),按照一定的周期清理線上的過(guò)期數(shù)據(jù),確保線上只保留最近3個(gè)月的數(shù)據(jù),不會(huì)對(duì)rds的磁盤(pán)存儲(chǔ)空間產(chǎn)生壓力。

    這個(gè)方法中,目前看來(lái)存在下面幾個(gè)問(wèn)題:

1、經(jīng)常性的清理線上數(shù)據(jù),這些數(shù)據(jù)占用的表空間不能被立即回收,可能會(huì)造成數(shù)據(jù)表的碎片問(wèn)題。

2、后續(xù)如果游戲的量級(jí)上來(lái)之后,使用這個(gè)問(wèn)題可能還是會(huì)有問(wèn)題,屆時(shí)可以適當(dāng)調(diào)整日志表的清理周期,如果數(shù)據(jù)量過(guò)大,可以考慮其他的方案來(lái)處理。

關(guān)于怎么在MySQL中遷移線上日志庫(kù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI