博學谷 - mysql資料庫效能優化筆記05 - 讀寫分離中介軟體MaxScale
1.maxscale下載地址
https://downloads.mariadb.com/files/MaxScale
2.安裝maxscale命令
yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y
wget https://downloads.mariadb.com/MaxScale/1.4.5/centos/7/x86_64/maxscale-1.4.5-1.centos.7.x86_64.rpm
rpm -ivh maxscale-1.4.5-1.centos.7.x86_64.rpm
2.配置maxscale
建立監控使用者:
create user 'maxmon'@'%' identified by '123456';
grant replication slave,replication client on *.* to 'maxmon'@'%';
建立路由使用者:
create user 'maxrou'@'%' identified by '123456';
grant select on mysql.* to 'maxrou'@'%';
flush privileges;
配置maxscale.cnf檔案:
vi /etc/maxscale.cnf
配置server:
[server1]
type=server
#自己的伺服器地址
address=111.111.235.111
#自己的伺服器埠
port=3306
protocol=MySQLBackend
[server2]
type=server
#自己的伺服器地址
address=111.111.187.111
#自己的伺服器埠
port=3306
protocol=MySQLBackend
[MySQL Monitor]
type=monitor
module=mysqlmon
#改成上述配置的伺服器
servers=server1,server2
#主資料庫的監聽使用者的賬號
user=maxmon
#主資料庫監聽使用者的密碼
passwd=123456
monitor_interval=10000
#因為配置了Read-Write Service模組,所以該模組的servers、user、passwd清空
#因為假如去掉該段程式碼的話,會導致啟動maxscale失敗
[Read-Only Service]
type=service
router=readconnroute
servers=
user=
passwd=
router_options=slave
# ReadWriteSplit documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadWriteSplit.md
[Read-Write Service]
type=service
router=readwritesplit
#伺服器的名稱
servers=server1,server2
#主資料庫路由使用者的賬號
user=maxrou
#主資料庫路由使用者的密碼
passwd=123456
max_slave_connections=100%
3.啟動 maxscale
執行命令:
maxscale --config=/etc/maxscale.cnf
檢視maxscale啟動狀態:
命令:
netstat -ntelp
結果:
[root@iZbp1e9mxelwe7pwimpw8sZ ~]# netstat -ntelp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:4006 0.0.0.0:* LISTEN 0 504699 21342/maxscale
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 997 22771 1153/mysqld
tcp 0 0 0.0.0.0:6603 0.0.0.0:* LISTEN 0 504700 21342/maxscale
tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 0 26262 1573/sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 26264 1573/sshd
tcp6 0 0 :::80 :::* LISTEN 0 24734 1483/docker-proxy
4006 是 Read-Write Listener 使用的埠,用於連線 MaxScale
6603 是 MaxAdmin Listener 使用的埠,用於 MaxScale 管理器
登 錄 MaxScale 管 理 器 , 查 看 一 下 數 據 庫 連 接 狀 態 , 默 認 的 用 戶 名 和 密 碼 是
admin/mariadb
登入maxscale檢視狀態:
maxadmin --user=admin --password=mariadb
list servers
[root@iZbp1e9mxelwe7pwimpw8sZ ~]# maxadmin --user=admin --password=mariadb
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 111.111.235.111 | 3306 | 1 | Master, Running
server2 | 111.111.187.111 | 3306 | 1 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale>
4.測試maxscale
在主資料庫master建立測試使用者:
create user 'rtest'@'%' identified by '111111';
grant ALL PRIVILEGES on *.* to 'rtest'@'%';
使用mysql客戶端到連線maxscale:
mysql -urtest -p'111111' -h'192.168.33.11' -P4006
測試命令:
select @@hostname;
start transaction;
select @@hostname;
rollback;
select @@hostname;
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| ljy |
+------------+
1 row in set (0.00 sec)
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@hostname;
+-------------------------+
| @@hostname |
+-------------------------+
| iZbp1e9mxelwe7pwimpw8sZ |
+-------------------------+
1 row in set (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| ljy |
+------------+
1 row in set (0.00 sec)
mysql>
測試步驟及結果解釋:
第一次select @@hostname;使用的是salve進行讀操作,開啟事務後start transaction;使用的是master進行寫操作,事務回滾後rollback;使用的是salve進行讀操作.
5.文章參考連結
a. https://www.boxuegu.com
b. https://downloads.mariadb.com/files/MaxScale
相關文章
- MySQL cetus 中介軟體 讀寫分離MySql
- 資料庫中介軟體sharding-jdbc實現讀寫分離資料庫JDBC
- Mycat中介軟體實現Mysql主從讀寫分離MySql
- MySQL中介軟體之ProxySQL(3):初試讀寫分離MySql
- MyCat 讀寫分離 資料庫分庫分表 中介軟體 安裝部署,及簡單使用資料庫
- mysql優化之讀寫分離MySql優化
- 資料庫讀寫分離資料庫
- Mycat中介軟體實現Percona Cluster讀寫分離
- 大資料資料庫讀寫分離分庫分表大資料資料庫
- 淺談高效能資料庫叢集——讀寫分離資料庫
- 使用proxysql 1.4.14中介軟體實現mysql 5.7.26主從的讀寫分離MySql
- MySQL 中讀寫分離資料延遲MySql
- 資料庫讀寫分離Master-Slave資料庫AST
- 博學谷 - CSS筆記05 - CSS 的複合選擇器CSS筆記
- Sharding-Jdbc學習筆記一之讀寫分離mysql安裝篇JDBC筆記MySql
- 資料庫治理利器:動態讀寫分離資料庫
- Spring Aop實現資料庫讀寫分離Spring資料庫
- 深度:微服務化的資料庫設計與讀寫分離微服務資料庫
- golang saas框架,資料庫級別隔離、讀寫分離Golang框架資料庫
- Oceanbase讀寫分離方案探索與優化優化
- Java程式設計師乾貨學習筆記—Spring結合MyBatis實現資料庫讀寫分離Java程式設計師筆記SpringMyBatis資料庫
- 資料讀寫壓力大,讀寫分離
- 提高效能,MySQL 讀寫分離環境搭建MySql
- 分散式資料庫中介軟體 MyCat | 分庫分表實踐分散式資料庫
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- 【Tony 老師】基於 Maxscale 實現讀寫分離和負載均衡負載
- MySQL資料庫學習筆記MySql資料庫筆記
- MySQL-SpringBoot整合JPA實現資料讀寫分離MySqlSpring Boot
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- Django學習筆記(15)——中介軟體Django筆記
- MyCat分庫分表、讀寫分離
- 提高效能,MySQL 讀寫分離環境搭建(二)MySql
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- 資料庫的讀寫分離與負載均衡策略資料庫負載
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- ShardingSphere + Mysql,實現分庫分表、讀寫分離,並整合 SpringBootMySqlSpring Boot
- 讀小程式效能優優化實踐-筆記優化筆記
- MySQL從庫卡主了--讀寫分離也不能亂讀MySql