MySQL5.6如何實(shí)現(xiàn)數(shù)據(jù)庫之間的相互遷移-創(chuàng)新互聯(lián)

下面講講關(guān)于MySQL5.6如何實(shí)現(xiàn)數(shù)據(jù)庫之間的相互遷移,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL5.6如何實(shí)現(xiàn)數(shù)據(jù)庫之間的相互遷移這篇文章你一定會有所受益。

創(chuàng)新互聯(lián)專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

###業(yè)務(wù)描述

  1. 公司內(nèi)部一個MySQL的master-slave架構(gòu)上面跑有公司倆個項(xiàng)目的庫
  2. 倆個項(xiàng)目的有存在共用的table的情況
  3. 倆個項(xiàng)目都可以對共用的table進(jìn)行讀寫操作
  4. 項(xiàng)目A的一個子業(yè)務(wù)在每天固定的時間段內(nèi)都會有高并發(fā)的寫操作,造成的后果就是在這個子業(yè)務(wù)工作的時間段內(nèi),倆個項(xiàng)目的讀寫操作會變得非常的慢,并且對外表現(xiàn)就是應(yīng)用會很卡
  5. 項(xiàng)目A的子業(yè)務(wù)使用的庫a是獨(dú)立的,和另外一個項(xiàng)目已經(jīng)項(xiàng)目A下面的子業(yè)務(wù)并不存在關(guān)聯(lián)關(guān)系,是這個子業(yè)務(wù)獨(dú)立使用的

###需求:

  1. 將庫a獨(dú)立剝離出來
  2. 將業(yè)務(wù)A的關(guān)聯(lián)的數(shù)據(jù)庫剝離出來
  3. 倆個共用的業(yè)務(wù)的table暫時還沒有方案

###方案:

  1. 新建一套master-slave的主從環(huán)境使用5.6的最新版本
  2. 搭建級聯(lián)環(huán)境
    • old master -> old slave -> new master -> old master
  3. xtrabackup物理備份
  4. pt-table-checksum 數(shù)據(jù)一致性校驗(yàn)
  5. 項(xiàng)目A的子業(yè)務(wù)可以停掉一段時間,因?yàn)槭请A段性的應(yīng)用
  6. 應(yīng)用停掉的一段時間內(nèi),等待獨(dú)立的database沒有寫入.針對庫級別上面的表不做鎖操作
  7. 應(yīng)用停掉一段時間之后直接修改子業(yè)務(wù)的MySQL的配置信息,將新的數(shù)據(jù)寫入new master
  8. 級聯(lián)組織的架構(gòu)不做任何的修改,只是在業(yè)務(wù)層次做寫入的改動,這樣子造成的后果就是老的master-slave和新的master-slave針對這個獨(dú)立的database的數(shù)據(jù)是不一致的。
  9. 在這里需要考慮的問題是舊的master-slave上面會不會因?yàn)椴糠謽I(yè)務(wù)忘記修改或者其他的原因,未完全將業(yè)務(wù)的讀寫遷移到新的master-slave架構(gòu)上面,這樣會造成數(shù)據(jù)的不一致,并且在databases中萬一存在自增的建的話,可能會有建值沖突的情況。
  10. 在完成業(yè)務(wù)MySQL的配置更改之后,四層的級聯(lián)架構(gòu)保持原樣的目的是為了后續(xù)還需要繼續(xù)做業(yè)務(wù)剝離。

###環(huán)境:

  1. os system CentOS 6.9
  2. MySQL 5.6.38 最新版本

###步驟:

  1. 備份:

    • 使用xtrabackup 2.4.4版本在old slave 上面進(jìn)行物理備份,不在old master上面?zhèn)浞莸闹饕蛟谟跒榱吮苊鈧浞莸臅r候消耗系統(tǒng)資源和數(shù)據(jù)庫資源影響線上業(yè)務(wù)的正常使用,因?yàn)槲覀兙€上的業(yè)務(wù)所有的讀寫都是在主庫上面,并沒有做讀寫分離.所以針對于old slave的操作對于業(yè)務(wù)的影響幾乎可以忽略.
    • 在備份的時候需要考慮一個因素就是你的備份所放置云服務(wù)器的磁盤空間是否足夠,我第一次備份的時候并沒有使用流備份,就直接備份到本地,在備份傳輸?shù)臅r候網(wǎng)絡(luò)IO和磁盤IO這塊需要花費(fèi)更多的時間。
    • 沒有使用流備份:備份77G,花費(fèi)9分鐘
      innobackupex --host=127.0.0.1 --user=root --password=xxxxx --port=3306  /path/BACKUP_DIR/

    • 使用流備份進(jìn)行壓縮備份:備份12G,花費(fèi)40分鐘
      innobackupex --host=127.0.0.1 --port=3306 --user=root --password=xxxxx --stream=tar /tmpdir  | gzip > /path/BACKUP_DIR/back_file.tar.gz

    • 因?yàn)槭亲?層的級聯(lián)復(fù)制,所以只需要備份old slave上面的binlog的file_name和file_position這倆個信息,根據(jù)這倆個信息change master創(chuàng)建主從復(fù)制.不過其中需要注意的文件有:
      • xtrabackup_binlog_info:這個文件里面記錄是在xtrabackup備份完非innodb數(shù)據(jù)之后,執(zhí)行show master status獲取得到的信息,做主傳統(tǒng)主從復(fù)制的信息來自與這里.
      • xtrabackup_info:這個文件里面記錄了備份完全,釋放MySQL資源之后記錄一些具體的詳細(xì)信息,在這里也存在備份的binlog的信息,這個信息的主要來源是從redo log里面獲取得到的,當(dāng)這個信息和上面那個文件信息不一致的時候,主要是以這個文件為主,主要原因在與redo log里面記錄的binlog信息打上commit標(biāo)簽之后就表明事務(wù)是已經(jīng)完成了的。
    • 需要注意的參數(shù)有:
      • --slave-info:在從庫上面執(zhí)行備份,獲取主庫上面的二進(jìn)制日志信息,并且會生成xtrabackup_slave_info文件記錄這些信息
      • --safe-slave-backup:和slave-info結(jié)合使用,主要是在發(fā)起備份的時候會暫停slave的sql_thread進(jìn)程確保備份的時候沒有臨時表打開,保證數(shù)據(jù)的一致性
      • --safe-slave-backup-timeout=SECONDS:指定safe-slave-backup應(yīng)該等待多長時間
  2. 恢復(fù):在新的master-slave上面?zhèn)浞輸?shù)據(jù)達(dá)到一致的狀態(tài),其目的是為了應(yīng)用redo log:

    innobackupex --defaults-file=/etc/my.cnf --apply-log /path/BACKUP_DIR

    將數(shù)據(jù)恢復(fù)到datadir目錄下面:

    innobackupex --defaults-file=/etc/my.cnf --copy-back /path/BACKUP_DIR

    修改datadir的數(shù)據(jù)權(quán)限

    chown mysql.mysql /datadir -R
  3. 搭建new master-slave:在搭建old slave -> new master架構(gòu)之前先搭建new master-slave 架構(gòu)
    • 需要注意的是,在搭建之前需要注意事項(xiàng)有:
      • GTID是否開啟,因?yàn)?old master-slave 是基于傳統(tǒng)復(fù)制,所以new的master-slave不能開啟GTID復(fù)制
      • server-id不能一致
      • binlog的日志格式,四個必須保持一致
      • 在配置文件my.cnf 添加參數(shù) “replicate-ingore-db=mysql.* ” 的目的是為了不復(fù)制系統(tǒng)庫mysql的信息,目的是因?yàn)楹罄m(xù)的用戶權(quán)限管理;并且5.6并不支持在線修改這些復(fù)制過濾,只能在配置文件里面修改之后重啟數(shù)據(jù)庫。
    • 在new master-slave備份恢復(fù)之后,直接可以在new master上面show master status獲取binlog信息,根據(jù)這些信息做主從同步.
  4. old slave -> new master 搭建主從:從第一步備份獲取得到slave的info信息搭建主從
  5. 監(jiān)測主從是否搭建成功,在old slave -> new master -> new slave 執(zhí)行show slave status信息觀察
  6. pt-table-checksum檢測數(shù)據(jù)的一致性

    • 命令:
      pt-table-checksum --replicate=percona.checksumss --nocheck-replication-filters --no-check-binlog-format h=x.x.x.x,u=rpl,p='xxxxx',P=3306 --databases-regex=database.* --recursion-method dsn=h=x.x.x.x,u=root,p='xxxxx',P=3306,D=zst_teach,t=dsns

    • 注意:
      • 命令第一個鏈接的主機(jī)是需要監(jiān)測的master-slave中master實(shí)例信息
      • 命令中的dsn后續(xù)的鏈接信息是dsn存在信息的MySQL實(shí)例,這個dsn信息可以存放在master,也可以存放到第三方實(shí)例,這個時候pt-table-checksum執(zhí)行所在的云服務(wù)器需要有root用戶訪問zst_teach.dsns表信息的權(quán)限,即select的權(quán)限
      • 命令在執(zhí)行的時候會在master上面產(chǎn)生percona.checksumss信息,其中percona庫是不會手動生成的,需要自己手動生成,但是checksums會自動生成,但是其中需要注意的是,由于是在master上面生成percona.checksumss信息表,所以rpl@command_host用戶需要有percona.checksums的select,insert,update,delete,super,process,lock tables,craete的權(quán)限,而且還必須有針對所有表的select,lock tables,super,process權(quán)限。
      • 并且為了在slave進(jìn)行檢測,檢測的用戶也必須要有所以表的select,super,lock tables,process的權(quán)限
      • master:
        grant update,delete,insert,super,process,lock tables,create on *.* 'user'@'command_host'
    • slave:
      grant select,process,lock tabes,super on *.* to 'user'@'master_host';

7.pt-table-sync數(shù)據(jù)同步(在master和slave都可以執(zhí)行)

  • pt-table-sync --print  --sync-to-master h=slave_host,P=3306,u=repl,p='xxxxx' --database=DB_name --tables=table_name1,table_name2

    --print 打印出在slave執(zhí)行的SQL
    --sync-to-master 指定slave的IP地址,從show slave status獲取master的信息

  • 對于以上MySQL5.6如何實(shí)現(xiàn)數(shù)據(jù)庫之間的相互遷移相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁名稱:MySQL5.6如何實(shí)現(xiàn)數(shù)據(jù)庫之間的相互遷移-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.muchs.cn/article40/ihsho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google營銷型網(wǎng)站建設(shè)、域名注冊、外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站策劃

廣告

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

成都定制網(wǎng)站建設(shè)