1.資料庫主從配置
1.1 資料庫掛載原理
1.1.1 檢查主庫的狀態

1.1.2 開啟資料庫二進制檔案
修改主庫核心組態檔 my.cnf
vim /etc/my.cnf

1.1.3 重啟mysql資料庫
說明:當修改好my.cnf檔案之后,需要重啟資料庫,檢查二進制日志檔案是否存在.

1.1.4 檢查主庫狀態

1.1.5 修改從庫二進制檔案

修改之后重啟mysql資料庫
命令:

檢查從庫狀態:

1.2 實作主從的掛載
1.2.1 掛載分析
說明: 從庫掛載主庫 主庫IP地址/主庫埠號/登錄用戶名/登錄的密碼/二進制日志檔案/讀取位置.
1.2.2 實作主從掛載
/*我是從庫資訊 130*/
SHOW MASTER STATUS;
/*實作主從的掛載*/
CHANGE MASTER TO MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245
/*啟動主從服務*/
START SLAVE
/*檢查主從的狀態*/
SHOW SLAVE STATUS
/*如果報錯 則重新配置*/
STOP SLAVE
/*重新搭建主從將上述命令重新執行一遍*/
1.2.3 主從同步測驗
修改主庫中的資料,檢查從庫資料是否同步即可

1.3 Mycat介紹


1.4 實作資料庫讀寫分離機制
1.4.1 實作原理圖

1.4.2上傳 mycat服務

1.4.3 編輯組態檔-server.xml
說明: 用戶與代理資料庫的鏈接通過server.xml檔案進行配置. IP/PORT/USER/PASSWORD
埠號配置:
<property name="serverPort">8066</property>
<!--用戶標簽-->
<user name="root">
<property name="password">root</property>
<!--與schema.xml中的配置相同 注意資料庫的大小寫-->
<property name="schemas">jtdb</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">jtdb</property>
<property name="readOnly">true</property>
</user>
1.4.4 編輯schema組態檔
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name屬性是自定義的 dataNode表示資料庫的節點資訊 jtdb表示邏輯庫-->
<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>
<!--定義節點名稱/節點主機/資料名稱-->
<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
<!--引數介紹 UTF-8 中文報錯-->
<!--balance 0表示所有的讀操作都會發往writeHost主機 -->
<!--1表示所有的讀操作發往readHost和閑置的主節點中-->
<!--writeType=0 所有的寫操作都發往第一個writeHost主機-->
<!--writeType=1 所有的寫操作隨機發往writeHost中-->
<!--dbType 表示資料庫型別 mysql/oracle-->
<!--dbDriver="native" 固定引數 不變-->
<!--switchType=-1 表示不自動切換, 主機宕機后不會自動切換從節點-->
<!--switchType=1 表示會自動切換(默認值)如果第一個主節點宕機后,Mycat會進行3次心跳檢測,如果3次都沒有回應,則會自動切換到第二個主節點-->
<!--并且會更新/conf/dnindex.properties檔案的主節點資訊 localhost1=0 表示第一個節點.該檔案不要隨意修改否則會出現大問題-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select 1</heartbeat>
<!--配置第一臺主機主要進行寫庫操作,在默認的條件下Mycat主要操作第一臺主機在第一臺主機中已經實作了讀寫分離.因為默認寫操作會發往137的資料庫.讀的操作默認發往141.如果從節點比較忙,則主節點分擔部分壓力.
-->
<writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
<!--讀資料庫1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--讀資料庫2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
<!--定義第二臺主機 由于資料庫內部已經實作了雙機熱備.-->
<!--Mycat實作高可用.當第一個主機137宕機后.mycat會自動發出心跳檢測.檢測3次.-->
<!--如果主機137沒有給Mycat回應則判斷主機死亡.則回啟東第二臺主機繼續為用戶提供服務.-->
<!--如果137主機恢復之后則處于等待狀態.如果141宕機則137再次持續為用戶提供服務.-->
<!--前提:實作雙機熱備.-->
<!--<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>-->
</dataHost>
</mycat:schema>
1.4.5 替換組態檔

1.5 啟動mycat服務
1).先啟動mycat服務器.之后檢查狀態資訊.
2).通程序式測驗是否正確


1.6 Mysql實作高可用
1.6.1 高可用說明(HA)
說明:根據規則 當服務器發生宕機現象時,可以自動的實作程度的故障的遷移稱之為高可用.
1.6.2資料庫雙主模式說明
說明:在作業中一般采用雙主模式來實作資料庫高可用. 本質上來講2臺資料庫都是主機.只是人為的進行了主從的劃分.

1.6.3 實作資料庫雙向系結.
上午配置: 由主庫129 將資料同步給從庫130
下午配置: 由從庫130 將資料同步給主庫129
1).檢查主庫的狀態

2).實作主從的搭建
/*實作主從的掛載 */
CHANGE MASTER TO MASTER_HOST="192.168.126.130",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=477
/*啟動主從服務 */
START SLAVE
SHOW SLAVE STATUS;

1.6.4 Mycat實作資料庫高可用配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name屬性是自定義的 dataNode表示資料庫的節點資訊 jtdb表示邏輯庫-->
<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>
<!--定義節點名稱/節點主機/資料名稱-->
<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
<!--引數介紹 UTF-8 中文報錯-->
<!--balance 0表示所有的讀操作都會發往writeHost主機 -->
<!--1表示所有的讀操作發往readHost和閑置的主節點中-->
<!--writeType=0 所有的寫操作都發往第一個writeHost主機-->
<!--writeType=1 所有的寫操作隨機發往writeHost中-->
<!--dbType 表示資料庫型別 mysql/oracle-->
<!--dbDriver="native" 固定引數 不變-->
<!--switchType=-1 表示不自動切換, 主機宕機后不會自動切換從節點-->
<!--switchType=1 表示會自動切換(默認值)如果第一個主節點宕機后,Mycat會進行3次心跳檢測,如果3次都沒有回應,則會自動切換到第二個主節點-->
<!--并且會更新/conf/dnindex.properties檔案的主節點資訊 localhost1=0 表示第一個節點.該檔案不要隨意修改否則會出現大問題-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select 1</heartbeat>
<!--配置第一臺主機主要進行寫庫操作,在默認的條件下Mycat主要操作第一臺主機在第一臺主機中已經實作了讀寫分離.因為默認寫操作會發往137的資料庫.讀的操作默認發往141.如果從節點比較忙,則主節點分擔部分壓力.
-->
<writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
<!--讀資料庫1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--讀資料庫2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
<!--定義第二臺主機 由于資料庫內部已經實作了雙機熱備.-->
<!--Mycat實作高可用.當第一個主機137宕機后.mycat會自動發出心跳檢測.檢測3次.-->
<!--如果主機137沒有給Mycat回應則判斷主機死亡.則回啟東第二臺主機繼續為用戶提供服務.-->
<!--如果137主機恢復之后則處于等待狀態.如果141宕機則137再次持續為用戶提供服務.-->
<!--前提:實作雙機熱備.-->
<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
</dataHost>
</mycat:schema>
1.6.5 配置Mycat
1).關閉mycat服務

2).上傳組態檔

3).重啟mycat配置

1.6.6 資料庫高可用測驗
1.啟動window中的服務器測驗mycat服務是否正確.
2.將資料庫主庫關閉,檢查服務是否正確.
3.將資料庫主庫啟動,檢查資料是否同步.
2 關于服務快取說明
2.1 關于快取機制的說明
快取機制主要的目的就是降低用戶訪問物理設備的頻次.提供用戶的查詢的效率.
衍生: 可以利用快取服務器有效的降低用戶訪問資料庫的壓力.

2.2 快取要素
- 如果實作快取需要使用什么樣的資料存盤結構??? K-V
- 快取服務的開發應該使用什么語言?? C語言
- 快取服務運行的環境在記憶體中.
- 快取服務運行環境在記憶體中 如果斷電之后資料將全部洗掉. 持久化(磁盤)
- 快取的資料都在記憶體中,如果一直存盤資料則必然導致記憶體溢位. 記憶體優化LRU演算法/LFU演算法
2.3 Redis介紹
Redis 是一個開源(BSD許可)的,記憶體中的資料結構存盤系統,它可以用作資料庫、快取和訊息中間件, 它支持多種型別的資料結構,如 字串(strings), 散列(hashes), 串列(lists), 集合(sets), 有序集合(sorted sets) 與范圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢, Redis 內置了 復制(replication),LUA腳本(Lua scripting), LRU驅動事件(LRU eviction),事務(transactions) 和不同級別的 磁盤持久化(persistence), 并通過 Redis哨兵(Sentinel)和自動 磁區(Cluster)提供高可用性(high availability),
面試題: Redis支持5種資料型別.
速度快: 讀 11.2萬次/秒 寫 8.6萬次/秒 平均大約10萬次/秒
2.4 Redis安裝
2.4.1 上傳安裝包

2.4.2解壓Redis
1).解壓 redis檔案

2).移動檔案

2.4.3 安裝Redis
要求:在redis的根目錄中執行
命令1: make

命令2: make install
2.4.4 修改Redis組態檔
命令: vim redis.conf;
1).將IP系結注釋

2).關閉保護模式

3).開啟后臺運行

2.4.5 關于Redis命令
啟動命令: redis-server redis.conf

校驗服務是否運行正常

進入客戶端命令: redis-cli -p 6379

關閉Redis命令:
方式1. kill -9/15 PID號
方式2. redis-cli -p 6379 shutdown

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/2676.html
標籤:其他
上一篇:軟體架構師都做些什么
