1、資料庫介紹 1.1.什麼是資料庫`<Database>` 簡單說存放數據的倉庫,這個倉庫按照一定的數據結構<數據結構是指數據的組織形式或數據之間的聯繫>來組織、存儲的,我們可以通過資料庫提供的多種方法來管理資料庫里的數據我們簡單形象的理解,比如我們人類這個大社會,我們的身份證,戶口簿等等都和數據 ...
1、資料庫介紹
1.1.什麼是資料庫`<Database>`
簡單說存放數據的倉庫,這個倉庫按照一定的數據結構<數據結構是指數據的組織形式或數據之間的聯繫>來組織、存儲的,我們可以通過資料庫提供的多種方法來管理資料庫里的數據我們簡單形象的理解,比如我們人類這個大社會,我們的身份證,戶口簿等等都和資料庫有關
1.2.產生髮展
資料庫產生於60多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用
2、MYSQL介紹與安裝
2.1.為什麼選擇MYSQL
- mysql性能卓越,服務穩定,很少出現異常宕機
- mysql開源免費,無版權制約,自主性及使用成本低
- 產品耦合度,mysql支持多種操作系統,支持多開發語言,特別是php
- 技術積累,龐大的活躍的社區,
- 軟體體積小,安裝簡單,易於維護
3、MYSQL資料庫分類
MySQL官網http://www.mysql.com/,MySQL版本採用雙授權政策,和大多數開源產品路線一樣,分為社區版和商業版,並且這兩個版本又分別分成四個版本依次發佈,Alpha版、Beta版、RC版和GA版、GA版即為正式版
3.1.社區版和企業版的區別
- 首先價格上,社區版完全免費,企業版需要高額的費用
- 技術上,企業版具有MySQL企業級伺服器、MySQL企業級系統監控工具。企業版經過嚴格的測試認證,相對企業版,社區版的開發測試環境沒有那麼嚴格
- 服務方面,社區版mysql官方不提供任何技術支持,使用過程出現任何意外不負任何責任,企業版與之相反
- 商業版不支持GPL協議
- 選擇穩定版 選擇社區的GA版
- 產品線,主要是5.1和5.5 ,多數5.5
- 選擇MySQL GA版發佈6個月以上的版本
- 最好向後較長時間沒有更新發佈的版本
- 與開發人員使用版本的相容
- 測試環境跑3-6個月
- 到生產環境非核心業務跑幾個月
4、MYSQL安裝
4.1、生產環境怎麼選擇MYSQL版本
- 選擇穩定版 選擇社區的GA版
- 產品線,主要是5.1和5.5 ,多數5.5
- 選擇MySQL GA版發佈6個月以上的版本
- 最好向後較長時間沒有更新發佈的版本
- 與開發人員使用版本的相容
- 測試環境跑3-6個月
- 到生產環境非核心業務跑幾個月
4.2、MYSQL安裝方法
- 使用二進位方式安裝,rpm/yum
- 源碼編譯,產品線路1用普通編譯安裝,線路2用cmake編譯安裝5.5/6/7
4.3、yum安裝mysql 5.6.39
1.清理CentOS7下的MariaDB。
[root@MySql-01 ~]# rpm -qa | gremp mariadb [root@MySql-01 ~]# rpm -e --nodeps mariadb.x86_64 1:5.5.41-2.el7_0
2.下載MySQL的yum包
Linux系統自帶的repo是不會自動更新每個軟體的最新版本(基本都是比較靠後的穩定版),所以無法通過yum方式安裝MySQL的高級版本。所以我們需要先安裝帶有當前可用的mysql5系列社區版資源的rpm包(確保電腦聯網)。
[root@MySql-01 ~]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm [root@MySql-01 ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm [root@MySql-01 ~]# yum install mysql-community-server
4.4、MySQL安裝完成後,進行相關配置
安裝成功後,將其加入開機啟動並啟動
[root@MySql-01 ~]# systemctl enable mysqld [root@MySql-01 ~]# systemctl start mysqld [root@MySql-01 ~]# ss -tnl |grep 3306 LISTEN 0 80 :::3306 :::*
配置mysql(設置密碼等)
[root@MySql-01 ~]# mysql_secure_installation Enter current password for root (enter for none): #[直接回車] Set root password? [Y/n] Y # [設置root用戶密碼] New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] y # [刪除匿名用戶] Disallow root login remotely? [Y/n] y #[禁止root遠程登錄] Remove test database and access to it? [Y/n] y # [刪除test資料庫] Reload privilege tables now? [Y/n] y # [刷新許可權] All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up...
5、MySQL客戶端選項
**實例** -u,--user # 指定連接用戶 -h,--host # 指定連接主機 -p,--password # 指定連接密碼 --protocol={tcp|socket|memory|pipe} # 指定連接協議 -P,--port # 指定連接埠,預設監聽埠:tcp/3306 --socket # 指定本地連接的sock文件 --compress # 數據傳輸採用壓縮格式 -D,--database # 指定連接後預設使用的資料庫 -H,--html # 指定產生html輸出 -X,--xml # 指定產生xml輸出 --safe-updates # 拒絕使用無where子句的update或delete命令 # 使用實例:mysql -hlocalhost -uroot -p
6、MySQL管理工具mysqladmin
# 使用格式:mysqladmin [options] command [arg] [,command [arg]] … # 常用的command包括: create DB_Name: # 創建資料庫 drop DB_Name: # 刪除資料庫 debug: # 打開調試日誌並記錄於error log中 status: # 顯示簡要狀態信息 --sleep #:設置間隔時長 --count #:設置顯示的批次 extended-status: # 顯示擴展信息,輸出mysqld的各狀態變數及賦值,相當於執行“mysql> show global status” variables: # 輸出mysqld的各伺服器變數 flush-hosts: # 清空主機相關的緩存:DNS解析緩存;此前因為連接錯誤次數過多而被拒絕訪問mysqld的主機列表 flush-logs: # 日誌滾動,只能滾動二進位日誌和中繼日誌 refresh: # 相當於同時使用flush-hosts和flush-logs flush-privileges: # 通知mysqld重讀授權表 reload: # 功能同“flush-privileges” flush-status: # 重置狀態變數的值 flush-tables: # 關閉當前打開的表文件句柄 flush-threads: # 清空線程緩存 kill: # 殺死指定的線程,需指定線程ID;可以一次殺死多個線程,以逗號分隔,但不能有多餘空格 password: # 修改當前用戶的密碼 ping: # 模擬ping操作,檢測mysqld是否線上 processlist: # 顯示mysqld線程列表 shutdown: # 關閉mysqld進程 start-slave,stop-slave: # 啟動/關閉從伺服器線程
7、MySQL數據文件解析
MyISAM表:每表有3個文件,都位於資料庫目錄中
tb_name.frm: # 表結構定義文件
tb_name.MYD: # 數據文件
tb_name.MYI: # 索引文件
InnoDB表:有2種存儲方式
預設方式:每表有1個獨立文件和一個多表共用的文件
tb_name.frm: # 表結構定義文件,位於資料庫目錄中
ibdata#: # 共用的表空間文件,預設位於數據目錄(datadir指向的目錄)中,如ibdata1
自定義方式:獨立的表空間
tb_name.frm: #表結構定義文件
tb_name.ibd: # 獨有的表空間文件
在MySQL初始化中打開獨立表空間功能的方法:
vi /etc/my.cnf (在[mysqld]段下添加) innodb_file_per_table = ON # 註:表空間:table space,是由InnoDB管理的特有格式的數據文件,內部可同時存儲數據和索引