一 Nosql 指的是非關係型數據庫,作爲傳統關係型數據庫的一個有效補充,針對特定場景。以高性能和使用便利爲目一
的功能特異化的數據庫產品
Nosql特點:
Noosql數據庫存儲不需要固定的表結構
1 他不是否定關係數據庫,而是作爲關係數據庫的一個重要補充
2 Nosql爲了高性能高併發而產生的
3 Nosql典型產品memcache(純內存) 一重啓就丟數據
redis(持久化緩存) 持久化緩存
mongodb
二 非關係型數據庫種類:
1 鍵值存儲數據庫
2 列存儲數據庫
3 面向文檔的數據庫 mongodb
4 圖形數據庫
三 關係型數據庫
1 oracle主要應用範圍:傳統大企業 大公司 政府 金融 證券
關係型數據庫比較笨重一個軟件很大 幾個G左右
2 mysql數據庫互聯網公司最常用的公司 適用於大中小型網站,開源,體積小速度快成本低等特點
3 mariaDB 數據庫誕生 mysql被收購
4 SQL server 數據庫 微軟開發的大型數據庫 和sybase合作開發
5 access和offcices 綁定的一個入門級小型的桌面數據庫,性能和安全性一般,可提供個人管理或者小型網站之用
四 數據庫的備份
【1】sql語句如何優化:
1 抓慢sql show for testlist 執行一下查看慢的 給慢sql添加索引 2 在配置文件裏添加參數 添加索引 增加慢sql的查詢日誌收集 腳本切割 分析定時任務發給db
【2】 網站打開慢 給出排查方法,如何使因爲導致數據庫慢導致,如何排查解決?分析並舉例
思路:
負載均衡到web服務器 web到存儲 php到數據庫 web到數據庫
訪問靜態網頁一下 動態網頁慢php問題 uptime可定負載均衡高
慢 則是負載高 cpu高 查看io cure慢的話是存儲問題 創建索引 創建sql慢查詢日誌
測試環境 生產環境 開發環境
五 數據庫備份:
mysqldump -u 用戶名 -p 數據庫名 表名 >備份的文件名
mysqldump -uroot -poldboy123 -S/data/3306/mysql.sock -B oldboy oldboy-gbk >/opt/bak_$(data +%F).sql
-B 參數的作用 不加-B 第一個是庫 後面都是表 加上-B 第一個是庫 後面的都是表
--compact 減少輸出 但不用於生產
六 mysqldump的工作原理
利用mysqldump命令把數據備份的過程,就是直接拿mysql數據庫裏面的數據以邏輯的sql語句的形式直接輸出或者生成備份的過程
mysql分庫腳本
mysql -uroot -poldboy123 -e "show databases;"|egrep -v "_schema|atabase"|sed -r 's#^(.*)#mysqldump -uroot -poldboy123 --events -B \1 |gzip >/opt/\1.sql.gz#g'|bash
備份單個表:
mysqldump -uroot -poldboy23 -S /data/3306/mysql.scok oldboy test --compact
分表備份:
mysqldump -u 用戶名 -p 數據庫名 表名 > 備份的文件名
mysqldump -uroot -poldboy student >/opt/table1.sql
備份多個表:
mysqldump -u 用戶名 -p 數據庫名 表名1 表名2 > 備份的文件名
分表備份缺點:文件多 很碎
備份表結構:-d
利用mysqldump -d參數只備份表的結構 備份oldboy庫的所有表的結構
備份表數據 -t 備數據庫裏面的數據
七 刷新binlog參數 參數-F
mysqldump用於定時對某一時刻的數據全備,例如00 點進行備份
增量備份:當有數據寫入到數據庫時,還會同時把更新出的sql語句寫入到對應的文件。這個文件叫做binlog文件
例子:
10點丟失數據需要恢復數據:
1 00點時刻備份的.sql數據還原到數據庫,這時數據庫恢復到了00點
2 00-10點數據,就需要binlog裏恢復
binlog文件生效則需要log-bin
-F 作用:binlog日誌 生成新的而文件 將來新的增量恢復從這個文件開始
--master-data 在備份語句裏添加CHANGES MASTER 語句及binlog文件
及位置點信息
當--master-data=1時 可執行的change master語句 一般等於1時做的是從庫
當--master-data=2時 註釋的change master語句 一般用於做單純的增量恢復
--master-data 除了增量恢復確定臨界點外 做主從複製時作用更大
八 mysqldump的關鍵參數說明:
mysqldump的參數:
-B 備份多格庫
-t 只備份數據
-d 只備份表結構
-T 分離庫表和數據成不同的文件,數據是文本,非sql語句
-A 備份所有庫
-L --lock-all-tables 鎖表
備份時一定要鎖表,在某一時刻數據庫不能更新
當--master-data=1時 可執行的change master語句 一般等於1時做的是從庫
當--master-data=2時 註釋的change master語句 一般用於做單純的增量恢復
--master-data 除了增量恢復確定臨界點外 做主從複製時作用更大
--single-transaction 適合innodb屬無數據庫備份
InnoDB 表在備份時 通常啓用選項 --single-transaction來保證備份的一致性,實際上它的工作原理是設定本次會話的隔離級別:repeataable read 以確保本次會話dump時 。不會看到其他會話已經提交了數據
-q --quick ACID會話隔離數據 -enevts事務性是innoDB獨有的特性 事物有隔離性
未完待續。。。。。。。