• 當前位置:首頁 > IT技術 > 數據庫 > 正文

    Mysql讀寫分離集群的搭建且與MyCat進行整合
    2021-10-13 21:46:12

    1. 概述

    老話說的好:不熟悉的東西不要不懂裝懂,做人要坦誠,知道就是知道,不知道就是不知道。

    ?

    言歸正傳,今天我們來聊聊 Mysql主從讀寫分離集群是如何搭建的,并且聊一下如何用 MyCat 去訪問這個Mysql讀寫分離集群。

    ?

    2. 場景介紹

    服務器A IP:192.168.1.22

    服務器B IP:192.168.1.12

    ?

    服務器A 和 服務器B 都安裝了Mysql,且初始化完成,關于Mysql在CentOS7的安裝,可參見我的另一篇文章《MyCat的快速搭建》。

    服務器B作為 Mysql 主服務,服務器A作為 Mysql 從服務器。

    MyCat 安裝在服務器A上。MyCat的安裝也可參見我的另一篇文章《MyCat的快速搭建》。

    ?

    3.??Mysql主從讀寫分離集群的搭建

    3.1 修改 服務器B(主)配置文件

    #?vim /etc/my.cnf

    ?

    ?

    3.2 重啟服務器B(主)的 Mysql 服務

    #?systemctl restart mysqld

    ?

    3.3?修改 服務器A(從)配置文件

    #?vim /etc/my.cnf

    ?

    ?

    3.4 重啟服務器A(從)的 Mysql 服務

    #?systemctl restart mysqld

    ?

    3.5 在?服務器B(主)上創建同步賬號并授權

    #?mysql -u root -p

    mysql>?create user 'repl'@'%' identified by 'Zhuifengren@123456';

    mysql> grant replication slave on *.* to 'repl'@'%';

    mysql> flush privileges;

    ?

    3.6 在?服務器B(主)上進行鎖表操作

    #?mysql -u root -p

    mysql> flush tables with read lock;

    ?

    3.7 在?服務器B(主)上找到 log-bin 的位置

    #?mysql -u root -p

    mysql> show master status;

    ?

    3.8 將?服務器B(主)的 mysql 數據復制到?服務器A(從)

    備份數據

    #?mysqldump --all-databases --master-data > dbdump.db -uroot -p

    注意:剛才鎖表的mysql客戶端不要退出,重新開一個窗口?。?!

    傳輸數據文件

    # scp dbdump.db root@192.168.1.22:/home

    ?

    3.9 在?服務器A(從)還原 mysql 數據

    # cd /home

    # mysql < dbdump.db -uroot -p

    注意:兩臺服務器mysql的版本務必一致,否則可能報錯?。?!

    ?

    3.10?將 服務器B(主)上鎖表操作取消

    mysql>?unlock tables;

    ?

    3.11?在?服務器A(從)上設置主從同步配置

    #?mysql -u root -p

    mysql>?change master to
    -> master_host='192.168.1.12',
    ->?master_user='repl',
    ->?master_password='Zhuifengren@123456',
    ->?master_log_file='zhuifengren_log.000001',
    ->?master_log_pos=1432;

    ?

    mysql> start slave;

    ?

    3.12?Authentication plugin 'caching_sha2_password' reported error 報錯解決

    如果發現主從數據沒有同步,可以查看從庫(服務器A)的同步日志

    # cat /var/log/mysqld.log

    ?

    如果有如下報錯,則說明之前創建的 repl 賬戶密碼加密方式有問題:?

    Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

    ?

    解決辦法:

    進入 服務器B(主)的mysql客戶端,修改用戶密碼的加密方式

    #?mysql -u root -p

    mysql>?alter user 'repl'@'%' identified WITH sha256_password by 'Zhuifengren@123456';
    mysql>?grant replication slave on *.* to 'repl'@'%';
    mysql>?flush privileges;

    ?

    然后進入 服務器A(從)重啟主從同步

    #?mysql -u root -p

    mysql> stop slave;

    mysql> start slave;

    問題解決?。?!

    ?

    4. MyCat 配置讀寫分離

    4.1 在之前的基礎上修改MyCat配置

    # cd?/home/mycat/conf

    # vim schema.xml

    ?

    ?

    其中 讀庫readHost 標簽寫在? 寫庫writeHost 標簽里面。

    dataHost 標簽中 balance 屬性的含義如下:(摘抄自 MyCat 官網的權威指南)

    balance 屬性 負載均衡類型,目前的取值有 4 種:
    
    1. balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。
    
    2. balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙 主雙從模式(M1->S1,M2->S2,并且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。
    
    3. balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發。
    
    4. balance="3",所有讀請求隨機的分發到 wiriterHost 對應的 readhost 執行,writerHost 不負擔讀壓力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

    ?

    4.2 重啟MyCat

    # cd?/home/mycat/bin

    #?./mycat stop

    # ./mycat start

    ?

    5. 綜述

    今天聊了一下 Mysql 主從讀寫分離集群的搭建,以及 MyCat 如何整合 Mysql 讀寫分離集群,希望可以對大家的工作有所幫助。

    歡迎幫忙點贊、評論、轉發、加關注 :)

    關注追風人聊Java,每天更新Java干貨。

    ?

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码