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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 去重 根据id_mycat数据库集群系列之mysql主从同步设置

發(fā)布時(shí)間:2025/4/16 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 去重 根据id_mycat数据库集群系列之mysql主从同步设置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在梳理數(shù)據(jù)庫集群的相關(guān)操作,現(xiàn)在花點(diǎn)時(shí)間整理一下關(guān)于mysql數(shù)據(jù)庫集群的操作總結(jié),恰好你又在看這一塊,供一份參考。本次系列終結(jié)大概包括以下內(nèi)容:多數(shù)據(jù)庫安裝、mycat部署安裝、數(shù)據(jù)庫之讀寫分離主從復(fù)制、數(shù)據(jù)庫之雙主多重、數(shù)據(jù)庫分庫分表。每一個(gè)點(diǎn),有可能會(huì)對(duì)應(yīng)一篇或者多篇文章,由于還要繼續(xù)上班工作,所以本系列分享預(yù)計(jì)持續(xù)時(shí)間需要10天左右,有興趣的您可以持續(xù)關(guān)注。我是一個(gè)菜鳥,如果寫的不好的地方,望多多指點(diǎn)和包涵。

  好了,不逼逼了,直接進(jìn)入本次的主題:mycat的數(shù)據(jù)集群方式有很多種,比如:主從復(fù)制、多主多重等等,本次先從最簡(jiǎn)單的主從復(fù)制開始說起。

  主從復(fù)制,其實(shí)我前段時(shí)間也整理了一篇文章,那是在liux環(huán)境的設(shè)置,有興趣的可以了解了解https://www.cnblogs.com/xiaoXuZhi/p/xyh_mysqlsynchro.html。其實(shí)liux和Windows的mysql主從設(shè)置在本質(zhì)上一樣的,只是有點(diǎn)細(xì)微的不同,本次主要是針對(duì)windows環(huán)境的一個(gè)完整的流程搭建,所以也在專門梳理一下主從復(fù)制。

一、mysql主從復(fù)制簡(jiǎn)介

原理:

  • master服務(wù)器將數(shù)據(jù)的改變記錄二進(jìn)制binlog日志,當(dāng)master上的數(shù)據(jù)發(fā)生改變時(shí),則將其改變寫入二進(jìn)制日志中;
  • slave服務(wù)器會(huì)在一定時(shí)間間隔內(nèi)對(duì)master二進(jìn)制日志進(jìn)行探測(cè)其是否發(fā)生改變,如果發(fā)生改變,則開始一個(gè)I/OThread請(qǐng)求master二進(jìn)制事件
  • 同時(shí)主節(jié)點(diǎn)為每個(gè)I/O線程啟動(dòng)一個(gè)dump線程,用于向其發(fā)送二進(jìn)制事件,并保存至從節(jié)點(diǎn)本地的中繼日志中,從節(jié)點(diǎn)將啟動(dòng)SQL線程從中繼日志中讀取二進(jìn)制日志,在本地重放,使得其數(shù)據(jù)和主節(jié)點(diǎn)的保持一致,最后I/OThread和SQLThread將進(jìn)入睡眠狀態(tài),等待下一次被喚醒。
  • 從庫會(huì)生成兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程;
  • I/O線程會(huì)去請(qǐng)求主庫的binlog,并將得到的binlog寫到本地的relay-log(中繼日志)文件中;
  • 主庫會(huì)生成一個(gè)log dump線程,用來給從庫I/O線程傳binlog;
  • SQL線程,會(huì)讀取relay log文件中的日志,并解析成sql語句逐一執(zhí)行;

概述:

  • 從庫會(huì)生成兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程;
  • I/O線程會(huì)去請(qǐng)求主庫的binlog,并將得到的binlog寫到本地的relay-log(中繼日志)文件中;
  • 主庫會(huì)生成一個(gè)log dump線程,用來給從庫I/O線程傳binlog;
  • SQL線程,會(huì)讀取relay log文件中的日志,并解析成sql語句逐一執(zhí)行;

二、前期配置文件準(zhǔn)備

服務(wù)器說明:

  我在本機(jī)啟動(dòng)了多個(gè)數(shù)據(jù)庫實(shí)例,具體的每一個(gè)實(shí)例如下:

  • 2 主數(shù)據(jù)庫:192.168.1.88:3306
  • 2 從數(shù)據(jù)庫1:192.168.1.88:3307
  • 2 從數(shù)據(jù)庫2:192.168.1.88:3308

  通過前面的對(duì)主從復(fù)制的介紹,我們知道主從復(fù)制其實(shí)最終是通過日志文件來進(jìn)行交互,那么具體的日志文件怎么開啟?具體的同步策略如何設(shè)置?下面將簡(jiǎn)單的介紹,一步一步的走下去。

  主從同步的配置文件都是在數(shù)據(jù)庫安裝目錄的下的更目錄的my.ini(liux是my.cnf)文件,在前一篇文章關(guān)于mysql多實(shí)例安裝中也提到了這個(gè)文件,這個(gè)次是直接在上面做配置新增即可,具體的配置文件如下,具體的配置參數(shù)值可以根據(jù)實(shí)際需要進(jìn)行修正:

主數(shù)據(jù)庫的3306中的 my.ini配置文件如下:

[Client]port = 3306[mysqld]#設(shè)置3306端口port = 3306# 設(shè)置mysql的安裝目錄basedir=C:Program Files (x86)MySQLMySQL Server 5.7# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄datadir=C:Program Files (x86)MySQLMySQL Server 5.7data# 允許最大連接數(shù)max_connections=200# 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集character-set-server=utf8# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎default-storage-engine=INNODB# 主從復(fù)制設(shè)置# 設(shè)置服務(wù)id,注意改id值在同一個(gè)數(shù)據(jù)庫集群中要保持唯一server-id = 3306# 寫入磁盤策略 該參數(shù)的有效值有 0、1、2# 0:事務(wù)提交時(shí),不將重做日志緩沖寫入磁盤。因此如果 MySQL 發(fā)生宕機(jī),那么就有可能丟失一部分事務(wù)。# 1:事務(wù)提交時(shí),會(huì)將重做日志緩沖寫入磁盤,并且立即刷新(fsync())。保證一定持久化到了硬盤中。# 2:事務(wù)提交時(shí),會(huì)將重做日志緩沖寫入磁盤,但是不會(huì)立即進(jìn)行刷新操作。此時(shí)若操作系統(tǒng)發(fā)生宕機(jī),也可能會(huì)丟失一部分?jǐn)?shù)據(jù)。# 可以看到,只有1才能真正地保證事務(wù)的持久性,但是由于刷新操作 fsync() 是阻塞的,性能會(huì)明顯地下降。如果不在乎事務(wù)丟失,,0和2能獲得更高的性能。# 默認(rèn)值為1,在實(shí)際使用過程中,為了效率,我們一般會(huì)在設(shè)置為2innodb_flush_log_at_trx_commit=2 # 開啟binlog日志同步功能# 這個(gè)參數(shù)直接影響mysql的性能和完整性。# sync_binlog=0 當(dāng)事務(wù)提交后,Mysql僅僅是將binlog_cache中的數(shù)據(jù)寫入binlog文件,但不執(zhí)行fsync之類的磁盤,同步指令通知文件系統(tǒng)將緩存刷新到磁盤,而讓Filesystem自行決定什么時(shí)候來做同步,這個(gè)是性能最好的。# sync_binlog=n,在進(jìn)行n次事務(wù)提交以后,Mysql將執(zhí)行一次fsync之類的磁盤同步指令,通知文件系統(tǒng)將Binlog文件緩存刷新到磁盤。# Mysql中默認(rèn)的設(shè)置是sync_binlog=0,即不做任何強(qiáng)制性的磁盤刷新指令,這時(shí)性能是最好的,但風(fēng)險(xiǎn)也是最大的。一旦系統(tǒng)Crash,在文件系統(tǒng)緩存中的所有Binlog信息都會(huì)丟失。# 可根據(jù)自身項(xiàng)目的數(shù)據(jù)要求,進(jìn)行靈活的設(shè)置sync_binlog=0# 二進(jìn)制日志保留天數(shù)expire_logs_days=180# binlog日志文件名(可以任意命名)log-bin=mysql-bin# 同步的數(shù)據(jù)庫設(shè)置方式有兩種:# binlog_do_db:設(shè)置需要同步的數(shù)據(jù)庫# binlog-ignore-db:設(shè)置不需要同步的數(shù)據(jù)庫# 其中兩者只需要設(shè)置一個(gè)即可,根據(jù)我們平時(shí)的項(xiàng)目情況,都是設(shè)置binlog-ignore-db 排除不需要同步的一些系統(tǒng)級(jí)數(shù)據(jù)# 這樣設(shè)置有一個(gè)好處就是:如果業(yè)務(wù)數(shù)據(jù)庫有新增,那么也不需要再次來更新設(shè)置該配置# 兩種設(shè)置方式,都可以多條數(shù)據(jù)#同步的數(shù)據(jù)庫,除此之外別的不同步(和下面binlog-ignore-db二選一)# binlog_do_db=testdb #不同步數(shù)據(jù)庫,除此之外都同步binlog-ignore-db = information_schemabinlog-ignore-db = mysqlbinlog-ignore-db = performance_schemabinlog-ignore-db = sys [mysql]# 設(shè)置mysql客戶端默認(rèn)字符集default-character-set=utf8

  從數(shù)據(jù)庫的my.ini配置都很簡(jiǎn)單了,只需要配置server-id,binlog-do-db,binlog-ignore-db即可。

其中的server-id必須配置

  binlog-do-db,binlog-ignore-db可根據(jù)實(shí)際需要設(shè)置,如果是主設(shè)置的數(shù)據(jù)庫全部同步到從,那么這兩個(gè)值就沒必要設(shè)置了,如果從只同步主的某一些庫,那么需要設(shè)置,在數(shù)據(jù)項(xiàng)目中,絕大部分都不需要設(shè)置的。

從數(shù)據(jù)庫的3307中的 my.ini配置文件如下:

[Client]port = 3307 [mysqld]#設(shè)置3307端口port = 3307server-id = 3307# 設(shè)置mysql的安裝目錄basedir=C:Program Files (x86)MySQLMySQL Server 5.7.2# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄datadir=C:Program Files (x86)MySQLMySQL Server 5.7.2data# 允許最大連接數(shù)max_connections=200# 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集character-set-server=utf8# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎default-storage-engine=INNODB [mysql]# 設(shè)置mysql客戶端默認(rèn)字符集default-character-set=utf8

從數(shù)據(jù)庫的3308中的 my.ini配置文件如下:

[Client]port = 3308[mysqld]#設(shè)置3308端口port = 3308server-id = 3308# 設(shè)置mysql的安裝目錄basedir=C:Program Files (x86)MySQLMySQL Server 5.7.2# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄datadir=C:Program Files (x86)MySQLMySQL Server 5.7.2data# 允許最大連接數(shù)max_connections=200# 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集character-set-server=utf8# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎default-storage-engine=INNODB [mysql]# 設(shè)置mysql客戶端默認(rèn)字符集default-character-set=utf8

三、主數(shù)據(jù)庫創(chuàng)建同步賬號(hào)

  在處理前,由于上面剛剛設(shè)置了數(shù)據(jù)庫的配置文件,為了能夠生效,首先是重啟一下主數(shù)據(jù)庫。只需要執(zhí)行如下兩個(gè)命令即可:

  net stop mysql

  net start mysql

創(chuàng)建主數(shù)據(jù)用戶同步使用的賬號(hào):

  • 登錄數(shù)據(jù)庫:mysql -uroot -pxuyuanhong -P 3306
  • 創(chuàng)建數(shù)據(jù)同步用戶slaveData:

    CREATE USER 'slaveData'@'%' IDENTIFIED BY '用戶登錄密碼';

  • 設(shè)置權(quán)限:

    GRANT REPLICATION SLAVE ON *.* to 'slaveData'@'%' identified by '用戶登錄密碼';

  • 刷新權(quán)限:FLUSH PRIVILEGES;
  • 查看主機(jī)狀態(tài):show master status;

四、從數(shù)據(jù)庫同步設(shè)置

  前置條件:從數(shù)據(jù)庫同步設(shè)置,只以數(shù)據(jù)庫3307為例來說明:

  從數(shù)據(jù)設(shè)置前,也還是按照主數(shù)據(jù)設(shè)置一樣,先重啟一下。只需要執(zhí)行如下兩個(gè)命令即可:

   net stop mysql3307

  net start mysql3307

登錄從數(shù)據(jù)庫:

  mysql -uroot -pxuyuanhong -P 3307

執(zhí)行手動(dòng)同步命令:

  CHANGE MASTER TO MASTER_HOST='192.168.3.205',MASTER_PORT=3306,MASTER_USER='slaveData',MASTER_PASSWORD='xuyuanhong',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=844;

其中的參數(shù)值說明:

  • master_host:主數(shù)據(jù)庫IP地址
  • master_user:主數(shù)據(jù)庫連接用戶名
  • master_password:主數(shù)據(jù)量連接密碼
  • master_port:主數(shù)據(jù)端口
  • master_log_file:開始同步的主數(shù)據(jù)庫日志名稱,主數(shù)據(jù)庫show master status
  • 隊(duì)列的Flie列數(shù)據(jù)
  • master_log_pos:開始同步的主數(shù)據(jù)庫日志開始位置,主數(shù)據(jù)庫show master status
  • 隊(duì)列的Position列數(shù)據(jù)

啟動(dòng)主從同步:

  start slave;

查看主從同步狀態(tài)

  show slave statusG;

  主從同步狀態(tài)結(jié)果圖如下:如果Slave_IO_Running: Yes,Slave_SQL_Running: Yes時(shí)說明兩個(gè)線程已啟動(dòng),主從復(fù)制配置成功。

主從同步設(shè)置失敗如何處理

  主從狀態(tài)的結(jié)果Slave_IO_Running: Yes,Slave_SQL_Running不都為true,那么需要根據(jù)提示結(jié)果,重新設(shè)置。重新設(shè)置的流程如下:

  • 停止slave:stop slave;
  • 重置slave:reset slave;
  • 重復(fù)上面的:執(zhí)行手動(dòng)同步命令開始流程

五、sql同步執(zhí)行失敗后不再同步處理

  主從同步在實(shí)際使用過程中,如果處理的不好,可能會(huì)導(dǎo)致同步失敗,比如:從數(shù)據(jù)庫也在做新增操作,如果有自增主鍵約束,那么就可能導(dǎo)致同步失敗。因?yàn)橹鲝耐阶罱K目的是實(shí)現(xiàn)數(shù)據(jù)的一致性,所以當(dāng)某一項(xiàng)同步失敗,那么就不會(huì)再做后同步處理。那么如果出現(xiàn)同步失敗后又該如何處理呢?

  在實(shí)際處理過程中,大概有兩種處理方式:

  1、主從數(shù)據(jù)差異小,并且不管最終數(shù)據(jù)的一致性,那么可以設(shè)置直接跳過同步出差的日志,繼續(xù)同步后續(xù)數(shù)據(jù),具體操作命令如下:

  第一步:停止主從同步

  stop slave;
  第二步:跳過錯(cuò)誤的日志位置,繼續(xù)后續(xù)同步,后面的數(shù)字可變
  set global sql_slave_skip_counter =1;

  第三步:繼續(xù)開啟主從同步
  start slave;

  2、如果主從數(shù)據(jù)差異大,并且要求主從數(shù)據(jù)完全一致,那么需要:重新做主從,完全同步。

  第一步:刪除從數(shù)據(jù)庫,將主數(shù)據(jù)庫備份到從數(shù)據(jù)庫(確保主從數(shù)據(jù)完全一致)

  第二步:按照上面的流程,重新配置主從同步

六、總結(jié)

  1、 主從同步數(shù)據(jù)庫,一定要注意讀寫分離。從數(shù)據(jù)庫做讀操作,不要做寫操作,最好直接只給從數(shù)據(jù)庫讀權(quán)限,不給寫權(quán)限

  2、 數(shù)據(jù)庫設(shè)置主從同步賬號(hào)時(shí),最好創(chuàng)建專門的賬號(hào)用來做主從同步

原文鏈接:https://www.cnblogs.com/xiaoXuZhi/p/xyh_mysqlMasterSlaveSet.html

總結(jié)

以上是生活随笔為你收集整理的mysql 去重 根据id_mycat数据库集群系列之mysql主从同步设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: аⅴ资源新版在线天堂 | 精品久久久久久久久久久国产字幕 | 天天躁狠狠躁 | 国产精品激情偷乱一区二区∴ | 久久久久一区二区精码av少妇 | 尹人久久 | 国产乱乱 | 日本熟妇浓毛 | 日本激情小视频 | 亚洲免费观看 | 欧美挤奶吃奶水xxxxx | 亚洲人人夜夜澡人人爽 | 一本—道久久a久久精品蜜桃 | 国产乱淫av片免费 | 精品久久久久久久免费人妻 | 日韩三级黄色 | 日韩欧美大片 | 99精品欧美一区二区三区综合在线 | 婷婷丁香色 | 综合视频一区二区 | 日干夜干天天干 | 在线人成 | 欧美人交a欧美精品 | 悠悠色在线 | 孕期1ⅴ1高h | 精品少妇人妻av一区二区 | 自宅警备员在线观看 | 乌克兰黄色片 | 九草在线| 亚洲精品久久久久久久久久 | 日本成人三级电影 | 九一av | 成人免费毛片入口 | 国产 日韩 一区 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 床戏高潮做进去大尺度视频网站 | 欧美日韩 一区二区三区 | 亚洲图片综合网 | 久草免费在线视频观看 | 在线视频一区二区三区四区 | 欧美日韩高清在线 | 婷婷亚洲五月色综合 | av夜夜操| 婷婷狠狠操 | 国内黄色一级片 | 经典av在线 | 国产精品欧美在线 | 99精品一级欧美片免费播放 | 欧美日韩在线一区二区 | 亚洲综合激情网 | 欧美性生交xxxxx久久久 | 日本黄色免费在线观看 | 国产www在线 | 蜜桃av乱码一区二区三区 | 美女张开腿让男人桶爽 | 日韩一区二区三区精品 | 中文字幕在线视频免费观看 | av在线观| 日韩av视屏 | 一级黄色性视频 | 古装三级吃奶做爰 | av中文网站| 亚洲一区二区色图 | 岛国毛片在线观看 | 奇米精品一区二区三区在线观看 | 欧美成人毛片 | 福利片网址 | 亚洲第七页 | 91视频在线网站 | 久久精品视频在线免费观看 | 国产一区二区三区网站 | 成人毛片在线观看 | 双性娇喘浑圆奶水h男男漫画 | 最近日韩中文字幕中文 | 久草资源网站 | 国产999精品久久久久久 | 超碰av人人| 亚洲另类色综合网站 | 女性女同性aⅴ免费观女性恋 | 久久久久亚洲av无码专区桃色 | 插插看| 99久久久无码国产精品性波多 | 手机av观看 | 亚洲乱码国产乱码精品 | 国产精品久久久久久久久久久久久久久久久 | 亚洲一区二区精品在线观看 | 日本裸体动漫 | 亚洲伦理影院 | 国产欧美一区二区三区在线看蜜臀 | www.呦呦| 日本人做受免费视频 | 日本公妇乱淫免费视频一区三区 | 在线国产91 | 欧美午夜在线 | 性chinese天美传媒麻 | 日韩精品专区 | 秘密基地免费观看完整版中文 | 污视频网站在线观看 | 婷婷色在线视频 |