成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

記一次MySQL遷移過程

IT那活兒 / 1598人閱讀
記一次MySQL遷移過程
[
背景說明
]


  • 環(huán)境說明

數(shù)據(jù)庫

版本

數(shù)據(jù)量

備注

Database A

5.7

1TB

需遷移數(shù)據(jù)200GB

Database B

5.6

7TB

需遷移數(shù)據(jù)600GB

Database C

5.7

--

數(shù)據(jù)遷入800GB


  • 遷移需求

新建DatabaseC,將DatabaseA和DatabaseB的數(shù)據(jù)遷移到DatabaseC,其中DatabaseA/B僅部分表需保留數(shù)據(jù),其余表保留結(jié)構(gòu)即可


  • 業(yè)務(wù)停機(jī)時間

業(yè)務(wù)允許停機(jī)時間最長為2小時


[
遷移方案
]


    a.第一次遷移測試


本次遷移為了搭建測試環(huán)境供業(yè)務(wù)測試使用,對數(shù)據(jù)準(zhǔn)確性無要求,受硬件條件以及時間需求限制,無法采用物理備份/復(fù)制等手段,采用mysqldump進(jìn)行拆分導(dǎo)出導(dǎo)入


  • 導(dǎo)出數(shù)據(jù)


mysqldump -uxxx  -pxxxx -S xxxx--set-gtid-purged=OFF   --single-transaction db `cat tab_list.txt` >table.sql


  • 恢復(fù)數(shù)據(jù)

Set names utf8mb4;

Sourcetable.sql


盡管通過人為拆分為并行導(dǎo)出導(dǎo)入,但導(dǎo)入時會創(chuàng)建大量索引,索引創(chuàng)建過程無法并行,總體耗時約40h,無法滿足業(yè)務(wù)需求.



        b.第二次遷移測試


本次遷移測試采用傳輸表空間,過程大致如下

主要步驟

操作

耗時

備份表結(jié)構(gòu)

備份Database A/B的數(shù)據(jù)結(jié)構(gòu)

 1min

傳輸ibd文件

傳輸備份文件到Server C

 150min

恢復(fù)表結(jié)構(gòu)

serverc 恢復(fù)Database A/B的數(shù)據(jù)結(jié)構(gòu)

 2min

替換表空間

分離idb文件并導(dǎo)入傳輸過來的bd文件

 200min


  • 備份結(jié)構(gòu)


mysqldump -uxx  -pxx -S xx  --set-gtid-purged=OFF -d dbname  > table_Structure.sql

mysqldump -uxx  -pxx -S xx   -n -t-d -R --triggers=false --set-gtid-purged=OFF  dbname >procedure.sql


  • 恢復(fù)表結(jié)構(gòu)

Set names utf8mb4;

Source table_Structure.sql

Sourceprocedure.sql


  • 替換表空間


  • 分離ibd文件

Alter table xxx discard tablespace;

  • 傳輸idb文件

scp `cat table_list.txt` 10.25.225.243:/mysqldata/mysql/data/material

  • 導(dǎo)入idb文件

  • Alter table xxx import tablespace;


測試耗時約6h,讓仍然無法滿足業(yè)務(wù)要求,分析瓶頸在以下兩方面:


  1. 傳輸文件通過千兆網(wǎng)絡(luò),耗費(fèi)大量時間

  2. import tablespace過程中, mysql需要更新ibd文件每個page的lsn,產(chǎn)生大量IO操作,耗時較多;


    c.第三次測試


步驟

操作

耗時

物理備份

使用innodbbackupex備份DatabaseA/B

在線 

傳輸備份到

傳輸備份文件到Server C

在線 

恢復(fù)Database B

使用備份文件在Server C恢復(fù)database B
(后續(xù)將恢復(fù)出來的數(shù)據(jù)庫稱為Database C)

在線

升級database C

database C升級到5.7

在線

清理數(shù)據(jù)

清理不需要數(shù)據(jù)的表,僅保留數(shù)據(jù)結(jié)構(gòu)

在線

創(chuàng)建database A

Database C創(chuàng)建database A相關(guān)對象結(jié)構(gòu)信息

在線 

恢復(fù)Database A

使用傳輸表空間的方式恢復(fù)database A到database C

在線

配置多源復(fù)制

配置Database C從database A/B同步數(shù)據(jù)

在線

正式割接

斷開復(fù)制,修改database C參數(shù)

5min


  • 物理備份

對A/B數(shù)據(jù)庫進(jìn)行物理備份

innobackupex --user=xx -pxx --socket=xx  --no-timestamp  ./full

innobackupex --user=xx -pxx --socket=xx  --no-timestamp --incremental ./inc/inc1/--incremental-basedir=./full

innobackupex --user=xx -pxx --socket=xx  --no-timestamp --incremental ./inc/inc2/--incremental-basedir=./inc/inc1


  • 恢復(fù)備份

使用備份恢復(fù)databaseB

innobackupex--defaults-file=/etc/my.cnf --parallel=16 --apply-log --redo-onlyfull/  &

innobackupex--defaults-file=/etc/my.cnf --parallel=16 --apply-log --redo-only--incremental-dir=rec0/ full/ &

innobackupex--defaults-file=/etc/my.cnf --parallel=16 --apply-log --redo-only--incremental-dir=rec1/ full/


  • 升級database c

mysql_upgrade --upgrade-system-tables  -uroot -pxxx


  • 恢復(fù)database A到database C

恢復(fù)過程同第二次遷移測試,此處使用物理備份的ibd文件進(jìn)行導(dǎo)入.


  • 清理多余的數(shù)據(jù)

Truncatetable xxx;


  • 配置復(fù)制

通過物理備份獲取gtid相關(guān)信息,并配置兩個復(fù)制通道,分別為databaseA和databaseB復(fù)制數(shù)據(jù)

reset master;

SET@@GLOBAL.GTID_PURGED=xxxxxx,xxxxxxx;

change master to

master_host=xxx,

MASTER_PORT=xx,

master_user=repl,

master_password=xx,

master_auto_position=1

FOR CHANNEL chnl1;


通過以上方式,業(yè)務(wù)停機(jī)時間僅為應(yīng)用修改切換連接串時間,僅需幾分鐘即可,滿足業(yè)務(wù)需求。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130077.html

相關(guān)文章

  • 一次Spring Batch完整入門實(shí)踐

    摘要:什么是作為的子項目,是一款基于的企業(yè)批處理框架。首先,運(yùn)行的基本單位是一個,一個就做一件批處理的事情。總結(jié)為我們提供了非常實(shí)用的功能,對批處理場景進(jìn)行了完善的抽象,它不僅能實(shí)現(xiàn)小數(shù)據(jù)的遷移,也能應(yīng)對大企業(yè)的大數(shù)據(jù)實(shí)踐應(yīng)用。 前言 本文將從0到1講解一個Spring Batch是如何搭建并運(yùn)行起來的。本教程將講解從一個文本文件讀取數(shù)據(jù),然后寫入MySQL。 什么是 Spring Batc...

    Baaaan 評論0 收藏0
  • 一次與新版sentry的斗爭

    摘要:引言前段時間搭建了版本運(yùn)行了有一段時間了,現(xiàn)在日志來量有點(diǎn)大遇到了一個突出的問題清理歷史數(shù)據(jù)十分緩慢。 引言 前段時間搭建了sentry 7.x版本,運(yùn)行了有一段時間了,現(xiàn)在日志來量有點(diǎn)大 遇到了一個突出的問題:清理歷史數(shù)據(jù)十分緩慢。最近在瀏覽sentry官方文檔 發(fā)現(xiàn)都已經(jīng)更新到8.14.1了, 而且不在支持mysql, 官方給的解釋:Due to numerous issues...

    flybywind 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<