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
- ProxySQL實現Mysql讀寫分離 - 部署手冊MySql
- Mycat2+Mysql一主一從實現讀寫分離配置MySql
- Mycat中介軟體實現Percona Cluster讀寫分離
- 安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(五)-- MyCat配置詳解CentOSMySql
- ProxySQL實現MySQL讀寫分離MySql
- MyCat分庫分表、讀寫分離
- docker+atlas+mysql實現讀寫分離DockerMySql
- Kubernetes 中實現 MySQL 的讀寫分離MySql
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- MyCat 讀寫分離 資料庫分庫分表 中介軟體 安裝部署,及簡單使用資料庫
- Mysql讀寫分離叢集的搭建且與MyCat進行整合MySql
- docker+mysql叢集+讀寫分離+mycat管理+垂直分庫+負載均衡DockerMySql負載
- ShardingSphere + Mysql,實現分庫分表、讀寫分離,並整合 SpringBootMySqlSpring Boot
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- springboot多資料來源配合docker部署mysql主從實現讀寫分離Spring BootDockerMySql
- mysql讀寫分離的最佳實踐MySql
- 使用ProxySQL實現MySQL Group Replication的故障轉移、讀寫分離(一)MySql
- MySQL-SpringBoot整合JPA實現資料讀寫分離MySqlSpring Boot
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- 帶貨直播系統,透過主從同步實現讀寫分離主從同步
- 【Mongo】Mongo讀寫分離的實現Go
- springboot+mybatis+druid實現mysql主從讀寫分離(五)Spring BootMyBatisUIMySql
- Docker實現Mariadb分庫分表、讀寫分離Docker
- Mycat讀寫分離、主從切換、分庫分表的操作記錄
- mysql優化之讀寫分離MySql優化
- 探究MySQL MGR的讀寫分離MySql
- MySQL 讀寫分離的好處MySql
- PostgreSQL+Pgpool實現HA讀寫分離SQL
- Sharding-JDBC基本使用,整合Springboot實現分庫分表,讀寫分離JDBCSpring Boot
- 使用proxysql 1.4.14中介軟體實現mysql 5.7.26主從的讀寫分離MySql
- 搭建Redis哨兵叢集並使用RedisTemplate實現讀寫分離Redis
- LAMP(Linux+Apache+MySQL+PHP)(四)+Discuz+Redis+Mysql-proxy讀寫分離(centos7)LAMPLinuxApacheMySqlPHPRedisCentOS
- 位元組面試:什麼是讀寫分離?讀寫分離的底層如何實現?面試
- Spring Aop實現資料庫讀寫分離Spring資料庫
- SpringBoot 專案優雅實現讀寫分離Spring Boot