亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747


mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

 

ProxySql是MySQL的一款中間件產(chǎn)品,是靈活強(qiáng)大的mysql代理層,可以實(shí)現(xiàn)讀寫(xiě)分離,支持query路由功能,支持動(dòng)態(tài)指定某個(gè)sql進(jìn)行緩存,支持動(dòng)態(tài)加載配置。故障切換和一些sql過(guò)濾功能。

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

實(shí)戰(zhàn)演練

環(huán)境

centos7.5 mysql5.7

ip:10.106.145.181(從) 10.106.145.182(主) 10.106.145.183(從)

 

注意:另個(gè)從庫(kù)設(shè)置為read_only=on

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

我們可以將proxysql單獨(dú)安裝在一臺(tái)機(jī)器上,這里因?yàn)闄C(jī)器不夠我們就先將它安裝在10.106.145.183上,下面我們開(kāi)始操作

 

1. 安裝并配置好mysq主從

從庫(kù)的配置文件中要加入read_only=1,不然在啟動(dòng)之后查詢mysql_servers表會(huì)出現(xiàn)從庫(kù)也會(huì)被自動(dòng)加入寫(xiě)入的組中。proxysql區(qū)別主從的唯一方式就是read_only狀態(tài)值。 如果是測(cè)試則先將從庫(kù)臨時(shí)設(shè)置為只讀

vi /etc/my.cnf

添加 read_only=1

臨時(shí)設(shè)置:

set global read_only=on

 

2. 安裝ProxySql

vim /etc/yum.repos.d/proxysql.repo

[proxysql_repo]

name= ProxySQL YUM repository

baseurl=http://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/$releasever

gpgcheck=1

gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key

 

3.安裝ProxySQL和mariadb客戶端(如果有該機(jī)器上有mysql客戶端則不需要安裝mariadb)

ProxySQL內(nèi)置了一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù),所以需要有MySQL客戶端連上去對(duì)其進(jìn)行配置

yum install proxysql mariadb -y

這里因?yàn)樵摍C(jī)器上有mysql客戶端了,所有我使用指令如下

yum install proxysql -y

4.啟動(dòng)ProxySQL服務(wù)

systemctl start proxysql

systemctl status proxysql

設(shè)置開(kāi)機(jī)啟動(dòng)

system enable proxysql

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

netstat -anlp| grep proxysql

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

proxysql --version

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

5.連接管理端口

6032是proxysql的管理端口號(hào)6033是對(duì)外服務(wù)的端口,用戶名密碼都是admin

登錄命令

/usr/local/mysql/bin/mysql -uadmin -padmin -h 127.0.0.1 -P 6032

show databases;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

6.四個(gè)庫(kù)的說(shuō)明

main:內(nèi)存配置數(shù)據(jù)庫(kù),即memory,表里存放后端db實(shí)例 用戶驗(yàn)證 路由規(guī)則等信息,該庫(kù)信息如 下

 

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

其中主要表

mysql_servers:后端可以連接mysql的服務(wù)器列表

mysql_users:后端數(shù)據(jù)庫(kù)賬戶和監(jiān)控賬戶

mysql_query_rules: query路由到后端不同服務(wù)器的規(guī)則列表

disk庫(kù):持久化磁盤(pán)的配置

stats庫(kù):統(tǒng)計(jì)信息的匯總

monitor庫(kù):一些監(jiān)控收集的信息,包括數(shù)據(jù)庫(kù)的健康狀態(tài)等

 

7.在主庫(kù)上配置監(jiān)控賬戶和對(duì)外訪問(wèn)賬戶

create user monitor@'10.106.145.%' identified by 'monitor';

grant all privileges on *.* to monitor@'10.106.145.%' with grant option;

create user zsprox@'10.106.145.%' identified by 'zsprox';

grant all privileges on *.* to zsprox@'10.106.145.%' with grant option;

主庫(kù)的賬戶會(huì)被同步到另外兩個(gè)從庫(kù)上,如果屏蔽了則需要分別到從庫(kù)上創(chuàng)建上面兩個(gè)賬戶

8.Proxysql的多層配置系統(tǒng)

proxysql有一套完整的配置系統(tǒng) ,方便dba對(duì)線上操作,整套配置系統(tǒng)分為三層,頂層為runtime,中間層為memory,底層也就是持久層為disk 和config file,配置結(jié)構(gòu)如下

 

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

runtime:代表當(dāng)前生效的正在使用的配置,無(wú)法直接修改這里的配置,必須從下一層load進(jìn)來(lái)

memory:上層連runtime下面連接持久化,這層是可以正常操作proxysql的配置,隨便修改,不會(huì)影響生產(chǎn)環(huán)境,修改這個(gè)配置一般是先在memory中完成的,確認(rèn)正常后在加載到runtime和持久化到磁盤(pán)上

disk 和config file:持久化信息,重啟后內(nèi)存的信息會(huì)丟失,所有需要持久化

 

9. 添加主從服務(wù)器列表

使用超管用戶登錄

/usr/local/mysql/bin/mysql -uadmin -padmin -h 127.0.0.1 -P 6032

use main;

insert into mysql_servers(hostgroup_id,hostname,port) values(10,'10.106.145.181',3306);

insert into mysql_servers(hostgroup_id,hostname,port) values(10,'10.106.145.182',3306);

insert into mysql_servers(hostgroup_id,hostname,port) values(10,'10.106.145.183',3306);

load mysql servers to runtime;

save mysql servers to disk;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

查詢狀態(tài)

select *from mysql_servers;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

10. 添加監(jiān)控賬戶

set mysql-monitor_username='monitor';

set mysql-monitor_password='monitor';

load mysql variables to runtime;

save mysql variables to disk;

驗(yàn)證

select *from monitor.mysql_server_connect_log;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

監(jiān)控正常,沒(méi)有報(bào)錯(cuò)信息

11.配置主從分組信息

show create table mysql_replication_hostgroups;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

里面write_hostgroup 是寫(xiě)入組編號(hào),reader_hostgroup是讀取組編號(hào),我們這里使用10 作為寫(xiě)入組,20為讀取組編號(hào)

insert into mysql_replication_hostgroups(writer_hostgroup,reader_hostgroup,comment) values(10,20,'proxy');

load mysql servers to runtime;

save mysql servers to disk;

select *from mysql_replication_hostgroups;

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

proxysql 會(huì)根據(jù)server的read_only的取值來(lái)將服務(wù)器進(jìn)行分組, 只讀的分配到20(讀取組),不是只讀的分配到10(寫(xiě)入組)

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

12.配置對(duì)外訪問(wèn)賬戶

對(duì)方訪問(wèn)賬戶默認(rèn)指定主庫(kù),并對(duì)該用戶開(kāi)啟事務(wù)持久化保護(hù)

mysql_users表中的transaction_persistent 的字段默認(rèn)是0,建議在創(chuàng)建完用戶之后設(shè)置為1,避免發(fā)生臟讀幻讀現(xiàn)象,命令如下

insert into mysql_users(username,password,default_hostgroup) values('zsprox','zsprox',10);

update mysql_users set transaction_persistent=1 where username='zsprox';

load mysql users to runtime;

save mysql users to disk;

驗(yàn)證登錄的服務(wù)器就是主庫(kù)(這里登錄ip就是我們安裝proxysql的服務(wù)器地址,一般建議單獨(dú)安裝一臺(tái) ,不要和mysql集群中的機(jī)器使用一臺(tái))

/usr/local/mysql/bin/mysql -uzsprox -pzsprox -h 10.106.145.183 -P 6033 -e "select @@hostname"

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

注意對(duì)外端口是6033

13 配置讀寫(xiě)分離策略

配置讀寫(xiě)分離需要使用mysql_query_rules 表,表中的match_pattern字段就是代表設(shè)置的規(guī)則,destination_hostgroup字段代表默認(rèn)指定的分組,Apply代表真正執(zhí)行的應(yīng)用規(guī)則。

把所有以select開(kāi)頭的語(yǔ)句全部分配到20的讀組中,其他都分配到寫(xiě)組10中去

 

insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,'^select.*for update$',10,1);

insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,'^select',20,1);

load mysql query rules to runtime;

save mysql query rules to disk;

 

14 測(cè)試讀寫(xiě)分離

通過(guò)創(chuàng)建對(duì)外賬戶zsproxy連接proxysql登錄數(shù)據(jù)庫(kù)

命令如下

/usr/local/mysql/bin/mysql -u zsprox -p -h 10.106.145.183 -P 6033

查詢一個(gè)表

select * from test.b

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

在登錄管理端口 查詢監(jiān)控狀態(tài)

/usr/local/mysql/bin/mysql -uadmin -padmin -h 127.0.0.1 -P 6032

select *from stats_mysql_query_digest;

 

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

 

在6033端口執(zhí)行插入操作

insert into b values(20);

再次查詢狀態(tài)

mysql5.7使用ProxySQL實(shí)現(xiàn)讀寫(xiě)分離

 

 

15 調(diào)整權(quán)重

讀寫(xiě)分離成功后,我們可以調(diào)整權(quán)重,讓某臺(tái)機(jī)器承受更多的讀操作,在表mysql_servers上進(jìn)行設(shè)置

update mysql_servers set weight=10 where hostname='10.106.145.181';

load mysql servers to runtime;

save mysql servers to disk;

 

到此讀寫(xiě)分離正式配置完畢了

分享到:
標(biāo)簽:mysql5 ProxySQL
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定