亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式

 更新時間:2023年12月25日 10:50:12   作者:我是菜鳥131  
這篇文章主要介紹了MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

數(shù)據(jù)的讀寫分離

什么是讀寫分離

把客戶端訪問數(shù)據(jù)的讀(selec)請求和寫(insert、update、delete)請求分別分配給不同的數(shù)據(jù)庫服務(wù)器處理

如何實現(xiàn)客戶端訪問數(shù)據(jù)的,讀寫分離

通過程序?qū)崿F(xiàn)

  • 讀請求----->數(shù)據(jù)庫服務(wù)器
  • 寫請求----->另一臺數(shù)據(jù)庫服務(wù)器

配置服務(wù)實現(xiàn)(在服務(wù)器上安裝軟件,提供服務(wù))

  • 中間件軟件
  • mysql-proxy
  • mycat
  • maxscale
  • client---->服務(wù)器----mysql

讀寫分離的原理

由MySQL代理面向客戶端提供服務(wù)

  • 收到SQL寫請求時,交給master服務(wù)器處理
  • 收到SQL讀請求時,交給slave服務(wù)器處理

為什么要配置數(shù)據(jù)讀寫分離

數(shù)據(jù)分流,分擔(dān)單臺服務(wù)器得工作壓力

構(gòu)建思路 

1.部署MySQL一主一從結(jié)構(gòu)

  • 主服務(wù)器:192.168.4.51
  • 從服務(wù)器:192.168.4.52

2.部署MySQL代理服務(wù)器

  • 裝包,修改配置文件,啟動服務(wù)

3.測試配置

  • 客戶端連接代理服務(wù)訪問數(shù)據(jù)

配置數(shù)據(jù)讀寫分離

拓?fù)鋱D:

首先配置51與52的的主從復(fù)制,51為主,52為從

具體配置過程請看:MySQL主從復(fù)制

#192.168.4.52
mysql -uroot -p123456 -e "show slave status\G"

配置代理服務(wù)器57

1)安裝提供服務(wù)的軟件

部署Maxscale代理軟件

由MySQL的兄弟公司MariaDB開發(fā)

下載地址:https://dlm.mariadb.com/browse/mariadbmaxscale/49/789/?_ga=2.180365351.1460156067.1640182534-1832063011.1640182534

本人使用的環(huán)境centos7.9 、MySQL5.7.35 、maxscle2.3.20

wget https://dlm.mariadb.com/1065384/MaxScale/2.3.20/centos/7/x86_64/maxscale-2.3.20-1.centos.7.x86_64.rpm
yum -y install maxscale-2.3.20-1.centos.7.x86_64.rpm
ss -nultp | grep 3306  #因為要做代理服器,不能開啟MySQL數(shù)據(jù)服務(wù),如果開啟請關(guān)閉
systemctl stop mysqld
rpm -ql maxscale
主配置文件日志文件
/etc/maxscale.cnf/var/log/maxscale

2)修改服務(wù)配置文件

 vim /etc/maxscale.cnf
 [maxscale]   #默認(rèn)服務(wù)啟動后線程的個數(shù),auto自動,可以自己修改
 threads=auto
#線程是進(jìn)程的最小工作單位,他兩的區(qū)別,線程共享資源,進(jìn)程獨享資源
[server1]  #指定服務(wù)器的IP地址,有兩臺所以要寫兩次,并且名稱不能一致,其他為默認(rèn)配置
  type=server
  address=192.168.4.51
  port=3306
  protocol=MariaDBBackend
[server2]  #定義服務(wù)器的IP地址
  type=server
  address=192.168.4.52
  port=3306
  protocol=MariaDBBackend
  
  [MariaDB-Monitor]   #監(jiān)視進(jìn)程
  type=monitor
  module=mariadbmon
  servers=server1,server2    #數(shù)據(jù)庫服務(wù)器列表
  user=maxscalemon     #使用哪個用戶執(zhí)行這個程序,使用哪個用戶,需要到數(shù)據(jù)庫服務(wù)器進(jìn)行相應(yīng)的授權(quán),監(jiān)視server1,sever2
  password=123456
  monitor_interval=2000   #多長時間查看一次,默認(rèn)單位毫秒
#[Read-Only-Service]    #只讀服務(wù)的配置
 # type=service               #我們注釋掉這個配置,因為我們希望在訪問時,既可以讀也可以寫
  #router=readconnroute
  #servers=server1
  #user=myuser
  #password=mypwd
  #router_options=slave
  [Read-Write-Service]     #定義讀寫服務(wù)
  type=service
  router=readwritesplit    #讀寫分離用戶
  servers=server1,server2
  user=maxscalerouter    #路由用戶,用來驗證監(jiān)視用戶(客戶端連接用戶)是否存在
  #我們使用客戶端連接數(shù)據(jù)庫,MySQL代理怎樣知道你當(dāng)前登錄的用戶是否存在,使用這個用戶去查看use表
  password=123456
  
  [MaxAdmin-Service]   #管理服務(wù)
  type=service
  router=cli    #命令行
  
  #[Read-Only-Listener]   #定義只讀的端口,因為上面我們不需要這個選項注釋掉,這里也需要注釋
  #type=listener
  #service=Read-Only-Service
  #protocol=MariaDBClient
  #port=4008
  
  [Read-Write-Listener]  #監(jiān)聽讀寫服務(wù)的端口
  type=listener
  service=Read-Write-Service
  protocol=MariaDBClient
  port=4006
  
  [MaxAdmin-Listener]    #管理服務(wù)端口號,如果不想讓他選擇默認(rèn),也可以進(jìn)行添加
  type=listener
  service=MaxAdmin-Service
  protocol=maxscaled
  #socket=default
  port=4016    #自定義端口

3)配置數(shù)據(jù)庫服務(wù)器

添加相應(yīng)的用戶

添加監(jiān)控用戶:maxscalemon

添加路由用戶:maxscalerouter

#在主/從服務(wù)器創(chuàng)建授權(quán)用戶192.168.4.51
mysql -uroot -p123456
#replication slave   監(jiān)控主從的狀態(tài)是否正常
#replication client   監(jiān)控主從的服務(wù)是否運行
grant replication slave,replication client on *.* to maxscalemon@"%" identified by "123456";
grant select on mysql.* to maxscalerouter@"%" identified by "123456";
#因為是主從復(fù)制,所以在主服務(wù)上配置,從服務(wù)器也會同步相應(yīng)數(shù)據(jù)
select user,host from mysql.user;  #查看用戶
#192.168.4.52
mysql -uroot -p123456 -e"select user,host from mysql.user" #查看是否同步成功

4)啟動代理服務(wù)

#192.168.4.51
maxscale -f /etc/maxscale.cnf
ls /var/log/maxscale   #maxscale軟件的日志信息,如果沒有啟動可以查看錯誤信息
ps -C maxscale   #查看進(jìn)程信息
ss -lnutp | grep maxscale   #查看端口信息

MaxScale cannot be run as root. Failed to write child process message!

如果啟動抱以上錯誤:可以使用以下方式解決

maxscale -f /etc/maxscale.cnf -U maxscale 指定啟動用戶名
maxscale -f /etc/maxscale.cnf -U maxscale maxscalemon

5)查看服務(wù)信息

驗證配置 

1)在代理服務(wù)器本機連接管理服務(wù),查看監(jiān)控信息

#在代理服務(wù)器本機訪問管理
#maxadmin -uadmin -pmariadb -P端口  默認(rèn)用戶admin默認(rèn)密碼,默認(rèn)密碼maridb
maxadmin -uadmin -pmariadb -P4016
list servers  #查看監(jiān)控信息,調(diào)用的是 [MariaDB-Monitor]模塊

2)在客戶端連接代理服務(wù)器57訪問數(shù)據(jù)

在連接之前先添加相應(yīng)的授權(quán)用戶

#192.168.4.51
mysql -uroot -p123456
create database db7;
create table db7.a (id int);
grant select,insert on db7.* to jim@"%" identified by "123456";
#192.168.4.3
mysql -h 192.168.4.57 -P4006 -ujim -p123456
select * from db7.a;
insert into db7.a values(100);
select * from db7.a;

3)驗證是否實現(xiàn)了數(shù)據(jù)的讀寫分離

在從服務(wù)器52本機進(jìn)行數(shù)據(jù)插入。

因為52是從服務(wù)器所以插入52的數(shù)據(jù)并不會同步到51

#192.168.4.52
mysql -uroot -p123456
insert into db7.a values(120);
select * from db7.a;

在主服務(wù)器上查看

在客戶端重新連接,重新查看表里的內(nèi)容

mysql -h 192.168.4.57 -P4006 -ujim -p123456
select * from db7.a;

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • mysql中的json處理方案

    mysql中的json處理方案

    這篇文章主要介紹了mysql中的json處理方案,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • mysql for update是鎖表還是鎖行實例詳解

    mysql for update是鎖表還是鎖行實例詳解

    在并發(fā)一致性控制場景中,我們常常用for update悲觀鎖來進(jìn)行一致性的保證,但是如果不了解它的機制,就進(jìn)行使用,很容易出現(xiàn)事故,比如for update進(jìn)行了鎖表導(dǎo)致其他請求只能等待,從而拖垮系統(tǒng),這篇文章主要介紹了mysql for update是鎖表還是鎖行操作,需要的朋友可以參考下
    2024-03-03
  • ubuntu系統(tǒng)中Mysql ERROR 1045 (28000): Access denied for user root@ localhost問題的解決方法

    ubuntu系統(tǒng)中Mysql ERROR 1045 (28000): Acces

    這篇文章主要介紹了ubuntu系統(tǒng)安裝mysql登陸提示 解決Mysql ERROR 1045 (28000): Access denied for user root@ localhost問題,需要的朋友可以參考下
    2017-05-05
  • mysql存儲過程詳解

    mysql存儲過程詳解

    我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯,然后執(zhí)行,而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給定參數(shù)(如果該存儲過程帶有參數(shù))來調(diào)用執(zhí)行它
    2012-07-07
  • mysql出現(xiàn)ERROR 1819 (HY000)的解決方法

    mysql出現(xiàn)ERROR 1819 (HY000)的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql出現(xiàn)ERROR 1819 (HY000)的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • mac 裝5.6版本mysql 設(shè)置密碼的簡易方法

    mac 裝5.6版本mysql 設(shè)置密碼的簡易方法

    這篇文章主要介紹了mac 裝5.6版本mysql 設(shè)置密碼的簡易方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • MySQL數(shù)據(jù)庫遷移全過程

    MySQL數(shù)據(jù)庫遷移全過程

    本文詳細(xì)解析了MySQL數(shù)據(jù)庫遷移的整個過程,包括準(zhǔn)備工作、遷移方法、注意事項和優(yōu)缺點,文章介紹了三種常見的遷移方法:使用mysqldump導(dǎo)出和導(dǎo)入、使用ibd文件遷移和使用目錄整體遷移,每種方法都有其優(yōu)缺點,選擇合適的方法取決于具體的遷移需求和環(huán)境
    2025-02-02
  • mysql日志文件General_log和Binlog開啟及詳解

    mysql日志文件General_log和Binlog開啟及詳解

    MySQL中的數(shù)據(jù)變化會體現(xiàn)在上面日志中,下面這篇文章主要給大家介紹了關(guān)于mysql日志文件General_log和Binlog開啟及詳解的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • MySQL5.7.18下載和安裝過程圖文詳解

    MySQL5.7.18下載和安裝過程圖文詳解

    本文通過圖文并茂的形式給大家介紹了MySQL5.7.18下載和安裝過程,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-07-07
  • 聊聊MySQL中的參數(shù)

    聊聊MySQL中的參數(shù)

    這篇文章主要介紹了MySQL中的參數(shù)是什么,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09

最新評論