亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL(4)-AB主從復制與讀寫分離

發布時間:2020-06-29 02:45:49 來源:網絡 閱讀:455 作者:gsshang 欄目:MySQL數據庫


? ? 本篇博客介紹的是通過 主從復制(Master-Slave)的方式來同步數據,再通過讀寫分離(MySQL-Proxy)來提升數據庫的并發負載能力實現mysql高可用性


? ? 首先 , 我們先了解AB主從復制 ?. AB復制即在A主機上做create , update, insert, delete 等數據庫 , 表 , 記錄的增刪該查操作 , B主機會自動做數據庫 , 表 , 記錄的同步跟新


AB主從復制


工作原理和過程


? ? ? ?MySQL(4)-AB主從復制與讀寫分離


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (圖片源于網絡)

說明 : 1.在主庫上把數據更改記錄到二進制日志中
? ? ? ? ?2.備庫將主庫上的日志復制到自己的中繼日志中
? ? ? ? ?3.備庫讀取中繼日志中的事件 , 將其重放到備庫數據庫上
? ? ? ? ?4.備庫根據其中的內容做出主庫相應的操作 , 對數據進行更新


過程 :?

? ? ? ? ?A主機 : create database db ----- > 將此命令寫入本機的二進制日志中
? ? ? ? ?B主機: I/O線程 監測并讀取主機A主機上的二進制日志文件新增的內容 , 并且將更新的內容寫入到B主機自己的中繼日志文件中
? ? ? ? ? ? ? ? ? ?SQL線程 : 讀取B主機上的中繼日志文件中心的SQL語句 , 并且自動執行這些SQL語句 , 最終在B主機上創建db這個庫


? ? ? ??


讀寫分離


原理和工作過程


? ? ? ? MySQL的主從復制和MySQL的讀寫分離兩者有著緊密的聯系 , 首先部署主從復制 , 只有主從復制完了 , 才能在此基礎上進行數據的讀寫分離 .

? ? ? ? 簡單來說 , 讀寫分離就是在主服務器上寫 , 只在從服務器上讀 , 基本的原理是讓主數據庫處理事務性查詢 , 而從數據庫處理select查詢 , 數據庫復制被用來把事務性查詢導致的改變同步到集群中的從數據庫

? ? ? ? 舉個例子來說 , 主數據庫就相當于銀行的存款取款一體機 , 從就相當于取款機 , 當用戶要存錢(寫入數據)就在存取款機上操作 , 當用戶要取款(讀)就在取款機上操作

? ? ? ? 讀寫分離可以基于程序代碼內部實現 , 也可以基于中間件(mysql-proxy , amoeba , Atlas)代理層實現



?AB主從復制與讀寫分離實現數據庫高可用部署


實驗拓撲圖 :

環境 :centos7

主數據庫服務器(master) : 192.168.11.11

從數據庫服務器(slave) : 192.168.11.12

代理服務器 : 192.168.11.13 ?

? ? ? ??MySQL(4)-AB主從復制與讀寫分離

一 . AB主從復制部署


部署思路 ?:

1.在A主機上的/etc/my.cnf主配置文件中開啟binlog二進制日志文件功能 , 并且給主機設置server-id唯一的標識編號 , 重啟Mariadb服務
2.在A主機上創建用于AB主從復制的用戶賬號 , 并查看master狀態中的binlog日志文件的position位置數值
3.在B主機上的/etc/my.cnf主配置文件中設置server-id唯一標識編碼 , 重啟mariadb服務
4.在B主機上用help change master to 查命令幫助 , 并用change master 命令告訴B主機它的master主人的正確幸喜
5.在B主機上用start slave 啟動mariadb的隨從服務 , 并用show slave status 查看Ab主從復制的數據同步狀態 , 確定兩個線程的狀態為yes


--------在A主機(192.168.11.11)的操作--------


1 . 安裝好數據庫 , 并啟動數據庫服務

部署流程可參考(不做過多解釋):https://blog.51cto.com/14181896/2361492

2 . 編輯主配置文件 /etc/my.cnf ?,添加下圖234行內容

MySQL(4)-AB主從復制與讀寫分離

3 . 重啟服務 , 創建用于AB主從復制的用戶賬號 (賬號密碼均為rep) , 如圖:

MySQL(4)-AB主從復制與讀寫分離

4 . 查看master狀態中的binlog日志文件的position位置數值(position值會根據重啟次數改變)

MySQL(4)-AB主從復制與讀寫分離


--------在B主機(192.168.11.12)的操作--------

?

1 . 同A主機安裝部署好數據庫服務

2 . 修改主配置文件 /etc/my.cnf , 添加如下內容 :

MySQL(4)-AB主從復制與讀寫分離

3 . 重啟服務 , 測試賬號rep用戶是否能遠程訪問master主機的數據庫服務

MySQL(4)-AB主從復制與讀寫分離

4 . 在數據庫中 , 用change master命令告訴B主機他的主人master的正確信息

MySQL(4)-AB主從復制與讀寫分離

CHANGE?MASTER?TO
MASTER_HOST='192.168.11.11',??????????????????????????#A主機IP
MASTER_USER='rep',????????????????????????????????????#用于主從復制的用戶
MASTER_PASSWORD='rep',????????????????????????????????#用于主從復制的密碼
MASTER_PORT=3306,?????????????????????????????????????#端口號為3306
MASTER_LOG_FILE='master-bin.000001',??????????????????#對應A主機master狀態切記的值
MASTER_LOG_POS=403,???????????????????????????????????#A主機position值
MASTER_CONNECT_RETRY=10;??????????????????????????????#值和主連不上重試時間為10S

5 . 使用start slave啟動Mariadb的隨從服務 , 并用show ?slave ?status 查看AB主從復制的數據同步狀態 , 要確認IO和SQL兩個線程的狀態為yes??

MySQL(4)-AB主從復制與讀寫分離


6 . 測試一下AB主從復制是否配置成功 , 在A(192.168.11.11)上創建一個庫 , 看B主機(192.168.11.12)是否同步該數據庫

A主機 :

MySQL(4)-AB主從復制與讀寫分離

B主機 :

MySQL(4)-AB主從復制與讀寫分離

可以看到同步到了新創建的數據庫testrep , 到此主從復制配置結束 !!


二 . 采用中間件來實現讀寫分離操作


讀寫分離的中間件分為很多種 ,在此實驗使用Atlas軟件來實現讀寫分離

注 :代理服務器(192.168.11.13)不需要安裝mysql服務


atlas介紹 :

由360開發 , 其優點有 :
(1)、基于mysql-proxy-0.8.2進行修改,代碼完全開源;
(2)、比較輕量級,部署配置也比較簡單;
(3)、支持DB讀寫分離;
(4)、支持從DB讀負載均衡,并自動剔除故障從DB;
(5)、支持平滑上下線DB;
(6)、具備較好的安全機制(IP過濾、賬號認證);
(7)、版本更新、問題跟進、交流圈子都比較活躍。


代理服務器部署流程 :


1 . 在192.168.11.13上安裝和配置atlas軟件

rpm ?-ivh ?Atlas-2.2.1.el6.x86_64.rpm ? ? ? (該源碼包需在網上下載 , 百度搜索Atlas rpm源碼包)

echo "PATH=$PATH:/usr/local/mysql-proxy/bin/" >> /etc/profile ? ? ?//設置變量環境

source? /etc/profile ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//啟用變量環境

ll /usr/local/mysql-proxy/

MySQL(4)-AB主從復制與讀寫分離

MySQL(4)-AB主從復制與讀寫分離



? ? ? ? ? ? ? ?

? ? ? ? ? ? ?說明 : ?

? ? ? ? ? ? ?bin目錄下放的都是可執行文件

? ? ? ? ? ? ?1. “encrypt”是用來生成MySQL密碼加密的,在配置的時候會用到

? ? ? ? ? ? ?2. “mysql-proxy”是MySQL自己的讀寫分離代理

? ? ? ? ? ? ?3. “mysql-proxyd”是360弄出來的,后面有個“d”,服務的啟動、重啟、停止。都是用他來執行的

? ? ? ? ? ? ?conf目錄下放的是配置文件

? ? ? ? ? ? ?1. “test.cnf”只有一個文件,用來配置代理的,可以使用vim來編輯

? ? ? ? ? ? ?2. ? lib目錄下放的是一些包,以及Atlas的依賴

? ? ? ? ? ? ?3 . ?log目錄下放的是日志,如報錯等錯誤信息的記錄

? ? ? ? ? ? ?進入bin目錄,使用encrypt來對數據庫的密碼進行加密,此處用戶和密碼為rep



? ? ? ? ? ? ?

cd /usr/local/mysql-proxy/bin/

./encrypt 01?? 生成加密密碼,并復制此密碼(上圖)

cd /usr/local/mysql-proxy/conf/

cp -v? test.cnf? test.cnf.bak??? //備份test.cnf配置文件

vi? test.conf?? 修改后的讀寫分享的完整配置文件內容

MySQL(4)-AB主從復制與讀寫分離

MySQL(4)-AB主從復制與讀寫分離

?


? ? ? ? ? ??

? ? ?test.cnf讀寫分離配置文件功能說明:

? ? ? ? ? ?1:[mysql-proxy]?? //讀寫分離代理配置

? ? ? ? ? ?6:admin-username = user??? //管理接口的用戶名

? ? ? ? ? ?9:admin-password = pwd???? //管理接口的密碼

? ? ? ? ? ?12:proxy-backend-addresses = 192.168.100.25:3306??? //主數據庫的IP地址和端口號(可讀可寫)

? ? ? ? ? ?15:proxy-read-only-backend-addresses = 192.168.100.26:3306@1,192.168.100.27:3306@2?? //讀服務器的ip、端口和權重

? ? ? ? ? ?18:pwds = admin:VFnEp9P4Vu4=, rep:VFnEp9P4Vu4=????? //后端MYSQL的用戶名和encrypt命令生成的加密密碼

? ? ? ? ? ?21:daemon = true????? //設置為守護進程模式(后臺運行)

? ? ? ? ? ?24:keepalive = true?? //允許keepalive

? ? ? ? ? ?27:event-threads = 8?? //工作線程數為8

? ? ? ? ? ?30:log-level = message?? //日志等級為message消息

? ? ? ? ? ?33:log-path = /usr/local/mysql-proxy/log??? //日志文件路徑

? ? ? ? ? ?45:proxy-address = 0.0.0.0:3306????? //Atlas監聽的管理接口IP和端口

? ? ? ? ? ?48:admin-address = 0.0.0.0:2345????? //Atlas監聽的管理接口IP和端口


?

?2?. 配置好Atlas , 啟動atlas服務?

/usr/local/mysql-proxy/bin/mysql-proxyd? test? start

(重啟atlas服務:/usr/local/mysql-proxy/bin/mysql-proxyd? test? restart)

? ? ? ? ? ? ? ??

設置mysql-proxyd開機啟動:

echo "/usr/local/mysql-proxy/bin/mysql-proxyd? test? start" >> /etc/profile

source ?/etc/profile


抓包驗證 :

tcpdump抓包:tcpdump -i ens33 -nn tcp port 3306

在A主機上創建表 , 并寫入數據:

MySQL(4)-AB主從復制與讀寫分離

B主機同步

?MySQL(4)-AB主從復制與讀寫分離

抓包結果 :

MySQL(4)-AB主從復制與讀寫分離

? ? 到此 ,AB主從復制和讀寫分離部署到此完結 ?!!

? ? ? ? ? ? ? ??

? ? ? ? ? ??

?



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富源县| 五华县| 卢龙县| 彭州市| 封开县| 通山县| 贵港市| 牙克石市| 额敏县| 青冈县| 静安区| 高碑店市| 肇庆市| 香港| 双鸭山市| 贺兰县| 阜南县| 广汉市| 元江| 鄂州市| 镇坪县| 高平市| 庆安县| 武宣县| 德江县| 余庆县| 宜良县| 德昌县| 宁明县| 宿松县| 松阳县| 长海县| 肇州县| 苏尼特右旗| 安康市| 邹平县| 徐水县| 莆田市| 大理市| 大庆市| 漯河市|