1.關于tomcat服務器腳本
1.1 問題說明
如果通過命令: java -jar xxx.war 的方式啟動服務器時,如果遠程的終端關閉之后,那么tomcat服務器也會隨之關閉.影響用戶的使用. 上述的命令 表示前臺運行.
1.2 線上部署的命令
說明: 一般在Linux系統中部署服務器 一般采用后端運行的方式 啟動tomcat服務器.并且指定日志檔案輸出.
命令: nohup java -jar 8081.war -> 8081.log &

1.3 關于檔案查看的說明
cat 輸出檔案所有的內容
more 輸出檔案所有的內容,分頁輸出,空格瀏覽下一屏,q退出
less 用法和more相同,只是通過PgUp、PgOn鍵來控制 q退出
tail 用于顯示檔案后幾號,使用頻繁
tail -10 nginx.conf 查看nginx.conf的最后10行
tail –f nginx.conf 動態查看日志,方便查看日志新增的資訊
ctrl+c 結束查看
1.4 Linux 腳本說明
說明: Linux中的"腳本"(外掛-荒野行動)的后綴為.sh
創建檔案: vim start.sh

執行腳本:

2 資料庫代理說明
2.1 資料庫結構的優化
說明:由于需要用戶同時鏈接2臺甚至多臺資料庫時需要引入代理,所以有如下的部署.
注意事項: 用戶鏈接代理服務器 埠號一般:8066埠

2.2 Mycat介紹

2.3 Mycat部署
2.3.1 上傳Mycat安裝包

解壓Mycat壓縮包:
tar -zxvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz
2.3.2 檢查JDK是否安裝

2.4 關于Mycat組態檔說明
2.4.1 server.xml組態檔說明
說明:在server.xml組態檔中定義用戶名和密碼及操作的資料庫資訊,必須與YML組態檔一致.

2).修改YML組態檔

2.4.2 schemas組態檔說明
說明:schemas檔案主要的作用就是配置資料庫讀寫的策略.
<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>

2.5 Mycat測驗
啟動命令:

Mycat測驗:

2.6 資料庫實作高可用
高可用: 保證服務盡可能的不宕機,保證用戶正常使用.
2.6.1 資料庫雙機熱備
說明:一般在公司中配置雙機熱備的形式,配置為互為主從.

配置說明:
1.主庫 192.168.126.130

2.從庫 192.168.126.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=482
/*啟動主從服務*/
START SLAVE
/*檢查主從狀態*/
SHOW SLAVE STATUS;
2.6.2 實作資料庫高可用配置
說明:修改完成資料庫之后,將組態檔上傳即可.
<?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.6.2 實作資料庫高可用測驗
測驗步驟:
1.關閉主資料庫,之后檢索資料,檢查用戶的訪問是否受限.
2.修改資料庫記錄,檢查用戶的操作是否正常. (操作的是從庫)
3.重啟主資料庫 之后檢查從庫的資料是否同步.
3. Redis學習
3.1還原程式
3.1.1 修改YML組態檔

3.1.2 修改pro圖片路徑

3.1.3 修改Nginx組態檔

3.1.4 修改hosts檔案

3.2 快取機制
說明:使用快取可以有效的降低用戶訪問物理設備的頻次.快速從記憶體中獲取資料,之后回傳給用戶,同時需要保證記憶體中的資料就是資料庫資料.
思考:
1.快取的運行環境應該在記憶體中.(快)
2.使用C語言開發快取
3.快取應該使用什么樣的資料結構呢--------K-V結構 一般采用String型別居多 key必須唯一 . v:JSON格式
4.記憶體環境斷電即擦除,所以應該將記憶體資料持久化(執行寫盤操作)
5.如果沒有維護記憶體的大小,則容易導致 記憶體資料溢位. 采用LRU演算法優化!!!

3.3 Redis介紹
redis是一個key-value存盤系統,和Memcached類似,它支持存盤的value型別相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希型別),這些資料型別都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的,在此基礎上,redis支持各種不同方式的排序,與memcached一樣,為了保證效率,資料都是快取在記憶體中,區別的是redis會周期性的把更新的資料寫入磁盤或者把修改操作寫入追加的記錄檔案,并且在此基礎上實作了master-slave(主從)同步,
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的操作是單行程單執行緒操作,所以沒有執行緒并發性的安全問題. 采用佇列的方式一個一個操作.
Redis常見用法:
1.Redis可以當做快取使用
2.Redis可以當做資料庫使用 驗證碼
3.Redis可以訊息中間件使用 銀行轉賬等
3.4 Redis安裝
1).解壓 Redis安裝包
[root@localhost src]# tar -zxvf redis-5.0.4.tar.gz

2). 安裝Redis
說明:在Redis的根目錄中執行命令
命令: 1.make
2.make install

3.5 修改Redis的組態檔
命令1: 展現行號 :set nu

修改位置1: 注釋IP系結

修改位置2: 關閉保護模式

修改位置3: 開啟后臺啟動

3.6 redis 服務器命令
1.啟動命令: redis-server redis.conf
2.檢索命令: ps -ef | grep redis
3.進入客戶端: redis-cli -p 6379
4.關閉redis: kill -9 PID號 | redis-cli -p 6379 shutdown

4. Redis入門案例
4.1 引入jar包檔案
<!--spring整合redis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
4.2 編輯測驗API
package com.jt.test;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
public class TestRedis {
/**
* 1.測驗redis程式鏈接是否正常
* 步驟:
* 1.實體化jedis工具API物件(host:port)
* 2.根據實體 操作redis 方法就是命令
*
* 關于鏈接不通的說明:
* 1.檢查Linux防火墻
* 2.檢查Redis組態檔修改項
* 2.1 IP系結
* 2.2 保護模式
* 2.3 后臺啟動
* 3.檢查redis啟動方式 redis-server redis.conf
* 4.檢查IP 埠 及redis是否啟動...
*
* */
@Test
public void test01(){
String host = "192.168.126.129";
int port = 6379;
Jedis jedis = new Jedis(host,port);
jedis.set("cgb2006","好好學習 天天向上");
System.out.println(jedis.get("cgb2006"));
//2.練習是否存在key
if(jedis.exists("cgb2006")){
jedis.del("cgb2006");
}else{
jedis.set("cgb2006", "xxxx");
jedis.expire("cgb2006", 100);
}
}
}
作業
1.預習其他的命令 代碼和命令
2.回顧AOP的知識
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/171990.html
標籤:其他
上一篇:你不知道的redis五-redis進階,第三方jar沒有封裝的命令我們該怎么執行?
下一篇:記第一次編譯Linux內核
