cgb2008-京淘day10

1.數據庫高可用(HA)

1.1 實現數據庫讀寫分離/負載均衡

在這裏插入圖片描述

1.1 Mycat代理

1.1.1 Mycat 介紹

在這裏插入圖片描述

1.1.2 Mycat代理

在這裏插入圖片描述

1.2 MyCat配置

1.2.1 上傳安裝包

在這裏插入圖片描述

1.2.2 解壓Mycat

1).解壓Mycat
[root@localhost src]# tar -xvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

2).移動Mycat文件
在這裏插入圖片描述

1.2.3 編輯Server.xml

說明: 用戶與代理數據庫之間的鏈接,通過Server.xml進行配置.
1).默認端口
在這裏插入圖片描述
2).編輯server.xml
在這裏插入圖片描述



1.2.4 編輯schemas.xml

說明:該文件表示代理與數據庫的配置 HOST:PORT:用戶名:密碼:數據庫名稱

<?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.2.5 上傳安裝文件

將課前資料中的文件上傳到指定的位置: /usr/local/src/mycat/conf
在這裏插入圖片描述

1.2.6 Mycat命令

在這裏插入圖片描述

1.2.7 報錯檢查

在這裏插入圖片描述

1.2.8 負載均衡測試

將從數據庫信息,手動的進行修改. 效果:主庫和從庫的數據暫時不一致(存在風險)
在這裏插入圖片描述
2).如果測試成功,則將數據進行修改保存.檢查讀寫分離是否成功.
在這裏插入圖片描述


1.3 實現數據庫雙機熱備

1.3.1 原理說明

說明: 實現數據庫高可用的前提條件是實現主從的備份.

之前的操作:
主庫 :192.168.126.129
從庫 : 192.168.126.130
現在的配置:
主庫 :192.168.126.130
從庫 : 192.168.126.129
在這裏插入圖片描述





1.3.2 實現雙主模式配置

1).檢查主庫狀態
在這裏插入圖片描述
2).實現主從配置

show MASTER status


# 我是129 之前是主庫,今天當從庫
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=700;

#啓動主從服務
start slave	

#檢查狀態
show slave status;

在這裏插入圖片描述

1.4 實現數據庫高可用

1.4.1 修改schema.xml配置文件

<?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.2 上傳文件

1).停止mycat服務
在這裏插入圖片描述
2).刪除配置文件
在這裏插入圖片描述
3).上傳文件
將配置文件上傳到指定的目錄中
在這裏插入圖片描述
4).啓動Mycat
在這裏插入圖片描述







1.4.3 數據庫高可用的測試

1.首先應該將129的數據庫宕機(關閉)
2.啓動程序,通過數據庫代理檢查是否訪問正確(查). 入庫是否正常(寫)
3.重啓129的數據庫. 檢查數據是否真的同步了.

2.Redis緩存

2.1 系統優化策略

說明:引入緩存機制可以有效的降低用戶訪問物理設備的頻次,從而提高響應速度.
在這裏插入圖片描述

2.2 如何設計緩存

1.緩存數據如何存儲? 應該採用什麼樣的數據結構呢? K-V key的唯一性
2.緩存數據的容量大小 應該動態維護緩存數據,將不需要的數據提前刪除. LRU算法/LFU算法/隨機算法/TTL算法
3.緩存數據保存到內存中,但是內存的特點斷電即擦除. 定期將內存數據持久化(寫入磁盤中)
4.單臺緩存服務器性能不足,所以一般需要搭建集羣(實現高可用).
5.使用C語言開發.



2.3 Redis緩存服務

2.3.1 什麼是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)。

速度: 讀: 11.2萬/秒 寫:8.6萬/秒 50萬/秒

2.3.2 上傳Redis

1).上傳redis
在這裏插入圖片描述
2).解壓redis服務
[root@localhost src]# tar -xvf redis-5.0.4.tar.gz


3).移動文件/修改文件名稱
在這裏插入圖片描述

2.3.3 安裝Redis

說明:在Redis根目錄中執行如下命令

1).make
在這裏插入圖片描述
2). make install
在這裏插入圖片描述


2.3.4 修改redis配置文件

修改redis根目錄下的redis.conf文件
1).去除IP綁定
在這裏插入圖片描述
2).修改保護模式
在這裏插入圖片描述
3).開啓後臺啓動
在這裏插入圖片描述





2.4 Redis服務器命令

說明: Redis服務在運行時,必須依賴於配置文件 redis.conf. 操作redis時最好在根目錄中操作

1).啓動redis
redis-server redis.conf
在這裏插入圖片描述
2).進入redis客戶端
redis-cli -p 6379
ctrl + c 退出客戶端
在這裏插入圖片描述
3).關閉redis服務器
在這裏插入圖片描述
方法二:








 redis-cli -p 6379 shutdown

補充說明: 如果操作的端口號是默認端口6379 則可以省略不寫.

作業

1.熟悉redis命令
2.完成當天的課堂任務
3.熟練掌握 基礎Linux命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章