Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構

Netkiller MySQL 手札

MySQL, MariaDB, Percona ...

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


文檔始創于 2010-11-18

電子書最近一次更新于 2020-06-18 23:05:40 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”

$Date: 2013-04-10 15:03:49 +0800 (Wed, 10 Apr 2013) $

2020-06-18 23:05:40


致讀者

Netkiller 系列電子書始於 2000 年,風風雨雨走過20年,將在 2020 年終結,之後不在更新。作出這種決定原因很多,例如現在的閲讀習慣已經轉向短視頻,我個人的時間,身體健康情況等等......

感謝讀者粉絲這20年的支持

雖然電子書不再更新,後面我還會活躍在知乎社區和微信公眾號

目錄

1. 自述
1.1. 寫給讀者
1.2. 作者簡介
1.3. 如何獲得文檔
1.4. 打賞(Donations)
1.5. 聯繫方式
1. MySQL Server
1.1. MySQL Installation
1.1.1. Installation by apt under debian/ubuntu
1.1.1.1. mysql-5.5.21-debian6.0-i686.deb
1.1.2. Installation by source code
1.1.3. MySQL binary distribution
1.1.4. CentOS
1.1.4.1. CentOS 6.2 + MySQL 5.5.25 (RPM)
1.1.4.2. MySQL 8.0
1.1.5. Docker
1.1.6. mysql-admin
1.1.7. Installing MySQL on Linux Using the MySQL Yum Repository
1.1.7.1. MySQL 5.6
1.1.7.2. MySQL 5.7
1.1.8. Firewall
1.1.9. Limit 狀態
1.1.10. 使用 Btrfs 檔案系統存儲mysql數據
1.1.11. Mac OS
1.2. MariaDB
1.2.1. CentOS 6 YUM 安裝 MariaDB
1.2.2. CentOS 7 安裝 MariaDB
1.3. Percona
1.3.1. Percona yum Repository
1.3.2. Percona XtraBackup
1.3.2.1. 安裝 XtraBackup
1.3.2.2. innobackupex
1.3.2.2.1. 備份資料庫
1.3.2.2.2. 恢復資料庫
1.3.2.3. xbstream
1.3.2.4. xtrabackup
1.3.3. Percona Toolkit - MySQL Management Software
1.4. my.cnf
1.4.1. bind-address
1.4.2. 禁用TCP/IP連結
1.4.3. 配置字符集
1.4.4. 最大連結數 max_connections
1.4.5. 預設引擎 storage-engine
1.4.6. max_allowed_packet
1.4.7. skip-name-resolve
1.4.8. timeout
1.4.9. 與複製有關的參數
1.4.9.1. 用於主庫的選項 Master
1.4.9.2. 用於從庫的選項 Slave
1.4.9.3. 逃過錯誤
1.4.10. 與 InnoDB 有關的配置項
1.4.11. EVENT 設置
1.4.12. 日誌
1.4.13. MySQL 5.7 my.cnf 實例
1.4.14. Example for my.cnf
1.5. MySQL Plugin
1.5.1. validate_password
1.5.2. MySQL Images manager
1.5.3. MySQL fifo
1.5.4. 內容輸出到文本插件
1.6. Replication
1.6.1. Master Slave
1.6.1.1. Master
1.6.1.2. Slave
1.6.1.3. Testing
1.6.1.4. 將現有資料庫遷移到主從結構資料庫
1.6.1.5. 主從複製安全問題
1.6.2. Master Master(主主)
1.6.2.1. Master A
1.6.2.2. Master B
1.6.2.3. 將Master A 資料庫 同步到 Master B 兩端資料庫內容保持一致
1.6.2.4. Master A - B 同步兩端資料庫
1.6.2.5. Master A 資料庫解除只讀權限
1.6.2.6. 查看主主的工作狀態
1.6.3. Semisynchronous Replication
1.6.3.1. Master
1.6.3.2. Slave 配置
1.6.3.3. 卸載插件
1.6.3.4. my.cnf
1.6.4. multi-master replication
1.6.5. multi-source replication
1.6.6. 與複製有關的問題
1.6.6.1. 主從不同步問題
1.6.6.2. mysql-bin 清理問題
1.6.6.3. 跳過 Last_Errno
1.6.6.4. 重置Slave
1.6.7. GTID
1.6.7.1. Master
1.6.7.2. Slave
1.7. MySQL Custer
1.7.1. Management node (MGM node)
1.7.2. Data node
1.7.3. SQL node
1.7.4. Starting
1.7.5. Shutdown
1.7.6. Testing
1.8. MySQL Proxy
1.8.1. Ubuntu
1.8.2. CentOS
1.8.2.1. FAQ
1.9. MySQL Router
1.9.1. 安裝 MySQL Router
1.9.2. 配置 MySQL Router
1.9.2.1. 主備配置
1.9.2.2. 負載均衡配置
1.9.3. MySQL Router , Haproxy,LVS 的選擇
1.10. variables
1.10.1. time_zone
1.10.2. sql_mode
1.10.2.1. 設置 sql_mode
1.10.2.2. 查看 sql_mode
1.10.2.3. 兼容早起 MySQL 版本
1.10.2.4. 5.7.16
1.10.3. wait_timeout
1.10.4. table_lock_wait_timeout
1.10.5. low_priority_updates
1.10.6. collation_server
1.10.7. character_set
1.10.8. datadir
1.10.9. plugin_dir
1.10.10. storage_engine
1.10.11. timeout
1.10.12. max_connections
1.11. SHOW COMMAND
1.11.1. 查看版本
1.11.2. status
1.11.2.1. show status
1.11.2.2. show master status
1.11.2.3. show slave status
1.11.2.4. show plugins
1.11.3. show processlist
1.11.4. binary 日誌
1.11.5. 綫程的使用情況
1.11.6. DATABASES
1.11.7. TABLE
1.11.8. 臨時表
1.11.9. 排序統計信息
1.11.10. Key 狀態
1.11.11. FUNCTION
1.11.12. PROCEDURE
1.11.13. TRIGGERS
1.11.14. EVENTS
1.11.15. 引擎(ENGINES)
1.11.16. 字符集(Collation)
1.11.17. SHOW GRANTS
1.11.18. validate_password
1.12. Monitoring
1.12.1. Analysis and Optimization
1.12.1.1. mytop - top like query monitor for MySQL
1.12.1.2. mtop - MySQL terminal based query monitor
1.12.1.3. innotop
1.12.1.4. mysqlreport - A friendly report of important MySQL status values
1.12.1.5. mysqltuner - MySQL configuration assistant
1.12.2. Munin
1.12.3. Cacti
1.12.4. Monitoring MySQL with SNMP
2. Client and Utility Programs
2.1. mysql - the MySQL command-line tool
2.1.1. ~/.my.cnf
2.1.2. 屏幕輸出到檔案
2.1.3. 終端編碼
2.1.4. Unix Socket
2.1.5. 重定向巧用
2.1.6. --sigint-ignore 忽略 Ctrl + C
2.2. mysqldump - a database backup program
2.2.1. 備份資料庫並壓縮檔案
2.2.2. 備份資料庫/表
2.2.3. 備份到檔案
2.2.4. 備份資料庫,無結構,只有數據
2.2.5. 使用完整的insert插入數據
2.2.6. --extended-insert / --skip-extended-insert
2.2.7. --skip-lock-tables
2.2.8. --skip-add-locks
2.2.9. --where
2.2.10. 註釋信息--comments /--skip-comments
2.2.11. 不導出註釋信息
2.2.12. 字符集設置
2.3. mysqladmin - client for administering a MySQL server
2.3.1. reload
2.3.2. 更改密碼
2.3.3. status
2.3.4. process list
2.4. myisamchk — MyISAM Table-Maintenance Utility
2.5. mysqlcheck — A Table Maintenance and Repair Program
2.6. mysqlslap - load emulation client
2.7. mysqldumpslow - Parse and summarize the MySQL slow query log.
2.8. mysql log
3. Database Administration
3.1. User Account Management
3.1.1. Create User
3.1.2. Drop User
3.1.3. Rename User
3.1.4. SET PASSWORD
3.2. Access Privilege System
3.2.1. SHOW GRANTS
3.2.2. show privileges
3.2.3. Grant privileges
3.2.4. Revoke privileges
3.2.5. Show Privileges
3.2.6. MAX_QUERIES_PER_HOUR/MAX_UPDATES_PER_HOUR
3.2.7. Table Privileges
3.2.8. Column Privileges
3.3. Maintenance 資料庫維護
3.3.1. CHECK 檢查表
3.3.2. ANALYZE 分析表
3.3.3. CHECKSUM
3.3.4. OPTIMIZE 優化表
3.3.5. REPAIR 修復
3.4. INFORMATION_SCHEMA
3.4.1. 查詢表欄位
3.4.2. 列出所有觸發器
3.5. Backup and Recovery
3.5.1. Import / Export
3.5.1.1. Export(Backup)
3.5.1.2. Import(Recovery)
3.5.1.3. xml
3.5.1.4. 備份表數據
3.5.1.5. source
3.5.1.6. 使用 mysqlhotcopy 備份 MyISAM 引擎的資料庫
3.5.1.7. AutoMySQLBackup
3.5.1.8. xtrabackup - Open source backup tool for InnoDB and XtraDB.
3.5.1.8.1. Percona yum Repository
3.5.1.8.2. Creating an Incremental Backup
3.5.2. Snapshot Backup
3.5.2.1. LVM Snapshot
3.5.2.2. Btrfs Snapshot
4. DDL - Data Definition Language
4.1. 資料庫管理(Database)
4.1.1. create
4.1.2. drop
4.1.3. Alter
4.1.4. Rename
4.1.5. CHARACTER
4.1.6. show create database
4.2. 表管理(Table)
4.2.1. 數據類型
4.2.1.1. SET 集合類型
4.2.2. create table ... select
4.2.3. modifiy table
4.2.4. TEMPORARY Table
4.2.5. Collate
4.2.6. CHARACTER
4.2.7. DEFAULT
4.2.7.1. AUTO_INCREMENT
4.2.7.2. TIMESTAMP NULL DEFAULT NULL ON UPDATE
4.2.7.3. 表存儲位置(DATA DIRECTORY)
4.2.8. KEY
4.2.8.1. PRIMARY KEY
4.2.9. AUTO_INCREMENT 定義初始值
4.2.10. COMMENT
4.2.11. Engine 存儲引擎
4.2.11.1. 顯示當前資料庫支持引擎
4.2.11.2. 切換引擎
4.2.11.3. FEDERATED
4.2.11.4. BLACKHOLE
4.2.11.5. ARCHIVE
4.2.11.6. CSV
4.3. Partitioning
4.3.1. RANGE
4.3.2. LIST
4.3.3. HASH
4.3.3.1. LINEAR HASH
4.3.4. KEY分區
4.3.5. Subpartitioning
4.3.6. 分區管理
4.3.6.1. 新增分區
4.3.6.2. 刪除分區
4.3.6.3. 重建分區
4.3.6.4. 分區維護
4.3.7. EXPLAIN PARTITIONS
4.3.8. SHOW CREATE TABLE
4.3.9. INFORMATION_SCHEMA.partitions 表
4.3.10. 分區數據操作
4.4. Index
4.4.1. SHOW INDEX
4.4.2. CREATE INDEX
4.4.3. DROP INDEX
4.4.4. rebuild
4.5. 外鍵(Foreign Key)
4.5.1. FOREIGN KEY (RESTRICT)
4.6. 視圖(View)
4.7. 存儲過程(PROCEDURE)
4.7.1. 存儲程序
4.7.2. EXECUTE 執行 SQL
4.7.3. PREPARE 傳遞參數
4.7.4. 存儲過程返回數據
4.7.5. 結果集轉JSON
4.7.6. 例子·過程返回結果
4.8. 函數
4.8.1. TIMESTAMP TO ISO8601
4.9. 觸發器(Trigger)
4.9.1. create trigger
4.9.1.1. Update 更新出發
4.9.1.2. Delete 刪除出發
4.9.1.3. Insert 插入出發
4.9.2. drop trigger
4.9.3. show triggers
4.9.3.1. SHOW CREATE TRIGGER
4.9.4. EXAMPLE
4.9.4.1. BEFORE/AFTER
4.9.4.2. UUID
4.9.4.3. CALL PROCEDURE
4.10. 事件調度器(EVENT)
4.10.1. 啟用 EVENT
4.10.2. 創建 EVENT
4.10.3. 禁用/啟用
4.10.4. show events
4.10.5. 實例·每月創建一個表
5. DML (Data Manipulation Language)
5.1. INSERT
5.1.1. INSERT INTO ... SELECT
5.1.2. INSERT IGNORE
5.1.3. INSERT...ON DUPLICATE KEY UPDATE
5.2. REPLACE
5.3. DELETE
5.3.1. 刪除重複數據
6. SQL Statement Syntax
6.1. DISTINCT
6.2. group by
6.3. HAVING
6.4. REGEXP
6.5. IN / NOT IN
6.6. ALL / Any
6.7. exists, not exists
6.8. UNION
6.8.1. UNION ALL
6.8.2. 兩張表欄位不對等解決方法
6.9. OUTFILE/LOAD DATA INFILE
6.9.1. Export data to CSV from MySQL
6.9.2. Import data from CSV file.
6.10. CASE Syntax
6.11. MySQL 專有命令
6.11.1. SQL_NO_CACHE
6.11.2. SIGNAL Syntax
6.12. SQL 92
7. Functions and Operators
7.1. COUNT
7.2. group_concat() 列傳行
7.3. UUID()
7.4. String
7.4.1. LEFT/RIGHT
7.4.2. RPAD/LPAD
7.4.3. CONCAT
7.4.4. CONCAT_WS
7.4.5. 連結所有欄位
7.4.6. GROUP_CONCAT
7.4.7. replace
7.4.8. SUBSTRING
7.4.9. SUBSTRING_INDEX
7.4.10. AES_ENCRYPT / AES_DECRYPT
7.5. Date and Time
7.5.1. year/month/day hour:minite:second
7.5.2. Unix time
7.5.3. DATE_FORMAT
7.5.4. DATE_SUB/DATE_ADD
7.5.4.1. DATE_ADD
7.5.5. datediff / timediff
7.6. 數值函數
7.6.1. cast 類型轉換
7.6.2. truncate 保留小數位數
7.6.3. MOD 求余
7.7. Control Flow Functions
8. DCL (Data Control Language)
8.1. 鎖
8.1.1. 共享鎖
8.1.2. 排他鎖
8.1.3. 鎖
8.1.3.1. 表的加鎖與解鎖
8.1.3.2. 禁止查詢
8.1.4. 鎖等待與超時
8.1.4.1. 超時設置
8.1.4.2. select for update nowait
8.2. 事務處理和鎖定語句
8.2.1. 事務隔離級別
8.2.2. 事務所用到的表
8.2.3. 解決更新衝突
8.2.4. SAVEPOINT
9. Optimization
9.1. 打開表的數量
9.2. Buffering and Caching
9.2.1. Query Cache SELECT Options
9.3. where 優化
9.4. SHOW PROFILE Syntax SQL性能分析器
9.5. PROCEDURE ANALYSE()
10. MySQL Connectors
10.1. JDBC
10.2. ODBC
10.3. MySQL native driver for PHP - mysqlnd
10.4. python-mysqldb
11. MySQL GUI/Web Manager
11.1. HeidiSQL
11.2. Toad for MySQL Freeware
11.3. phpMyAdmin - MySQL web administration tool
11.4. Maatkit Essential command-line utilities for MySQL
12. Miscellaneous
12.1. Multi-Master Replication Manager for MySQL
12.2. MHA
12.3. HandlerSocket
12.4. Maatkit
12.5. Mroonga
12.6. Amoeba
13. FAQ
13.1. Reset root password 重置MySQL root密碼
13.1.1. MySQL 5.7.x
13.1.2. MySQL 8.0
13.2. 資料庫內容替換
13.3. 查看錯誤代碼
13.3.1. ERROR 1153 (08S01) at line 3168: Got a packet bigger than 'max_allowed_packet' bytes
13.3.2. ERROR 1129 (00000): Host 'XXXXXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
13.4. 臨時表是否需要建索引
13.5. Kill 腳本
13.6. ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
13.7. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
13.8. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
13.9. 重新整理AUTO_INCREMENT欄位
13.10. 轉換 latin1 到 UTF-8
13.11. this is incompatible with sql_mode=only_full_group_by
13.12. [Warning] Changed limits: max_open_files: 5000 (requested 20480)
13.13. ERROR 1364: 1364: Field 'id' doesn't have a default value
13.14. ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
13.15. ERROR 1086 (HY000): File '/var/lib/mysql-files/order.txt' already exists
13.16. ERROR 1415: Not allowed to return a result set from a trigger
13.17. Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such fileor directory
13.18. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

表格清單

8.1. 更新丟失演示
8.2. 防止更新丟失加鎖演示

範例清單

1.1. my.cnf
1.2. my.cnf
1.3. my.cnf
4.1. BEFORE/AFTER
4.2. uuid()
6.1. SQL ANY example
9.1. SQL_CACHE 測試
9.2. SHOW PROFILE Syntax