第1章 資料庫介紹及mysql安裝

資料庫,簡而言之可視為電子化的檔案櫃——存儲電子檔案的處所,使用者可以對檔案中的資料運作新增、截取、更新、删除等操作。
所謂“資料庫”系以一定方式儲存在一起、能予多個使用者共享、具有盡可能小的備援度、與應用程式彼此獨立的資料集合。
資料是指對客觀事件進行記錄并可以鑒别的符号,是對客觀 事物的性質、狀态以及互相關系等進行記載的實體符号或這些物 理符号的組合。它是可識别的、抽象的符号。
非關系型資料庫
NoSQL:非關系型資料庫(Not only SQL)
關系型資料庫
關系型資料庫的特點
l 不是否定關系型資料庫,而是作為補充,現在也有部分替代的趨勢。
l 關注高性能,高并發,靈活性,忽略和上述無關的功能。
l 現在也在提升安全性和使用功能。
l 典型産品:Redis(持久化緩存,兩個半天)、MongoDB(最接近關系型資料 的NoSQL)、Memcached。
l 管理不适用SQL管理,而是用一些特殊的 API 或 資料接口。
鍵值(KV)存儲:Memcached、Redis
列存儲(column-oriented):HBASE(新浪,360)、Cassandra(200台伺服器叢集 )
文檔資料庫(document-oriented):MongoDB(最接近關系型資料庫的NoSQL)
圖形存儲(Graph):Neo4j
資料來源: https://db-engines.com/en/ranking
Oracle資料庫版本介紹
7--8i--9i--10g—11g--12c--18c(?)
Oracle的市場應用
a) 市場佔有率第一,趨勢遞減
b) 市場空間,傳統企業
c) 傳統企業也在網際網路化
MySQL資料庫版本介紹
5.0--5.1--5.5--5.6--5.7--8.0
MySQL的市場應用
a) 中、大型網際網路公司
b) 市場空間:網際網路領域第一
c) 趨勢明顯
d) 同源産品:MariaDB、perconaDB
微軟:SQL Server
IBM :DB2資料庫
市場占有量小
目前隻有:國有銀行(人行、中國銀行、工商銀行等)、中國移動應用。
下面三者廣泛應用在大型網際網路公司
開源、社群版免費、簡單,使用友善,可靠、穩定、安全、社群活躍
mysql産品線(主線)
3.26--5.2版本
– 正宗後代
– Centos5、6中預設有5.1版本
– Centos7中預設是MariaDB
5.4--5.7 ,8.0版本
– 借鑒社群好的貢獻,進一步開發的版本
– 主流版本:5.5 5.6 5.7
MySQL Cluster 6.0 版本&更高
– 類似于Oracle RAC,硬體要求高。
– 一般各大網站沒有人用
mysql産品線(派生産品)
派生版本有Drizzle、MariaDB、Percona Server及OurDelta等。
安裝依賴包
安裝cmake編譯工具
cmake
定制功能:存儲引擎、字元集、壓縮等
定制安裝位置、資料存儲位置、檔案位置(socket)
建立mysql管理使用者
下載下傳mysql軟體包,解壓
注:這裡使用的是sohu的鏡像源進行下載下傳(軟體版本5.6.36)
進入查詢目錄,使用cmake進行編譯,安裝,建立軟連接配接,過程時間較長。
複制配置檔案
編譯的MySQL可以暫時不需要設定配置檔案。
注意:如果以前作業系統中安裝過rpm格式的mysql,系統中可能會遺留/etc/my.cnf檔案,我們需要将它删除掉
初始化資料庫
防止報錯:資料庫啟動會提示,找不到xx/tmp/mysql.sock,原因是5.6.36版本不會自動建立tmp目錄,需要我們手工建立。
修改程式目錄的屬主,屬組
複制啟動腳本,并修改權限
添加環境變量,使用mysql指令
設定root使用者密碼
優化資料庫(清理使用者及無用資料庫)
主機系統環境說明
擷取軟體(采用二進制包方式進行安裝)
解壓
将軟體移動到程式目錄,建立軟連接配接
添加mysql使用者,并進行授權
初始化資料庫
初始化時注意最後一行輸出root密碼
拷貝配置檔案和啟動檔案
# 修改啟動檔案内容(配置目錄)
将程式安裝到 /usr/local/ 下 可以省略這步操作
啟動mysql
添加環境變量
修改mysql密碼
mysql是一個典型的c/s模式,服務端與用戶端兩部分組成
TCP/IP 連接配接 網絡連接配接串(通過使用者名 密碼 IP 端口進行連接配接)
socket 連接配接 網絡套接字(使用者名 密碼 socket檔案)
在linux中使用mysql指令不加其他的參數連接配接方式即
啟動背景守護程序,并生成工作線程
預配置設定記憶體結構供MySQL處理資料使用
執行個體就是MySQL的背景程序+線程+預配置設定的記憶體結構
通訊協定為:tcp/ip 或 socket
連接配接線程 為連接配接的數量
使用者驗證 為通過使用者名 密碼驗證進行通訊協定
sql即結構化的查詢語句(資料庫内部邏輯語言)sql92 sql99
DDL 資料庫定義語言
DCL 資料庫控制語言
DML 資料庫操作語言
DQL 資料查詢語言
SQL層的功能: select * from wordpress.user;
SQL層處理流程
由上層決定存儲方式
存儲引擎是充當不同表類型的處理程式的伺服器元件。
存儲引擎層功能:
存資料、取資料
資料的不同存儲方式
不同的管理方式:
事務(增、删、改)
備份恢複
進階功能(高可用的架構、讀寫分離架構)
存儲引擎是充當不同表類型的處理程式的伺服器元件。
存儲引擎用于:
特殊功能:
雙層處理
SQL 層不依賴于存儲引擎:
邏輯構成是為了使用者能夠讀懂資料出現的,讓你更好的了解資料。
管理資料的一種方式。
切換庫
檢視表
檢視列的資訊(記錄)
程式檔案随資料目錄一起存儲在伺服器安裝目錄下。執行各種客戶機程式、管理程式和實用程式時将建立程式可執行檔案和日志檔案。首要使用磁盤空間的是資料目錄。
伺服器日志檔案和狀态檔案:
包含有關伺服器處理的語句的資訊。日志可用于進行故障排除、監視、複制和恢複。
InnoDB 日志檔案: (适用于所有資料庫)駐留在資料目錄級别。
InnoDB 系統表空間: 包含資料字典、撤消日志和緩沖區。
每個資料庫在資料目錄下均具有單一目錄(無論在資料庫中建立何種類型的表)。資料庫目錄存儲以下内容:
資料目錄的位置取決于配置、作業系統、安裝包和分發。典型位置是 /var/lib/mysql。
MySQL 在磁盤上存儲系統資料庫 (mysql)。
mysql 包含諸如使用者、特權、插件、幫助清單、事件、時區實作和存儲例程之類的資訊。
sql 優化相關的理念
解析器 : 執行計劃 資料庫執行sql的一種方式
優化器 : 知道基本規則,直接影響将來選擇哪個執行計劃
查詢緩存 : 生産環境中,一般會用redis memcached 來代替
邏輯結構
庫 就是一個目錄,為了存放多張表
表 在相應的庫中,用多個檔案來表示
myisam表 3個檔案:(.myd資料檔案 .myi索引檔案 frm表 結構定義檔案)
innodb: 2個或者一個,共享表空間(ibdata1 基表 中繼資料)、獨立表空間(5.6以後預設的表存儲方式)
如何使用磁盤
1、多個庫多個目錄,目錄下存放了多個表的存儲檔案
2、 auto.cnf db02.err db02.pid ibdata1 ib_logfile0 ib_logfile1 等
常用的連接配接方式:
mysqld 檔案屬性
mysql.server檔案屬性
mysqld_safe檔案屬性
可以看出mysql.server檔案與mysqld_safe檔案都是腳本檔案,最後都調用mysqld二進制檔案進行啟動。
推薦使用的方法:
盡量避免使用kill指令
mysqladmin指令關閉mysql
perror指令
perror指令是mysql自帶指令,能夠查詢mysql錯誤代碼的含義。
功能 :
1、影響到伺服器程序的啟動
2、影響到用戶端程式
配置my.cnf
使用不同的"标簽"去明确指定影響哪部分功能
伺服器端
my.cnf檔案配置執行個體
檢查程序資訊,可以看到與my.cnf配置的相同
my.cnf檔案的配置
注:假設4個配置檔案都存在,同時使用--defaults-extra-file指定了參數檔案,如果這時有一個 "參數變量"在5個配置檔案中都出現了,那麼後面的配置檔案中的參數變量值會覆寫前面配置檔案中的參數變量值,就是說會使用 ~/.my.cnf 中設定的值
如果使用./bin/mysqld_safe 守護程序啟動mysql資料庫時,使用了 --defaults-file=<配置檔案的絕對路徑>參數,這時隻會使用這個參數指定的配置檔案。
簡單地說,MySQL多執行個體就是在一台伺服器上同時開啟多個不同的服務端口(如:3306/3307)同時運作多個MySQL服務程序,這些服務程序通過不同的socket監聽不同的服務端口來提供服務。
這些MySQL多執行個體共用一套MySQL安裝程式,使用不同的my.cnf(也可以相同)配置檔案、啟動程式(也可以相同)和資料檔案。在提供服務時,多執行個體MySQL在邏輯上看來是各自獨立的,他們根據配置檔案對應設定值,獲得伺服器響應數量的資源。
有效利用伺服器資源
當單個伺服器資源有剩餘時,可以充分利用剩餘的資源提供更多的服務,且可以實作資源的邏輯隔離
節約伺服器資源
當公司資金緊張,但是資料庫又需要各自盡量獨立地提供服務,而且,需要主從複制等技術時,多執行個體就再好不過了
MySQL多執行個體有它的好處,但也有弊端,比如,會存在資源互相搶占的問題。當某個資料庫執行個體并發很高或者有SQL慢查詢時,整個執行個體會消耗大量的系統CPU、磁盤I/O等資源,導緻伺服器上的其他資料庫執行個體提供服務的品質一起下降。
前期mysql的安裝與1.4MySQL的安裝一緻,在這裡就不再重複(配置完成不要啟動)
第一個裡程碑:多執行個體配置檔案準備
3306端口my.cnf配置檔案
3307端口my.cnf配置檔案
編寫管理腳本3306
View Code mysql 多執行個體 啟動腳本
編寫管理腳本3307
注意腳本要給繼續權限才能夠正常使用
第二個裡程碑:建立資料目錄并授權
第三個裡程碑:初始化資料
第四個裡程碑:建立日志檔案
#5.6.36特殊性:需要建立錯誤日志檔案
第五個裡程碑:啟動多執行個體
檢查mysql狀态
檢查端口資訊
至此mysql的多執行個體就配置完成
本地連接配接方式
第一步:将服務停掉
第二步:加參數啟動服務
這種模式下
無密碼登陸
網絡使用者無法登陸
隻能本地登陸
和授權有關的指令都無法執行
第三步:修改密碼
MYSQL5.7 修改密碼修改字段 authentication_string
第四步:退出重新開機服務
第五步:登入驗證
至此密碼修改成功