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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MyCat学习:使用MySQL搭建主从复制(双主双从模式)

發布時間:2025/3/19 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyCat学习:使用MySQL搭建主从复制(双主双从模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,上一篇我們建立了一主一叢模式的MySQL讀寫分離 點擊這里 那么接下來,我們搭建雙主雙從模式的讀寫分離,并且使用MyCat登錄訪問

原理:master1,master2,slave1,slave2 —> master1 和 slave1主從復制,master2 和 slave2主從復制,同時 master2 做為master1的從機,進行互備主從

當然,如果你之前沒有搭建過主從復制,下面這兩步驟可以不需要做

  • 首先需要清除當前之前設置的主從模式,刪除testdb數據庫
  • stop slave; reset master;(可以主機從機都執行)
    一、master1配置文件:
server-id=1 # 定義服務器唯一ID log-bin=mysql-bin # 啟用二進制日志 binlog-ignore-db=mysql # 忽略 mysql 庫(如果配置了binlog-do-db的話可以不需要設置這個) binlog-do-db=testdb # 設置需要主從復制的庫 binlog_format=STATEMENT log-slave-updates # 在做為從數據庫的時候,有寫入的操作也需要記錄下二進制日志文件 auto-increment-increment=2 #表示自增長字段每次遞增的量,指自增字段的起始值,其默認值是1,取值范圍是1~65535 auto-increment-offset=1 # 表示自增字段從哪個數開始,一次遞增多少,取值范圍是 1~65535

二、master2配置文件:

server-id=3 log-bin=mysql-bin binlog-ignore-db=mysql binlog-do-db=testdb binlog_format=STATEMENT log-slave-updates auto-increment-increment=2 auto-increment-offset=2 # 注意起始值不一樣

三、slave1配置文件:

server-id=2 relay-log=mysql-relay

四、slave1配置文件:

server-id=4 relay-log=mysql-relay

五、雙主機,雙從機重啟 mysql 服務
六、主機從機都必須關閉防火墻
七、在兩臺主機上建立賬戶并授權 slave

create user 'slave'@'%' identified by 'qkm19981013'; grant replication slave on *.* to 'slave'@'%'; flush privileges;

八、查看 master1 的主機狀態,記錄下binlog日志文件名和position點的值,在slave1上執行以下語句:

change master to master_host='192.168.0.12',master_port=3307,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;

九、查看 master2 的主機狀態,記錄下binlog日志文件名和position點的值,在salve2上執行以下語句:

change master to master_host='192.168.0.12',master_port=3309,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;

十、在slave1和slave2上開啟主從復制

start slave; show slave status\G;

十一、最后一步,搭建 master1和master2的互備主從,即master1復制master2,master2復制,master1:

master1設置master2為主機: change master to master_host='192.168.0.12',master_port=3309,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156; start slave; show slave status\G; master2設置master1為主機: change master to master_host='192.168.0.12',master_port=3307,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156; start slave; show slave status\G;

最后的效果就是,我們在 master1上面建立 testdb 數據庫之后,其他三個MySQL都同步建立 testdb 數據庫了,接著再建立 mytbl 表,其他三個也都建立,往表中插入 insert into mytbl values(1, @@hostname); 之后出現了四個數據庫的數據不一致,@@hostname是系統變量,每個系統不一樣,所以不同,這也驗證了bin-log默認的格式是復制 SQL 語句這一說法。

需要注意的一點

mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。
從 5.7 升級 8.0 版本的不會改變現有用戶的身份驗證方法,但新用戶會默認使用新的 caching_sha2_password 。
所以在 slave 連接 master的時候,show slave status\G; 可能會出現:authentication plugin 'caching_sha2_password’的異常,這是因為MySQL8.0之后改變了密碼驗證器,我們只需要把在主機建立的授權用戶的密碼驗證器改成mysql_native_password就好了,語句如下:

ALTER USER 'slave'@'192.168.0.12' IDENTIFIED WITH mysql_native_password BY 'qkm19981013';

MyCat登錄訪問

balance 設置成 1,再添加上 寫主機信息 <dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="192.168.0.12:3307" user="root" password="qkm19981013"><readHost host="hostS1" url="192.168.0.12:3308" user="root" password="qkm19981013"/></writeHost><writeHost host="hostM2" url="192.168.0.12:3309" user="root" password="qkm19981013"><readHost host="hostS2" url="192.168.0.12:3310" user="root" password="qkm19981013"/></writeHost></dataHost>

總結

以上是生活随笔為你收集整理的MyCat学习:使用MySQL搭建主从复制(双主双从模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。