分散式架構高可用架構篇_08_MyCat在MySQL主從複製基礎上實現讀寫分離
一、環境
作業系統:CentOS-6.6-x86_64-bin-DVD1.iso JDK 版本:jdk1.7.0_45
MyCat 版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz
MyCat 節點 IP:192.168.1.203 主機名:edu-mycat-01
MySQL 版本:mysql-5.6.22.tar.gz
主節點 IP:192.168.1.205 主機名:edu-mysql-01
從節點 IP:192.168.1.206 主機名:edu-mysql-02
MyCat 的讀寫分離是基於後端 MySQL 叢集的主從同步來實現的,而 MyCat 提供語句的分發
功能。MyCat1.4 開始支援 MySQL 主從複製狀態繫結的讀寫分離機制,讓讀更加安全可靠。
三、MyCat的安裝
四、MyCat 的安裝
1、設定 MyCat 的主機名和 IP 與主機名的對映
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=edu-mycat-01
# vi /etc/hosts
127.0.0.1 edu-mycat-01
192.168.1.203 edu-mycat-01
192.168.1.205 edu-mysql-01
192.168.1.206 edu-mysql-02
2、因為 MyCat 是用 Java 開發的,因此 MyCat 執行需要安裝 JDK(準確來說是 JRE 就夠了), 並且需要 JDK1.7 或以上版本
3、建立 mycat 使用者並設定密碼
# useradd mycat
# passwd mycat
4、上傳安裝包 Mycat-server-1.4-release-20151019230038-linux.tar.gz 到 MyCat 伺服器中的 /home/mycat目錄,
並解壓並移動到 /usr/local/mycat目錄
[[email protected] ~]# su mycat
[[email protected] yxq]$ cd /home/mycat
[[email protected] ~]$
[[email protected] ~]$ ls
Mycat-server-1.4-release-20151019230038-linux.tar.gz
[mycat@edu-mycat-01 ~]# mv /home/mycat/mycat/ /usr/local/
[[email protected] mycat]# ll
total 24
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 bin
drwxrwxr-x. 2 mycat mycat 4096 Jun 16 2015 catlet
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 conf
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 lib
drwxrwxr-x. 2 mycat mycat 4096 Jun 16 2015 logs
-rwxrwxr-x. 1 mycat mycat 217 Oct 19 2015 version.txt
5、設定 MyCat 的環境變數
# vi /etc/profile## mycat env
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin
# source /etc/profile
五、配置 MyCat
1、在配置 MyCat 前,請確認 MySQL 的主從複製安裝配置已完成並正常執行。MySQL 主從數據的同步在 MySQL 中配置,MyCat 不負責資料同步的問題。
補充:
(1) MySQL 主從複製配置中,如果涉及到函式或儲存過程的同步複製,需要在/etc/my.cnf 中的[mysqld]段中增加配置log_bin_trust_function_creators=true 或在客戶端中設定set globallog_bin_trust_function_creators = 1;
(2) 如果要做讀寫分離下的主從切換,那麼從節點也有可能會變為寫節點,因此從節點就不 能設定為只讀 read_only=1 。
(3) Linux 版本的 MySQL,需要設定為 MySQL 大小寫不敏感,否則可能會發生找不到表的問 題。可在/etc/my.cnf 的[mysqld]段中增加lower_case_table_names=1 。
2、配置 MyCat 的 schema.xml
schema.xml 是 MyCat 最重要的配置檔案之一,用於設定 MyCat 的邏輯庫、表、資料節點、
dataHost 等內容,
[[email protected] conf]$ cd /usr/local/mycat/conf/
[[email protected] conf]$ vi schema.xml
MyCat1.4開始支援MySQL主從複製狀態繫結的讀寫分離機制,讓讀更加安全可靠,配置如下:
MyCat1.4開始支援MySQL主從複製狀態繫結的讀寫分離機制,證讀更加安全可靠,配置如下:
MyCat心跳檢查語句配置為show slave status,dataHost上定義了兩個新屬性,switchType=”2”與slaveThreshold=”100”,此時意味著開啟MySQL主從複製狀態繫結的讀寫分離與切換機制,
MyCat心跳機制通過檢測
show slave status中”Seconds_Behind_Master”,”Slave_IO_Running”,’”Slave_SQL_Running”三個欄位來確定當前主從同步的狀態以及”Seconds_Behind_Master”主從複製時延,當Seconds_Behind_Master大於slaveThreshold時,讀寫分離篩選器會過濾掉此Slave機器,防止讀到很久之前的舊資料,而當主節點宕機後,切換邏輯會檢查Slae上的Seconds_Behid_Master是否為0,為0時表示主從同步,可以安全切換,否則不會切換。
3、配置server.xml
Server.xml主要用於設定系統變數、管理使用者、設定使用者許可權等
[[email protected] conf]# vi server.xml
[[email protected] conf]# service iptables restart
3、修改log日誌級別為debug,以便通過日誌確認基於MyCat的MySQL資料庫叢集讀寫分離的資料操作狀態(可以在正式上生產前改成info級別)
[[email protected] conf]$ vi /usr/local/mycat/conf/log4j.xml
3、啟動MyCat
[[email protected] conf]$ cd /usr/local/mycat/bin/
(1)控制檯啟動,這種啟動方式在控制檯關閉後,MyCat服務也將關閉,適合除錯使用:
[[email protected] bin]$ ./mycat console
(1)可以採用以下後臺的方式啟動:
[[email protected] bin]$ ./mycat start
(對應的,重啟:/mycat restart,關閉:./mycat stop)
7、MyCat連線測試
(1)、如果本地Windows安裝有MySQL,可以使用已有的mysql客戶端遠端操作MyCat
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
mysql -uuser2 -pyixq.2 -h192.168.1.203 -P8066
mysql> show databases;
mysql> use rc_schema2;
mysql> show tables;
(1)、如果為了方便,需要在MyCat主機上對MyCat進行操作(把MyCat當是本地MySQL來操作),可以在MyCat節點主機上安裝MySQL客戶端:
[[email protected] bin]$ su root
Password:
[[email protected] bin]# yum install mysql
使用安裝好的mysql客戶端登入MyCat
[[email protected] mycat]# mysql -u user2 -pyixq.2 -h192.168.1.203 -P 8066
如果使用MyCat主機上安裝了MySQL客戶端進行查詢出理亂碼,則需要設定客戶端的編碼在/etc/my.cnf中的[client]中設定客戶端的預設編碼為utf8
[[email protected] bin]# vi /etc/my.cnf
[client]
default-character-set=utf8
(1)使用第三方MySQL管理客戶端連線MyCat測試(navicat支援,MySQS-Front相容性不太好),以navicat為例:
8、讀寫分離測試
(1)監聽MyCat日誌
[[email protected] ~] cd /usr/local/mycat/logs
[[email protected] logs] tail -f myat.log
(1)讀測試
[[email protected] ~]$ mysql -uuser2 -pyixq.2 -h192.168.1.203 -P8066
mysql> show databases;
mysql> use edu_schema2;
mysql> show tables;
mysql> select * from edu_user;
執行上面的查詢語句,此時對應的MyCat日誌資訊如下:
多次執行select * from edu_user語句,MyCat打印出來的日誌資訊顯示讀操作請求都是路由到Slave節點(192.168.1.206)
(1)寫測試
對應的日誌
多次執行以上插入語句,發現新增資料都是從Master節點(192.168.1.205)插進入的,並且Slave節點通過Binlog同步了Master節點中的資料
相關推薦
分散式架構高可用架構篇_08_MyCat在MySQL主從複製基礎上實現讀寫分離
一、環境作業系統:CentOS-6.6-x86_64-bin-DVD1.iso JDK 版本:jdk1.7.0_45MyCat 版本:Mycat-server-1.4-release-20151019230038-linux.tar.gzMyCat 節點 IP:192.168
MySQL主從復制 + Mycat實現讀寫分離
date windows repl ron 信息 決定 不用 ati 刪掉 說明:兩臺MySQL服務器都是使用CentOS6.5系統,MySQL版本為mysql-5.7.17 MySQL一主一被實現主從復制 註意:寫包括insert,delete,update 操作;讀只有
主題:分散式架構高可用架構_Keepalived+Nginx實現高可用Web負載均衡
一、場景需求 二、Keepalived 簡要介紹 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,Keepalived 可以用來防止伺服器單點故障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。 Keepalived 以 VRRP
MHA +maxscale 實現讀寫分離高可用架構實戰
MHA 相關原理 http://mp.blog.csdn.net/postedit/79183726 MHA http://mp.blog.csdn.net/postedit/79183743 最佳實戰 MySQL讀寫分離原理相關知識體系 http://blog.cs
Redis配置主從架構,實現讀寫分離
Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面配置Redis架構,很簡單。 準備環境 vmware + rhel-server-7.0(101,102,103)+redis-3.2.0 1、在192.168.137.101安裝好redis3.
安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(三)-- 主從設定
零、寫在前面 為了嘗試新技術和業務需要,因此打算搞一套這樣的環境玩兒一下 作業系統及資料庫的安裝請見前兩篇一、理論依據 不再贅述我的硬體規劃等細節 這次僅用到兩臺虛擬機器,一主一
Redis 高可用:Redis Sentinel 主從複製故障轉移
Redis Sentinel 為 Redis 提供了高可用,可對複製叢集中進行監控、通知、故障轉移。 伺服器名稱:Centos222 , ip :192.168.1.222 ,主從角色:master 伺服器名稱:Centos224 , ip :192.168.1.22
安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(二)-- 資料庫安裝篇
零、寫在前面 為了嘗試新技術和業務需要,因此打算搞一套這樣的環境玩兒一下 伺服器的安裝請見上一篇一、硬體規劃 我用的是自己的本機(8核、16G),劃分出三臺虛擬機器(一主兩從--MyS
安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(一)-- 作業系統安裝篇
零、寫在前面 為了嘗試新技術和業務需要,因此打算搞一套這樣的環境玩兒一下 我的虛擬機器環境是VMWare12 這是第一篇,Centos7系統的安裝篇一、硬體規劃 我用的是自己的本
MySQL 之 MHA + ProxySQL + keepalived 實現讀寫分離,高可用(一)
don replica ifconfig soft 似的 恢復 select 8.0 ext 準備服務器: docker network create --subnet=192.168.0.0/16 staticnetdocker run -d --privileg
MySQL 之 MHA + ProxySQL + keepalived 實現讀寫分離,高可用(二)
ProxySQL安裝 yum/rpm安裝 在github或官網上可以下載rpm包,wiki的Getting start章節有詳細介紹。 cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxyS
分散式快取技術redis學習系列(九)——Redis主從實現讀寫分離
前言 大家在工作中可能會遇到這樣的需求,即Redis讀寫分離,目的是為了壓力分散化。下面我將為大家介紹藉助AWS的ELB實現讀寫分離,以寫主讀從為例。 實現 引用庫檔案 <!-- redis客戶端 --> <dependency&g
安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(四)-- MyCat讀寫分離
零、說在前面 先吐個槽,這點東西折騰了我四五天,最後還是一條告警拯救了我,下面進入正文 看了幾個MySQL的讀寫分離的中介軟體,貌似這個是比較流行的一個,雖然我不是BAT的粉絲,但是有好用的
Mysql主從配置,實現讀寫分離
windows安裝 建議 xid 分布式 唯一標識 -1 在線下載 命令 進行 大型網站為了軟解大量的並發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連接操作,數據庫必然會崩潰,
MySQL主從復制技術與讀寫分離技術amoeba應用
buffer chan lns -a query rep 下載 高可用性 tab MySQL主從復制技術與讀寫分離技術amoeba應用 前言:眼下在搭建一個人才站點,估計流量會非常大,須要用到分布式數據庫技術,MySQL的主從復制+讀寫分
使用Spring實現讀寫分離( MySQL實現主從復制)
sign eve replicat win [] 做了 用戶名 指定 ati 1. 背景 我們一般應用對數據庫而言都是“讀多寫少”,也就說對數據庫讀取數據的壓力比較大,有一個思路就是說采用數據庫集群的方案, 其中一個是主庫,負責寫入數據,我們稱之為:寫庫; 其它都是從庫,
MySQL主從(MySQL proxy Lua讀寫分離設置,一主多從同步配置,分庫分表方案)
否則 count user username 2個 ons 基礎 zxvf 路徑 Mysql Proxy Lua讀寫分離設置一.讀寫分離說明讀寫分離(Read/Write Splitting),基本的原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DE
MySQL第六天(主從同步,數據讀寫分離)
dsfaday05一、數據備份與恢復-增量備份和增量恢復a.binlog日誌介紹(二進制文件):使用Mysql數據庫服務日誌文件類型的一種。記錄除查詢之外的sql命令。默認沒啟用 查詢的sql包括:select desc show 不是查詢的命令:insert update delete create dr
生產環境實踐Mysql5.7主從+Atlas實現讀寫分離
pro c-c creators 日誌 可執行 公眾 var timeout 錯誤信息 Mysql主從搭建 主從復制可以使MySQL數據庫主服務器的主數據庫,復制到一個或多個MySQL從服務器從數據庫,默認情況下,復制異步; 根據配置,可以復制數據庫中的所有數據庫,選定的
mysql-配置主從數據庫,實現讀寫分離
參考 image 增加 mysql- pan 位置 span 主從同步 原則 主從分離的原則:所有的寫操作在主數據庫中進行,因為主從分離的原理是涉及到同步數據,那就可能會出現延遲或者其他問題,就可能會出現臟數據。 所以,在從庫中進行的讀操作也必須是有一定容忍性的數據,例如日