久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

利用amoeba實現mysql數據庫讀寫分離的案例

143次閱讀
沒有評論

共計 2811 個字符,預計需要花費 8 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下利用 amoeba 實現 mysql 數據庫讀寫分離的案例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

關于 mysql 的讀寫分離架構有很多,百度的話幾乎都是用 mysql_proxy 實現的。由于 proxy 是基于 lua 腳本語言實現的,所以網上不少網友表示 proxy 效率不高,也不穩定,不建議在生產環境使用;

amoeba 是阿里開發的一款數據庫讀寫分離的項目 (讀寫分離只是它的一個小功能),由于是基于 java 編寫的,所以運行環境需要安裝 jdk;

前期準備工作:

1. 兩個數據庫,一主一從,主從同步;

master:172.22.10.237:3306;主庫負責寫入操作;

slave: 10.4.66.58:3306;從庫負責讀取操作;

amoeba: 172.22.10.237:8066 ; 我把 amoeba 安裝到了主庫所在的服務器,當然,你也可以安裝到第三臺服務器上;

所有服務器操作系統均為 centos7;

2. 在 amoeba 所在的服務器上配置安裝 jdk;

我安裝的是 jdk1.8;

路徑是:JAVA_HOME=/usr/local/java/jdk1.8.0_131

以上務必自己點搭建、配置好,主從正常工作,添加 jdk 環境變量:/etc/profile ;

安裝 amoeba 的方式有很多,這里就不在安裝上面費口舌了,我下載了 amoeba-mysql-3.0.5-RC-distribution 的安裝包,直接解壓即可使用;

解壓目錄:/usr/local/amoeba/

利用 amoeba 實現 mysql 數據庫讀寫分離的案例

很明顯 conf 里是配置文件,bin 里是啟動程序;

剛才說到 amoeba 的功能可不止讀寫分離,但如果只用讀寫分離功能的話只需要配置這幾個個文件即可:conf/dbServers.xml conf/amoeba.xml 和 bin/launcher;

conf/dbServers.xml:

 ` property name= port 3306 /property 
 # 設置 Amoeba 要連接的 mysql 數據庫的端口,默認是 3306
  property name= schema testdb /property 
 # 設置缺省的數據庫,當連接 amoeba 時,操作表必須顯式的指定數據庫名,即采用 dbname.tablename 的方式,不支持  use dbname 指定缺省庫,因為操作會調度到各個后端 dbserver
  property name= user test1 /property 
 # 設置 amoeba 連接后端數據庫服務器的賬號和密碼,因此需要在所有后端數據庫上創建該用戶,并授權 amoeba 服務器可連接
  property name= password 111111 /property 
  property name= maxActive 500 /property #最大連接數,默認 500
  property name= maxIdle 500 /property #最大空閑連接數
  property name= minIdle 1 /property #最新空閑連接數
  dbServer name= writedb  parent= abstractServer #設置一個后端可寫的數據庫,這里定義為 writedb,這個名字可以任意命名,后面還會用到
  property name= ipAddress 172.22.10.237 /property  # 設置后端可寫 dbserver 的 ip
  dbServer name= slave01  parent= abstractServer #設置后端可讀數據庫
  property name= ipAddress 10.4.66.58 /property 
  dbServer name= myslave  virtual= true #設置定義一個虛擬的 dbserver,實際上相當于一個 dbserver 組,這里將可讀的數據庫 ip 統一放到一個組中,將這個組的名字命名為 myslave
  property name= loadbalance 1 /property #選擇調度算法,1 表示復制均衡,2 表示權重,3 表示 HA,  這里選擇 1
  property name= poolNames slave01 /property #myslave 組成員 `

conf/amoeba.xml:

property name= port 8066 /property 
 # 設置 amoeba 監聽的端口,默認是 8066
  property name= ipAddress 127.0.0.1 /property  
 # 配置監聽的接口,如果不設置,默認監聽所以的 IP
 #  提供客戶端連接 amoeba 時需要使用這里設定的賬號  (這里的賬號密碼和 amoeba 連接后端數據庫服務器的密碼無關)
  property name= user root /property 
  property name= password 123456 /property 
  property name= defaultPool myslave /property 
 # 設置 amoeba 默認的池,這里設置為 writedb
  property name= writePool master /property 
 # 這兩個選項默認是注銷掉的,需要取消注釋,這里用來指定前面定義好的倆個讀寫池
  property name= readPool slave01 /property

bin/launcher :

 # 啟動腳本,需要配置 jdk 環境變量; # 在注釋后的第一行添加: JAVA_HOME=/usr/local/java/jdk1.8.0_131

launcher 是啟動腳本,如果不配置 JAVA_HOME 的話,即便你在 /etc/profile 中配置了環境變量也可能會報錯:沒有配置 jdk 環境變量;

還有一個配置文件:jvm.properties

 # 占用內存配置文件
 # -Xss 參數有最小值要求,必須大于 228 才能啟動 JVM
 # 修改: JVM_OPTIONS= -server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m

有經驗的運維都知道,凡是和 jdk 沾上邊的,基本都會和內存的調優有關系,amoeba 也不例外;

現在可以啟動了:

利用 amoeba 實現 mysql 數據庫讀寫分離的案例

啟動后就可以看到本機的 8066 端口:

利用 amoeba 實現 mysql 數據庫讀寫分離的案例

這時,你只需要通過本機 ip 的 8066 端口和你配置文件中設置的賬號密碼來連接數據庫就行了,寫入的數據都會到 master 里,讀取的數據都會從 slave 中讀取;

測試:

關閉 master 數據庫,依然可以讀取:執行 select 查看命令;

或者

關閉 slave 數據庫,依然可以寫入:執行 update、inster 命令;

看完了這篇文章,相信你對“利用 amoeba 實現 mysql 數據庫讀寫分離的案例”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2811字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 黔西| 屯留县| 全南县| 岚皋县| 彭山县| 聂荣县| 咸阳市| 类乌齐县| 玉门市| 正宁县| 哈尔滨市| 平湖市| 花垣县| 株洲市| 灯塔市| 鄯善县| 资溪县| 基隆市| 隆昌县| 大关县| 屯昌县| 犍为县| 富民县| 霸州市| 临颍县| 宁蒗| 大庆市| 萨嘎县| 铁岭县| 石楼县| 玉环县| 襄汾县| 新巴尔虎右旗| 阳江市| 绵竹市| 高要市| 玉环县| 通渭县| 林甸县| 盐池县| 梁山县|