日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


mysql5.7使用ProxySQL實現讀寫分離

 

 

ProxySql是MySQL的一款中間件產品,是靈活強大的mysql代理層,可以實現讀寫分離,支持query路由功能,支持動態指定某個sql進行緩存,支持動態加載配置。故障切換和一些sql過濾功能。

mysql5.7使用ProxySQL實現讀寫分離

 

實戰演練

環境

centos7.5 mysql5.7

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

 

注意:另個從庫設置為read_only=on

mysql5.7使用ProxySQL實現讀寫分離

 

我們可以將proxysql單獨安裝在一臺機器上,這里因為機器不夠我們就先將它安裝在10.106.145.183上,下面我們開始操作

 

1. 安裝并配置好mysq主從

從庫的配置文件中要加入read_only=1,不然在啟動之后查詢mysql_servers表會出現從庫也會被自動加入寫入的組中。proxysql區別主從的唯一方式就是read_only狀態值。 如果是測試則先將從庫臨時設置為只讀

vi /etc/my.cnf

添加 read_only=1

臨時設置:

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客戶端(如果有該機器上有mysql客戶端則不需要安裝mariadb)

ProxySQL內置了一個輕量級的數據庫,所以需要有MySQL客戶端連上去對其進行配置

yum install proxysql mariadb -y

這里因為該機器上有mysql客戶端了,所有我使用指令如下

yum install proxysql -y

4.啟動ProxySQL服務

systemctl start proxysql

systemctl status proxysql

設置開機啟動

system enable proxysql

mysql5.7使用ProxySQL實現讀寫分離

 

netstat -anlp| grep proxysql

mysql5.7使用ProxySQL實現讀寫分離

 

proxysql --version

mysql5.7使用ProxySQL實現讀寫分離

 

5.連接管理端口

6032是proxysql的管理端口號6033是對外服務的端口,用戶名密碼都是admin

登錄命令

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

show databases;

mysql5.7使用ProxySQL實現讀寫分離

 

6.四個庫的說明

main:內存配置數據庫,即memory,表里存放后端db實例 用戶驗證 路由規則等信息,該庫信息如 下

 

mysql5.7使用ProxySQL實現讀寫分離

 

其中主要表

mysql_servers:后端可以連接mysql的服務器列表

mysql_users:后端數據庫賬戶和監控賬戶

mysql_query_rules: query路由到后端不同服務器的規則列表

disk庫:持久化磁盤的配置

stats庫:統計信息的匯總

monitor庫:一些監控收集的信息,包括數據庫的健康狀態等

 

7.在主庫上配置監控賬戶和對外訪問賬戶

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;

主庫的賬戶會被同步到另外兩個從庫上,如果屏蔽了則需要分別到從庫上創建上面兩個賬戶

8.Proxysql的多層配置系統

proxysql有一套完整的配置系統 ,方便dba對線上操作,整套配置系統分為三層,頂層為runtime,中間層為memory,底層也就是持久層為disk 和config file,配置結構如下

 

mysql5.7使用ProxySQL實現讀寫分離

 

runtime:代表當前生效的正在使用的配置,無法直接修改這里的配置,必須從下一層load進來

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

disk 和config file:持久化信息,重啟后內存的信息會丟失,所有需要持久化

 

9. 添加主從服務器列表

使用超管用戶登錄

/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實現讀寫分離

 

查詢狀態

select *from mysql_servers;

mysql5.7使用ProxySQL實現讀寫分離

 

10. 添加監控賬戶

set mysql-monitor_username='monitor';

set mysql-monitor_password='monitor';

load mysql variables to runtime;

save mysql variables to disk;

驗證

select *from monitor.mysql_server_connect_log;

mysql5.7使用ProxySQL實現讀寫分離

 

監控正常,沒有報錯信息

11.配置主從分組信息

show create table mysql_replication_hostgroups;

mysql5.7使用ProxySQL實現讀寫分離

 

里面write_hostgroup 是寫入組編號,reader_hostgroup是讀取組編號,我們這里使用10 作為寫入組,20為讀取組編號

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實現讀寫分離

 

proxysql 會根據server的read_only的取值來將服務器進行分組, 只讀的分配到20(讀取組),不是只讀的分配到10(寫入組)

mysql5.7使用ProxySQL實現讀寫分離

 

12.配置對外訪問賬戶

對方訪問賬戶默認指定主庫,并對該用戶開啟事務持久化保護

mysql_users表中的transaction_persistent 的字段默認是0,建議在創建完用戶之后設置為1,避免發生臟讀幻讀現象,命令如下

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;

驗證登錄的服務器就是主庫(這里登錄ip就是我們安裝proxysql的服務器地址,一般建議單獨安裝一臺 ,不要和mysql集群中的機器使用一臺)

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

mysql5.7使用ProxySQL實現讀寫分離

 

注意對外端口是6033

13 配置讀寫分離策略

配置讀寫分離需要使用mysql_query_rules 表,表中的match_pattern字段就是代表設置的規則,destination_hostgroup字段代表默認指定的分組,Apply代表真正執行的應用規則。

把所有以select開頭的語句全部分配到20的讀組中,其他都分配到寫組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 測試讀寫分離

通過創建對外賬戶zsproxy連接proxysql登錄數據庫

命令如下

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

查詢一個表

select * from test.b

mysql5.7使用ProxySQL實現讀寫分離

 

在登錄管理端口 查詢監控狀態

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

select *from stats_mysql_query_digest;

 

mysql5.7使用ProxySQL實現讀寫分離

 

 

在6033端口執行插入操作

insert into b values(20);

再次查詢狀態

mysql5.7使用ProxySQL實現讀寫分離

 

 

15 調整權重

讀寫分離成功后,我們可以調整權重,讓某臺機器承受更多的讀操作,在表mysql_servers上進行設置

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

load mysql servers to runtime;

save mysql servers to disk;

 

到此讀寫分離正式配置完畢了

分享到:
標簽:mysql5 ProxySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定