cgb2007-京淘day11

Bertramv發表於2020-11-14

1.程式碼還原

1.1 IP地址問題

問題描述: windows的IP連結不通Linux中的IP地址.
在這裡插入圖片描述
在這裡插入圖片描述
問題說明: 當虛擬起啟動時,虛擬網路卡沒有正常的工作導致的. 只需要重啟網路卡即可.
在這裡插入圖片描述

重啟網路卡命令:

service NetworkManager stop 
chkconfig  NetworkManager  off    永久關閉 Manager網路卡
service  network restart		  重啟network網路卡

1.2 還原hosts檔案

在這裡插入圖片描述

1.3 還原圖片路徑

在這裡插入圖片描述

1.4 還原nginx配置

讓域名訪問8091伺服器.
在這裡插入圖片描述

2 資料庫相關學習

2.1 資料庫備份策略

2.1.1 資料庫冷備份

說明:通過資料庫工具,定期將資料庫檔案進行轉儲,保證資料的安全性. (一般2-3天)
缺點:
1.備份時由於突發的情況,可能導致備份失敗.需要反覆備份.
2.由於冷備份是定期備份.所以可能導致資料的丟失.

核心:
資料必須備份.備份的資料是恢復的最後有效的手段.
在這裡插入圖片描述
在這裡插入圖片描述

2.1.2資料庫熱備份

說明:可以通過資料庫機制,自動的實現資料的備份操作.
優點: 可以實現自動化的操作,並且是實時備份.
在這裡插入圖片描述
備份實現原理:
1.當資料庫主機的資料發現變化時,會將修改的資料寫入二進位制日誌檔案中.
2.從庫通過IO執行緒,讀取主庫的二進位制日誌檔案,獲取之後,將資料儲存到中繼(臨時儲存)日誌中.
3.從庫中開啟Sql執行緒,之後讀取中繼日誌中的資料,之後將資料同步到從庫中.

2.2 準備多臺伺服器

2.2.1 修改虛擬機器名稱

說明:複製課前資料中的虛擬機器,並且改名為JT_LINUX_S.之後啟動即可.
在這裡插入圖片描述

2.2.2 修改Linux從機的mac地址

為了保證2臺虛擬機器正常穩定的執行,需要修改mac地址.
在這裡插入圖片描述

2.2.3 安裝資料庫從庫

具體參見 部落格文件.
https://blog.csdn.net/qq_16804847/article/details/108450506

2.3 資料庫主從搭建

2.3.1 開啟主庫二進位制檔案

說明:主庫的二進位制日誌檔案,預設條件下是關閉的,需要手動的開啟.
命令: vim /etc/my.cnf
編輯二進位制日誌檔案:
在這裡插入圖片描述
重啟資料庫,檢查二進位制日誌檔案,是否可用.
在這裡插入圖片描述
重啟之後,生成二進位制檔案
在這裡插入圖片描述

2.3.2 開啟從庫二進位制配置檔案

修改檔案: vim /etc/my.cnf
新增的操作和主庫一致,之後重啟資料庫伺服器,效果如下:
在這裡插入圖片描述

2.3.3 資料庫主從搭建

1).檢查主庫的狀態
在這裡插入圖片描述
2). 實現資料庫主從掛載

/*我是130 我是從庫*/
/*1.實現資料庫主從掛載 host/port/user/password/二進位制日誌/pos*/
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;

/*2.啟動資料庫主從服務*/
START SLAVE;

/*3.檢查資料庫啟動狀態*/
SHOW SLAVE STATUS;

/*4.如果出現資料庫問題  1.關閉主從服務, 2.檢查報錯狀態  3.重新搭建服務*/
STOP SLAVE	
/*檢查報錯資訊 根據報錯修改記錄*/
/*重新搭建主從關係*/

3).主從狀態的校驗

2.3.4 資料庫主從測試

注意事項:
1.修改主庫的資料,從庫會跟著同步資料.
2.如果修改從庫資料,則主從的關係將會終止.

2.4 資料庫讀寫分離/負載均衡實現

2.4.1 資料庫優化策略

說明:通過代理資料庫可以實現資料庫的讀寫分離/資料庫負載均衡操作,進一步的提升了整體架構的能力.
在這裡插入圖片描述

2.4.2 Mycat

在這裡插入圖片描述

2.4.3 Mycat特性

支援SQL92標準
支援MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
遵守Mysql原生協議,跨語言,跨平臺,跨資料庫的通用中介軟體代理。
基於心跳的自動故障切換,支援讀寫分離,支援MySQL主從,以及galera cluster叢集。
支援Galera for MySQL叢集,Percona Cluster或者MariaDB cluster
基於Nio實現,有效管理執行緒,解決高併發問題。
支援資料的多片自動路由與聚合,支援sum,count,max等常用的聚合函式,支援跨庫分頁。
支援單庫內部任意join,支援跨庫2表join,甚至基於caltlet的多表join。
支援通過全域性表,ER關係的分片策略,實現了高效的多表join查詢。
支援多租戶方案。
支援分散式事務(弱xa)。
支援XA分散式事務(1.6.5)。
支援全域性序列號,解決分散式下的主鍵生成問題。
分片規則豐富,外掛化開發,易於擴充套件。
強大的web,命令列監控。
支援前端作為MySQL通用代理,後端JDBC方式支援Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支援密碼加密
支援服務降級
支援IP白名單
支援SQL黑名單、sql注入攻擊攔截
支援prepare預編譯指令(1.6)
支援非堆記憶體(Direct Memory)聚合計算(1.6)
支援PostgreSQL的native協議(1.6)
支援mysql和oracle儲存過程,out引數、多結果集返回(1.6)
支援zookeeper協調主從切換、zk序列、配置zk化(1.6)
支援庫內分表(1.6)
叢集基於ZooKeeper管理,線上升級,擴容,智慧優化,大資料處理(2.0開發版)。

2.5 部署步驟

2.5.1 上傳myCat伺服器

上傳路徑: /usr/local/src
在這裡插入圖片描述

2.5.2 解壓Mycat

 tar -xvf  Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

移動安裝檔案:
在這裡插入圖片描述

2.5.3 server.xml配置檔案說明

注意事項: 預設條件下的埠號8066埠

<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>

2.5.3 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>

2.5.4 實現配置檔案上傳

在這裡插入圖片描述

2.5.5 Mycat命令

Usage: ./mycat { console | start | stop | restart | status | dump }
在這裡插入圖片描述

2.5.6 檢查mycat日誌

在這裡插入圖片描述

2.5.7 Mycat負載均衡測試

修改從庫中的資料庫.重新整理列表頁面.檢查是否有負載均衡的效果.
注意事項: 如果測試完成,記得將資料修改 保證一致.

相關文章