|
-- 會員 / 註冊 --
|
|
|
|
MySQL DBA修煉之道 ( 簡體 字) |
作者:陳曉勇 | 類別:1. -> 資料庫 -> MySQL |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 46261 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:2/1/2017 |
頁數:486 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111558415 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書以實戰講解為主,摒棄了生產實踐中不常用的知識和技術。書中內容主要分為5部分。第壹部分介紹MySQL的應用領域和適用場景、基礎架構、常見生產環境部署方式,以及MySQL安裝部署方式等內容。第二部分給出DBA、開發人員需要熟悉的一些知識,比如開發基礎知識,如何選擇合適的數據類型、事務的隔離級別和死鎖避免等。第三部分則會介紹DBA及測試人員需要熟悉的測試知識,包括自動化壓力測試、硬件性能測試。第四部分對照DBA的工作講述生產的實際操作步驟,包括如何部署、升級、遷移備份數據等內容。第五部分講述性能調優的工具和手段,如何進行數據規劃,如何設計高可用性、高性能、伸縮性良好的系統。 |
目錄:第一部分 入門篇 第1章 理解MySQL 2 1.1 MySQL介紹 2 1.1.1 應用領域和適用場景 2 1.1.2 為什么那么多公司和機構選擇使用MySQL 3 1.1.3 MySQL的優勢是什么,它解決了什么問題 3 1.2 MySQL的基礎架構和版本 4 1.2.1 軟件架構中數據庫的定位 4 1.2.2 MySQL的基礎架構 5 1.2.3 MySQL的版本及特性 6 1.2.4 MySQL的開發周期 8 1.3 查詢執行過程概述 9 1.4 MySQL權限 10 1.4.1 MySQL權限機制 10 1.4.2 賦予權限和回收權限 10 1.5 長連接、短連接、連接池 10 1.5.1 短連接 10 1.5.2 長連接 11 1.5.3 連接池 12 1.5.4 持久連接和連接池的區別 12 1.6 存儲引擎簡介 12 1.6.1 InnoDB引擎 12 1.6.2 MyISAM引擎 13 1.6.3 MEMORY存儲引擎 13 1.6.4 ARCHIVE存儲引擎 14 1.6.5 選擇合適的引擎 14 1.6.6 選擇何種平臺 14 1.7 MySQL復制架構 15 1.8 一些基礎概念 15 第2章 MySQL安裝部署和入門 17 2.1 如何選擇MySQL版本 17 2.2 官方版本的安裝 18 2.2.1 二進制包的安裝 18 2.2.2 源碼編譯安裝 20 2.3 其他MySQL分支的安裝 21 2.4 安裝InnoDB Plugin 21 2.5 常用命令 22 2.5.1 使用mysql命令 22 2.5.2 使用mysqladmin命令 26 2.5.3 使用mysqldump命令 26 2.6 MySQL的主要參數設置 27 第二部分 開發篇 第3章 開發基礎 30 3.1 相關基礎概念 30 3.2 數據模型 33 3.2.1 關系數據模型介紹 33 3.2.2 實體–關系建模 34 3.2.3 其他數據模型 35 3.3 SQL基礎 38 3.3.1 變量 39 3.3.2 保留字 40 3.3.3 MySQL注釋 42 3.3.4 數據類型 43 3.3.5 函數 51 3.3.6 操作符及優先級 53 3.3.7 MySQL示例employees數據庫 54 3.3.8 SQL語法 55 3.4 PHP開發 69 3.4.1 概述 69 3.4.2 客戶端訪問過程 69 3.4.3 開發工具 72 3.4.4 操作數據 73 3.4.5 PHP數據庫開發建議 78 3.5 索引 78 3.5.1 索引介紹 78 3.5.2 使用索引的場景及注意事項 79 3.5.3 索引的錯誤用法 82 3.5.4 如何使用EXPLAIN工具 83 3.5.5 優化索引的方法學 90 3.6 ID主鍵 91 3.7 字符集和國際化支持 93 3.7.1 什么是字符集 93 3.7.2 國際化支持 93 3.7.3 字符集設置 94 第4章 開發進階 98 4.1 范式和反范式 98 4.1.1 范式 98 4.1.2 反范式 102 4.2 權限機制和安全 104 4.2.1 MySQL訪問權限系統 104 4.2.2 強化安全 106 4.2.3 SQL注入 109 4.3 慢查詢日志 112 4.3.1 查看慢查詢日志 112 4.3.2 使用工具分析慢查詢日志 114 4.4 應用程序性能管理 118 4.4.1 為什么需要性能管理 118 4.4.2 應用性能管理概述 119 4.4.3 應用性能管理的關注點 120 4.4.4 具體應用 120 4.5 數據庫設計 122 4.5.1 邏輯設計 122 4.5.2 物理設計 123 4.6 導入導出數據 127 4.6.1 規則簡介 127 4.6.2 使用mysqldump導出,使用mysql導入 128 4.6.3 使用SELECT INTO OUTFILE命令導出數據 130 4.6.4 使用LOAD DATA導入數據 130 4.6.5 用mysqlimport工具導入 132 4.6.6 用mysql程序的批處理模式導出 132 4.6.7 用split切割文件,加速導入數據 133 4.7 事務和鎖 133 4.7.1 概述 133 4.7.2 MyISAM的表鎖 134 4.7.3 事務定義和隔離級別 135 4.7.4 InnoDB的行鎖 137 4.8 死鎖 141 4.9 其他特性 142 4.9.1 臨時表 142 4.9.2 分區表 142 4.9.3 存儲過程、觸發器、外鍵 147 4.9.4 視圖 159 第5章 開發技巧 161 5.1 存儲樹形數據 161 5.2 轉換字符集 163 5.3 處理重復值 165 5.4 分頁算法 167 5.5 處理NULL值 167 5.6 存儲URL地址 169 5.7 歸檔歷史數據 169 5.8 使用數據庫存儲圖片 170 5.9 多表UPDATE 170 5.10 生成全局唯一ID 171 5.11 使用SQL生成升級SQL 171 第6章 查詢優化 172 6.1 基礎知識 172 6.1.1 查詢優化的常用策略 172 6.1.2 優化器介紹 173 6.1.3 MySQL的連接機制 175 6.2 各種語句優化 176 6.2.1 連接的優化 176 6.2.2 GROUP BY、DISTINCT、ORDER BY語句優化 177 6.2.3 優化子查詢 178 6.2.4 優化limit子句 179 6.2.5 優化IN列表 180 6.2.6 優化UNION 181 6.2.7 優化帶有BLOB、TEXT類型字段的查詢 181 6.2.8 filesort的優化 181 6.2.9 優化SQL_CALC_FOUND_ROWS 183 6.2.10 優化臨時表 183 6.3 OLAP業務優化 184 第7章 研發規范 187 7.1 命名約定 187 7.2 索引 188 7.3 表設計 189 7.4 SQL語句 190 7.5 SQL腳本 191 7.6 數據架構的建議 192 7.7 開發環境、測試環境的配置參數建議 193 7.8 數據規劃表 193 7.9 其他規范 194 第三部分 測試篇 第8章 測試基礎 196 8.1 基礎概念 196 8.2 性能測試的目的 197 8.3 基準測試 197 8.4 性能/基準測試的步驟 199 8.5 測試的注意事項 199 第9章 測試實踐 201 9.1 硬件測試 201 9.1.1 概述 201 9.1.2 CPU測試 202 9.1.3 內存測試 203 9.1.4 I/O測試 203 9.1.5 網絡測試 207 9.2 MySQL測試 207 9.2.1 概述 207 9.2.2 常用測試工具的介紹和使用 208 9.2.3 MySQL基準測試模型 211 9.3 應用數據庫性能測試 221 第四部分 運維篇 第10章 基礎知識 224 10.1 文件和I/O管理 224 10.1.1 MySQL日志文件 224 10.1.2 InnoDB數據文件和日志文件 228 10.1.3 臨時文件 232 10.1.4 MySQL套接字文件 232 10.2 MySQL如何進行災難恢復 233 10.3 變量設置、配置文件和主要參數 234 10.3.1 概述 234 10.3.2 如何設置參數、變量 235 10.3.3 配置文件的讀取順序 235 10.3.4 環境變量、配置文件、命令行選項的優先級 237 10.3.5 配置文件詳述 237 10.3.6 配置文件示例 238 10.4 MySQL Query Cache和優化器 239 10.5 SHOW INNODB STATUS解析 241 第11章 MySQL的監控 250 11.1 非數據庫的監控 250 11.1.1 開源監控工具/平臺 250 11.1.2 編寫程序來收集信息 251 11.2 數據庫的監控 251 11.2.1 數據庫服務的基本監控方式 251 11.2.2 應該收集的信息和收集方法? 252 11.2.3 MySQL需要關注的參數及狀態變量 260 11.3 數據庫監控的實現 263 11.3.1 Nagios 263 11.3.2 swatch 263 11.3.3 Cacti 267 11.3.4 如何打造一個強大的監控系統 274 11.4 數據庫監控的可視化 275 11.4.1 折線圖 276 11.4.2 散點圖 276 11.4.3 熱圖 277 第12章 MySQL復制 279 12.1 基礎知識 279 12.1.1 原理及注意事項 279 12.1.2 常用命令 281 12.1.3 參數設置 287 12.1.4 配置文件 290 12.1.5 復制模式 292 12.1.6 復制兼容性 294 12.2 配置主從復制 294 12.3 配置主主復制 296 12.4 配置級聯復制、環形復制 297 12.5 跨IDC復制 297 12.6 多主復制 298 12.7 延時復制 298 12.8 半同步復制 299 12.9 在線搭建從庫 299 12.9.1 操作系統下對打包文件配置主從 299 12.9.2 利用mysqldump制作從庫 301 12.10 配置日志服務器 303 12.11 常見的復制問題及處理方法 305 12.11.1 跳過復制錯誤 305 12.11.2 臨時表和復制 305 12.11.3 內存表和復制 306 12.11.4 主庫宕機重新啟動成功,但復制關系中斷 306 12.11.5 主庫宕機重啟不成功 307 12.11.6 多個從庫的server-id相同 307 12.11.7 鎖定導致的復制延時 307 12.11.8 對MyISAM引擎的表恢復數據 307 12.11.9 如何徹底清除Slave設置 308 12.11.10 網絡異常導致的復制延時 308 第13章 遷移、升級、備份、恢復數據庫 309 13.1 升級 309 13.1.1 升級表結構或變更數據 309 13.1.2 MySQL版本升級 312 13.2 新業務部署上線 312 13.3 遷移 313 13.3.1 遷移步驟 313 13.3.2 切換數據庫時長短連接的影響 314 13.4 生產環境常用的備份策略 315 13.4.1 備份策略 315 13.4.2 備份建議 316 13.5 常用備份方式和恢復方法 316 13.5.1 使用dd備份和恢復數據 317 13.5.2 使用mysqldump備份和恢復數據 317 13.5.3 使用Percona XtraBackup備份和恢復數據 319 13.5.4 使用mysqlbinlog進行時間點恢復 326 第14章 運維技巧和常見問題處理 328 14.1 MySQL運維技巧 328 14.1.1 使用lsof命令恢復文件 328 14.1.2 如何刪除大文件 330 14.1.3 獲取吞吐信息 331 14.1.4 傳輸大文件 331 14.1.5 記錄連接用戶 331 14.1.6 如何判斷表的碎片 332 14.1.7 快速關閉MySQL 333 14.1.8 如何預熱數據 333 14.1.9 臨時禁止數據庫訪問 334 14.1.10 獲取MySQL連接、用戶 334 14.1.11 更改數據庫名 334 14.1.12 批量KILL連接 335 14.1.13 記錄運行時間長的查詢 335 14.1.14 刪除分表 335 14.2 常見問題 336 14.2.1 忘記root密碼 336 14.2.2 InnoDB同時打開事務最大不能超1023個 336 14.2.3 連接不上MySQL 336 14.2.4 主機的host_name被屏蔽 337 14.2.5 連接數過多 337 14.2.6 處理磁盤滿 338 14.2.7 表損壞 338 14.2.8 查看鎖的等待 338 14.2.9 mysqldump備份報錯 339 14.2.10 Table tbl_namedoesnt exist 339 14.2.11 root賬號權限異常 340 14.2.12 SHOW PROCESSLIST輸出中有大量unauthenticated user連接 340 14.2.13 統計information_schema里面的元數據信息緩慢 340 14.2.14 Aborted_connects、Aborted_clients異常升高 341 14.2.15 MySQL server has gone away錯誤 342 14.2.16 信息包過大錯誤 342 14.2.17 內存溢出 343 14.2.18 MySQL單張表為多大才合適,為什么大表會慢 343 14.2.19 MySQL最大能支持多大的并發查詢 344 14.2.20 創建索引出錯 344 14.3 故障和性能問題處理 344 14.3.1 通過減少文件排序和臨時表提高性能 344 14.3.2 通過慢查詢快速定位導致性能問題的SQL 345 14.3.3 定位導致了性能問題的客戶端/應用服務器 345 第15章 運維管理 346 15.1 規模化運維 346 15.1.1 基礎環境 346 15.1.2 虛擬化 348 15.1.3 關于去IOE 349 15.1.4 資源利用和隔離 350 15.1.5 關于備機、備份 351 15.2 服務器采購 352 15.3 運維規則 352 15.3.1 確保基礎網絡穩定可靠 353 15.3.2 應構建性能模型,進行容量規劃 353 15.3.3 優先擴容,再考慮優化 353 15.3.4 保持簡單 353 15.3.5 監控一切 354 15.3.6 處理監控報警 354 15.3.7 不要重復“造輪子” 354 15.3.8 允許出錯 354 15.3.9 設置備用角色 355 15.3.10 仔細閱讀產品文檔 355 15.3.11 畫數據流圖和物理部署圖 355 15.3.12 要有版本控制 356 15.3.13 解決問題要用合適的工具 356 15.3.14 系統工程師要具備定位瓶頸的能力 356 15.3.15 確保無線網絡的穩定 356 15.3.16 確保訪問生產網絡時有備用的訪問方式 357 15.3.17 讓優秀的人做工具/平臺 357 15.3.18 要有分工,每個角色都很重要 357 15.3.19 其他團隊應能輕松獲取生產環境信息 358 15.3.20 由獨立的系統處理代碼性能問題 358 15.3.21 運維人員應介入產品開發的初期 358 15.3.22 關注安全 358 15.3.23 關注配置管理 358 15.3.24 對優先級進行管理 359 15.3.25 不要為了優化而優化 359 15.3.26 不要過早優化 359 15.3.27 要有知識分享系統 359 15.3.28 參加業內技術論壇 359 15.3.29 必須開周會 360 15.3.30 積極支持隊友,和團隊一起成長 360 15.3.31 從公司的利益出發 360 15.3.32 確保每個人都是可以被替換的 360 15.3.33 不要受績效束縛 361 15.3.34 不斷優化流程設計 361 15.3.35 要了解一些財務知識 361 15.3.36 了解其他領域 362 第五部分 性能調優與架構篇 第16章 基礎理論和工具 364 16.1 性能調優理論 364 16.1.1 基礎概念 364 16.1.2 阿姆達爾定律 367 16.1.3 通用擴展定律 370 16.1.4 排隊論 373 16.2 診斷工具 375 16.2.1 OS診斷工具 375 16.2.2 MySQL診斷工具 392 16.3 調優方法論 417 16.3.1 性能調優的誤區 417 16.3.2 調優指引 417 16.3.3 調優步驟 419 16.3.4 調優的方法 420 第17章 應用程序調優 421 17.1 程序訪問調優 421 17.1.1 好的架構和程序邏輯 421 17.1.2 好的監控系統和可視化工具 424 17.1.3 良好的灰度發布和降級功能 425 17.1.4 合理地拆分代碼 425 17.2 應用服務器調優 425 第18章 MySQL Server調優 427 18.1 概述 427 18.2 MySQL的主要參數 428 18.3 MySQL內存優化 433 18.3.1 如何避免使用swap 433 18.3.2 NUMA 434 18.4 MySQL CPU優化 437 18.5 MySQL I/O優化 438 18.5.1 概述 438 18.5.2 選擇合適的I/O大小 439 18.5.3 日志緩沖如何刷新到磁盤 439 18.5.4 事務日志 440 18.5.5 二進制日志 441 18.5.6 InnoDB如何打開和刷新數據、日志文件 441 18.5.7 InnoDB共享表空間和獨立表空間 441 18.5.8 UNDO暴漲的可能性 442 18.5.9 關于doublewrite buffer 442 18.5.10 數據庫文件分類 442 18.5.11 何時運行OPTIMIZE TABLE 443 18.5.12 MySQL?磁盤空間 443 第19章 操作系統、硬件、網絡的優化 445 19.1 基本概念 445 19.2 文件系統的優化 446 19.3 內存 448 19.4 CPU 448 19.5 I/O 449 19.5.1 概述 449 19.5.2 傳統磁盤 449 19.5.3 關于RAID 450 19.5.4 關于SSD 451 19.6 網絡 452 第20章 可擴展的架構 454 20.1 做好容量規劃 454 20.2 擴展和拆分 455 20.3 讀寫分離 457 20.4 切勿過度設計 458 20.5 可擴展的方法 460 20.5.1 優化靜態內容、動態內容 460 20.5.2 網絡優化 461 20.5.3 解耦 461 20.6 使用云數據庫 462 第21章 高可用性 464 21.1 概述 464 21.2 單點故障 465 21.3 MySQL數據庫切換 466 21.4 跨IDC同步 468 第22章 其他產品的選擇 469 22.1 列式數據庫產品 469 22.2 NoSQL產品的選擇 470 22.2.1 概述 470 22.2.2 災難恢復性 472 22.2.3 可維護性 474 22.2.4 可靠性 475 22.2.5 高可用性 475 22.2.6 高性能 476 22.2.7 可擴展性 477 22.2.8 資源利用 479 22.2.9 功能特性實現 481 22.2.10 數據結構 484 22.2.11 選擇數據庫產品的建議 484 參考文獻 487 |
序: |
|