CentOS7系統下使用Mycat實現mysql讀寫分離部署
MyCat是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作是一個資料庫代理,用MySQL客戶端工具和命令列訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通訊,也可以用JDBC協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將一個大表水平分割為N個小表,儲存在後端MySQL伺服器裡或者其他資料庫裡。
MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支援MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支援MongoDB這種新型NoSQL方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在MyCat裡,都是一個傳統的資料庫表,支援標準的SQL語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
具體介紹請參考:
OS: CentOS Linux release 7.9.2009 (Core)
序號 |
主機 |
IP |
部署內容 |
備註 |
1 |
mycat1 |
192.168.56.111 |
mycat 節點 |
|
6 |
Node1 |
192.168.56.109 |
搭建主備同步,並建立1個database(jumpserver) |
主庫 |
7 |
Node2 |
192.168.56.110 |
從主庫同步資訊 |
備庫 |
關閉系統SELINUX 功能:
執行命令如下:
sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config
或vi 編輯/etc/selinux/config 檔案,更改SELINUX=disabled
更改後,執行命令:reboot 重啟系統生效
重啟後,執行:getenforce 檢查selinux狀態是否為Disabled狀態
*mysql 資料庫伺服器關閉SELINUX
* 執行在Linux下的mysql,需要配置 lower_case_table_names=1 不區分大小寫
新增到mysql配置檔案中 /etc/my.cnf
配置完成後,重啟mysql資料庫生效
主庫配置
# 編輯mysql配置檔案,在[mysqld]下加入以下引數
vim /etc/my.cnf
enforce_gtid_consistency=ON
gtid_mode=ON
log_bin=mysql-bin
log_bin_index=mysql-bin.index
binlog_format=row
relay_log=reay-log
relay_log_index=relay-log.index
server-id=1
# 重啟mysql服務
systemctl restart mysqld
# 備份mysql
mysqldump --all-databases --single-transaction --triggers --routines --set-gtid-purged=OFF --host=127.0.0.1 --port=3306 --user=root --password > backup.sql
# 建立同步帳號
create user 'repl'@'192.168.56.110' identified by 'Musen123!@#';
grant replication slave on *.* to 'repl'@'192.168.56.110';
flush privileges;
備庫配置
# 編輯mysql配置檔案,在[mysqld]下加入以下引數
vim /etc/my.cnf
enforce_gtid_consistency=ON
gtid_mode=ON
log_bin=mysql-bin
log_bin_index=mysql-bin.index
log_slave_updates=ON
server-id=2
binlog_format=row
relay_log=reay-log
relay_log_index=relay-log.index
# 重啟mysql服務
systemctl restart mysqld
# 恢復mysql資料庫
主庫備份檔案backup.sql傳至備庫/tmp目錄下
登入mysql資料庫後,執行如下指令
source /tmp/backup.sql;
# 連線主庫進行同步
change master to master_host='192.168.56.109', master_user='repl',master_password='Musen123!@#',master_port=3306,master_auto_position=1;
start slave;
# 確認主備庫同步狀態
show slave status \G;
建立資料庫
在主庫上執行建立資料庫指令碼
create database jumpserver default charset 'utf8';
執行完成後,在備庫上查詢是否有jumpserver資料庫
show databases;
安裝
安裝jdk1.8可以直接使用yum install java-1.8.0-openjdk.x86_64 -y 進行安裝。
以下部署,採用手動部署jdk1.8,去官網下載jdk1.8的程式包,下載後檔案為jdk-8u291-linux-x64.tar.gz
# 上傳jdk1.8安裝包至mycat伺服器
# 上傳到/usr/local 目錄下,並進行解壓
tar xzf jdk-8u291-linux-x64.tar.gz
# 配置系統環境變數
vi /etc/profile # 編輯檔案,在末尾處加入以下內容
export JAVA_HOME=/usr/local/jdk1.8.0_291
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# 儲存並退出
# 使配置生效
source /etc/profile
# 驗證版本
java -version
安裝
# 建立軟體存放目錄
mkdir /opt/app
# 下載Mycat
cd /opt/app
wget
# 解壓縮
tar xzf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
# 設定Mycat環境變數
echo 'export MYCAT_HOME=/opt/app/mycat' >> /etc/profile
source /etc/profile
配置
# 配置資料來源
/opt/app/mycat/conf/schema.xml 中定義了後端資料來源、邏輯庫/表等。
dataHost :Mycat後端連線的資料庫(物理庫,真實的資料庫),即後端資料來源,可以是mysql、oracle等。
schema :邏輯庫,可以看做是一個或多個後端資料庫叢集構成的邏輯庫。
dataNode :資料分片,邏輯庫的構成,即一個邏輯庫可能分為多個分片,資料分片最終會落在一個或多個物理庫。
#以下配置是配置讀寫分離的配置截圖
注意balance屬性 負載均衡型別,目前的取值有3 種:
balance="0",
不開啟讀寫分離機制,所有讀操作都傳送到當前可用的writeHost 上。
balance="1",全部的readHost 與stand by writeHost 參與select
語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且M1 與M2 互為主備),正常情況下,M2,S1,S2 都參與select語句的負載均衡。
balance="2"
,所有讀操作都隨機的在writeHost、readhost 上分發。
balance="3",所有讀請求隨機的分發到wiriterHost 對應的readhost 執行,writerHost 不負擔讀壓
力,注意balance=3 只在1.4 及其以後版本有,1.3 沒有。
# 配置mycat使用者
/opt/app/mycat/conf/server.xml 中定義mycat的系統配置和使用者等。可以透過xml新增和修改mycat使用者資訊。
以下為schema:test新增了兩個使用者root和user,應用使用這兩個賬號連線mycat進行資料的操作,如果不用user使用者,可以刪除裡面的配置。
# mycat 啟動
/opt/app/mycat/bin/mycat start
# mycat 執行埠檢視
netstat -antup | grep 8066
# mycat 管理埠檢視
netstat -antup | grep 9066
# 使用mysql客戶端連線mycat 驗證
mysql -u root -h 192.168.56.111 -P 8066 -p
# mycat 管理命令
管理命令需要連線mycat的9066預設埠
mysql -u root -h 192.168.56.111 -P 9066 -p
配置防火牆
新增防火牆過濾規則,允許8066與9066透過
firewall-cmd --permanent --zone=public --add-port=8066/tcp
firewall-cmd --permanent --zone=public --add-port=9066/tcp
firewall-cmd --reload
-----------END-----------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000068/viewspace-2777483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mycat實現mysql的負載均衡讀寫分離MySql負載
- Mycat中介軟體實現Mysql主從讀寫分離MySql
- mycat結合MySQL的雙主實現讀寫分離MySql
- Mycat讀寫分離配置實踐
- ProxySQL實現Mysql讀寫分離 - 部署手冊MySql
- haproxy+keepalived+mycat+mysql (讀寫分離)MySql
- MySQL + Atlas --- 部署讀寫分離MySql
- MyCat分庫分表、讀寫分離
- Mycat 讀寫分離+分庫分表
- 安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(五)-- MyCat配置詳解CentOSMySql
- ProxySQL實現MySQL讀寫分離MySql
- Amoeba 實現 MySQL 讀寫分離MySql
- Mycat中介軟體實現Percona Cluster讀寫分離
- 【Mycat】Mycat讀寫分離與負載均衡2負載
- mysql讀寫分離Amoeba的部署MySql
- Amoeba+Mysql 實現讀寫分離MySql
- mysql-proxy實現讀寫分離MySql
- docker+atlas+mysql實現讀寫分離DockerMySql
- MysqL讀寫分離的實現-Mysql proxy中介軟體的使用MySql
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- MyCat 讀寫分離 資料庫分庫分表 中介軟體 安裝部署,及簡單使用資料庫
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- MySQL 中介軟體Atlas 實現讀寫分離MySql
- Mysql讀寫分離方案-MySQL Proxy環境部署記錄MySql
- Amoeba實現讀寫分離
- Mysql讀寫分離叢集的搭建且與MyCat進行整合MySql
- docker+mysql叢集+讀寫分離+mycat管理+垂直分庫+負載均衡DockerMySql負載
- Mysql讀寫分離方案-Amoeba環境部署記錄MySql
- Spring配置RoutingDataSource實現mysql讀寫分離SpringMySql
- mysql proxy 安裝及配置實現讀寫分離MySql
- Kubernetes 中實現 MySQL 的讀寫分離MySql
- MySQL Proxy 實現 MySQL 讀寫分離提高併發負載MySql負載
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- CQRS如何實現讀寫分離
- mysql讀寫分離的最佳實踐MySql
- MySQL Amoeba讀寫分離MySql
- Amoeba for mysql讀寫分離MySql
- MySQL讀寫分離AtlasMySql