日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

动力节点老杜mysql文件_mysql主从复制+mysql主从复制延迟解决方案

發(fā)布時(shí)間:2025/3/19 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动力节点老杜mysql文件_mysql主从复制+mysql主从复制延迟解决方案 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

### 1. 為什么需要mysql主從復(fù)制

1. 數(shù)據(jù)熱備

  • 在復(fù)雜的業(yè)務(wù)場(chǎng)景中, 可能因?yàn)槟骋粭lsql造成了鎖表, 這樣就會(huì)影響正常的業(yè)務(wù)運(yùn)行。在復(fù)雜的業(yè)務(wù)場(chǎng)景中, 我們可以使用mysql主從復(fù)制, 主庫(kù)負(fù)責(zé)寫(xiě), 從庫(kù)負(fù)責(zé)讀這樣即使主庫(kù)出現(xiàn)了鎖表的場(chǎng)景通過(guò)從庫(kù)讀的業(yè)務(wù)也可以保證正常運(yùn)行。
  • 架構(gòu)擴(kuò)展。 業(yè)務(wù)訪問(wèn)量越來(lái)越大, io訪問(wèn)頻率過(guò)高, 單機(jī)無(wú)法滿足需求, 此時(shí)做多庫(kù)存儲(chǔ)降低單機(jī)的磁盤(pán)io訪問(wèn)頻率,從而提高單機(jī)io的性能。
  • 2. 什么是主從復(fù)制

    主從復(fù)制是指數(shù)據(jù)從一個(gè)mysql主節(jié)點(diǎn)復(fù)制到一個(gè)或者多個(gè)從節(jié)點(diǎn)。mysql 默認(rèn)是異步復(fù)制的方式, 從節(jié)點(diǎn)可以復(fù)制主節(jié)點(diǎn)中的所有數(shù)據(jù)或者指定的庫(kù)或者表.

    3. 主從復(fù)制原理

  • 主庫(kù)開(kāi)啟binlog, 將數(shù)據(jù)和表結(jié)構(gòu)的改變記錄在二進(jìn)制文件binlog中
  • slave 會(huì)在一定的時(shí)間間隔內(nèi)對(duì)master的二進(jìn)制文件進(jìn)行探測(cè)是否改變, 如果改變則開(kāi)啟一個(gè) io Thread 請(qǐng)求master的 binlog
  • 同時(shí)master會(huì)為每一 io thread 開(kāi)一個(gè) dump Thread, 用于向其傳輸二進(jìn)制文件(binlog), 并保存到slave的中繼日志(relay log)中.
  • slave 啟動(dòng)sql Thread 從中繼日志(relay log)中讀取二進(jìn)制數(shù)據(jù) 在本地進(jìn)行重放, 使得slave 和 master數(shù)據(jù)保持一致. 最后 slave 的 io Thread 和 sql Thread 進(jìn)入睡眠狀態(tài)等待再次被喚醒.
  • 即: 1. master 的dump Thread根據(jù)slave的請(qǐng)求, 將本地的binlog以events的方式發(fā)送給 IO Thread 2. slave IO Thread 接收到binlog events后保存到中繼日志(relay log)中, 傳過(guò)來(lái)的信息會(huì)記錄在master.info文件中. 3. slave sql Thread獲取中繼日志中的內(nèi)容進(jìn)行重發(fā), 并把應(yīng)用過(guò)的記錄到relay-log.info中, 默認(rèn)情況下已經(jīng)應(yīng)用過(guò)的relay會(huì)自動(dòng)被清理

    注意: 1. master 將操作語(yǔ)句記錄在bin log中, 授權(quán)slave遠(yuǎn)程訪問(wèn)的權(quán)限. 2. master和slave節(jié)點(diǎn)的時(shí)間需要同步

    4. mysql主從復(fù)制的具體操作步驟

  • 準(zhǔn)備兩臺(tái)mysql, 可以在同一臺(tái)機(jī)上也可以在不同的機(jī)上.
  • 開(kāi)啟主節(jié)點(diǎn)的binlog, 在/etc/my.cnf 文件的 mysqld 下添加如下內(nèi)容
  • # 開(kāi)啟 BinLog日志 log-bin=mysql-bin # 服務(wù)器的唯一id, 默認(rèn)是 1, 一般去ip最后一段 server-id=13
  • 修改從節(jié)點(diǎn)的 /etc/my.cnf文件
  • # 開(kāi)啟 BinLog日志, 從節(jié)點(diǎn)可以開(kāi)啟binlog日志 也可以不開(kāi)啟, 我這里是開(kāi)啟了. log-bin=mysql-bin # 服務(wù)器的唯一id, 默認(rèn)是 1, 一般去ip最后一段 server-id=14
  • 重啟master和slave
  • 登錄master執(zhí)行 show master status 命令查看binlog日志文件和偏移量.
  • 登錄從庫(kù)通過(guò) change master to 語(yǔ)句連接master.
  • CHANGE MASTER TO MASTER_HOST = 'ip或者域名', MASTER_USER = '用戶名',MASTER_PASSWORD = '密碼', MASTER_PORT = 端口, MASTER_LOG_FILE='binlog文件名', MASTER_LOG_POS=偏移量;
  • 啟動(dòng)slave, 執(zhí)行如下命令
  • start slave
  • 執(zhí)行 show slave status G; 得到如下結(jié)果便是啟動(dòng)成功
  • 5. Mysql主從同步延遲分析

    Mysql 主從同步都是單線程的, master所有的DDL和DML都會(huì)寫(xiě)入binlog中, 由于binlog是順序讀寫(xiě), 所以效率很高, slave的sql Thread將master的DDL和DML操作事件都在slave中重發(fā). DDL和DML 的IO操作是隨機(jī)的, 不是順序的, 所以成本要高很多, 另一方面由于SQL Thread也是單線程, 當(dāng)master并發(fā)高的時(shí)候,產(chǎn)生的DML數(shù)量超出了slaveSQL Thread的處理速度, 或者當(dāng)slave有大型的query語(yǔ)句產(chǎn)生了鎖, 那么延遲就產(chǎn)生了.

    解決方案: 1. 業(yè)務(wù)的持久化層的實(shí)現(xiàn)采用分庫(kù)架構(gòu), mysql服務(wù)器可以平行擴(kuò)展, 分散壓力 2. 單個(gè)主庫(kù), 多個(gè)從庫(kù), 主寫(xiě)從讀 3. 服務(wù)的基礎(chǔ)架構(gòu)在業(yè)務(wù)層和持久化層間加入memcache或者redis構(gòu)成的cache層. 降低mysql的讀寫(xiě)壓力

    4.不同的業(yè)務(wù)的mysql放在不同的物理機(jī)上,分散壓力. 5. 使用更加好的硬件設(shè)備 6. mysql5.7 之后使用MTS并發(fā)復(fù)制技術(shù), 永久解決復(fù)制延遲問(wèn)題

    總結(jié)

    以上是生活随笔為你收集整理的动力节点老杜mysql文件_mysql主从复制+mysql主从复制延迟解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。