欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

什么是讀寫(xiě)分離

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

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

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

  • 讀請(qǐng)求----->數(shù)據(jù)庫(kù)服務(wù)器
  • 寫(xiě)請(qǐng)求----->另一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器

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

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

讀寫(xiě)分離的原理

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

  • 收到SQL寫(xiě)請(qǐng)求時(shí),交給master服務(wù)器處理
  • 收到SQL讀請(qǐng)求時(shí),交給slave服務(wù)器處理

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

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

構(gòu)建思路 

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

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

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

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

3.測(cè)試配置

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

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

拓?fù)鋱D:

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

具體配置過(guò)程請(qǐng)看:MySQL主從復(fù)制

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

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

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

部署Maxscale代理軟件

由MySQL的兄弟公司MariaDB開(kāi)發(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  #因?yàn)橐龃矸?,不能開(kāi)啟MySQL數(shù)據(jù)服務(wù),如果開(kāi)啟請(qǐng)關(guān)閉
systemctl stop mysqld
rpm -ql maxscale
主配置文件日志文件
/etc/maxscale.cnf/var/log/maxscale

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

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

3)配置數(shù)據(jù)庫(kù)服務(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ù)是否運(yùn)行
grant replication slave,replication client on *.* to maxscalemon@"%" identified by "123456";
grant select on mysql.* to maxscalerouter@"%" identified by "123456";
#因?yàn)槭侵鲝膹?fù)制,所以在主服務(wù)上配置,從服務(wù)器也會(huì)同步相應(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)啟動(dòng)代理服務(wù)

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

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

如果啟動(dòng)抱以上錯(cuò)誤:可以使用以下方式解決

maxscale -f /etc/maxscale.cnf -U maxscale 指定啟動(dòng)用戶名
maxscale -f /etc/maxscale.cnf -U maxscale maxscalemon

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

驗(yàn)證配置 

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

#在代理服務(wù)器本機(jī)訪問(wèn)管理
#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訪問(wèn)數(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)驗(yàn)證是否實(shí)現(xiàn)了數(shù)據(jù)的讀寫(xiě)分離

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

因?yàn)?2是從服務(wù)器所以插入52的數(shù)據(jù)并不會(huì)同步到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é)

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

相關(guān)文章

  • mysql中的json處理方案

    mysql中的json處理方案

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

    mysql for update是鎖表還是鎖行實(shí)例詳解

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

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

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

    mysql存儲(chǔ)過(guò)程詳解

    我們常用的操作數(shù)據(jù)庫(kù)語(yǔ)言SQL語(yǔ)句在執(zhí)行的時(shí)候需要要先編譯,然后執(zhí)行,而存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給定參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)調(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)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • mac 裝5.6版本mysql 設(shè)置密碼的簡(jiǎn)易方法

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

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

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

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

    mysql日志文件General_log和Binlog開(kāi)啟及詳解

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

    MySQL5.7.18下載和安裝過(guò)程圖文詳解

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

    聊聊MySQL中的參數(shù)

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

最新評(píng)論