Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Search | Email

Netkiller MySQL 手札

MySQL, MariaDB, Percona ...

Mr. Neo Chan, 陈景峯(BG7NYT)


中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890


文档始创于2010-11-18

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

微信扫描二维码进入 Netkiller 微信订阅号

QQ群:128659835 请注明“读者”

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


目录

1. 自述
1.1. 系列文档
1.2. 作者简介
1.3. 写给读者
1.4. 文档下载
1.5. 打赏(Donations)
1.5.1. 微信(Wechat)
1.5.2. 支付宝(Alipay)
1.5.3. PayPal Donations
1.5.4. 银行(Bank)
1. MySQL Server
1.1. MySQL Installation
1.1.1. Installation by apt-get under debian/ubuntu
1.1.2. Installation by source code
1.1.3. MySQL binary distribution
1.1.4. mysql-5.5.21-debian6.0-i686.deb
1.1.5. CentOS 6.2 + MySQL 5.5.25 (RPM)
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.2. MariaDB
1.2.1. CentOS YUM 安装 MariaDB
1.2.2. MariaDB Audit Plugin
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.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. SHOW COMMAND
1.5.1. 查看版本
1.5.2. status
1.5.2.1. show status
1.5.2.2. show master status
1.5.2.3. show slave status
1.5.2.4. show plugins
1.5.3. show processlist
1.5.4. variables
1.5.4.1. sql_mode
1.5.4.2. wait_timeout
1.5.4.3. table_lock_wait_timeout
1.5.4.4. low_priority_updates
1.5.4.5. character_set
1.5.4.6. datadir
1.5.4.7. plugin_dir
1.5.4.8. storage_engine
1.5.4.9. timeout
1.5.4.10. max_connections
1.5.5. binary 日志
1.5.6. DATABASES
1.5.7. TABLE
1.5.8. FUNCTION
1.5.9. PROCEDURE
1.5.10. TRIGGERS
1.5.11. EVENTS
1.5.12. 引擎(ENGINES)
1.5.13. 字符集(Collation)
1.5.14. SHOW GRANTS
1.6. MySQL Plugin
1.6.1. validate_password
1.6.2. MySQL Images manager
1.6.3. MySQL fifo
1.7. Replication
1.7.1. Master Slave
1.7.1.1. Master
1.7.1.2. Slave
1.7.1.3. Testing
1.7.1.4. 将现有数据库迁移到主从结构数据库
1.7.1.5. 主从复制安全问题
1.7.2. Master Master(主主)
1.7.2.1. Master A
1.7.2.2. Master B
1.7.2.3. 将Master A 数据库 同步到 Master B 两端数据库内容保持一致
1.7.2.4. Master A - B 同步两端数据库
1.7.2.5. Master A 数据库解除只读权限
1.7.2.6. 查看主主的工作状态
1.7.3. Semisynchronous Replication
1.7.3.1. Master
1.7.3.2. Slave 配置
1.7.3.3. 卸载插件
1.7.3.4. my.cnf
1.7.4. multi-master replication
1.7.5. multi-source replication
1.7.6. 与复制有关的问题
1.7.6.1. 主从不同步问题
1.7.6.2. mysql-bin 清理问题
1.7.6.3. 跳过 Last_Errno
1.7.6.4. 重置Slave
1.7.7. GTID
1.7.7.1. Master
1.7.7.2. Slave
1.8. MySQL Custer
1.8.1. Management node (MGM node)
1.8.2. Data node
1.8.3. SQL node
1.8.4. Starting
1.8.5. Shutdown
1.8.6. Testing
1.9. MySQL Proxy
1.9.1. Ubuntu
1.9.2. CentOS
1.9.2.1. FAQ
1.10. MySQL Router
1.10.1. 安装 MySQL Router
1.10.2. 配置 MySQL Router
1.10.2.1. 主备配置
1.10.2.2. 负载均衡配置
1.10.3. MySQL Router , Haproxy,LVS 的选择
1.11. Monitoring
1.11.1. Analysis and Optimization
1.11.1.1. mytop - top like query monitor for MySQL
1.11.1.2. mtop - MySQL terminal based query monitor
1.11.1.3. innotop
1.11.1.4. mysqlreport - A friendly report of important MySQL status values
1.11.1.5. mysqltuner - MySQL configuration assistant
1.11.2. Munin
1.11.3. Cacti
1.11.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. 使用完整的insert插入数据
2.2.4. --extended-insert / --skip-extended-insert
2.2.5. --skip-lock-tables
2.2.6. --skip-add-locks
2.2.7. --where
2.2.8. 注释信息--comments /--skip-comments
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. Backup and Recovery
3.4.1. Import / Export
3.4.1.1. Export(Backup)
3.4.1.2. Import(Recovery)
3.4.1.3. xml
3.4.1.4. 备份表数据
3.4.1.5. source
3.4.1.6. 使用 mysqlhotcopy 备份 MyISAM 引擎的数据库
3.4.1.7. AutoMySQLBackup
3.4.1.8. xtrabackup - Open source backup tool for InnoDB and XtraDB.
3.4.2. Snapshot Backup
3.4.2.1. LVM Snapshot
3.4.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. 表存储位置(DATA DIRECTORY)
4.2.8. KEY
4.2.8.1. PRIMARY KEY
4.2.9. COMMENT
4.2.10. Engine
4.2.10.1. FEDERATED
4.2.10.2. BLACKHOLE
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. 函数
4.8. 触发器(Trigger)
4.8.1. create trigger
4.8.2. drop trigger
4.8.3. show triggers
4.8.4. EXAMPLE
4.8.4.1. BEFORE/AFTER
4.8.4.2. UUID
4.8.4.3. CALL PROCEDURE
4.9. 事件调度器(EVENT)
4.9.1. 启用 EVENT
4.9.2. 创建 EVENT
4.9.3. 禁用/启用
4.9.4. show events
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.9. OUTFILE/LOAD DATA INFILE
6.9.1. Export data to CSV from MySQL
6.9.2. Import data from CSV file.
6.10. MySQL 专有命令
6.10.1. SQL_NO_CACHE
6.10.2. SIGNAL Syntax
6.11. SQL 92
7. Functions and Operators
7.1. COUNT
7.2. UUID()
7.3. String
7.3.1. LEFT/RIGHT
7.3.2. RPAD/LPAD
7.3.3. CONCAT
7.3.4. GROUP_CONCAT
7.3.5. replace
7.3.6. SUBSTRING
7.3.7. SUBSTRING_INDEX
7.3.8. AES_ENCRYPT / AES_DECRYPT
7.4. Date and Time
7.4.1. year/month/day hour:minite:second
7.4.2. Unix time
7.4.3. DATE_FORMAT
7.4.4. DATE_SUB/DATE_ADD
7.4.4.1. DATE_ADD
7.4.5. datediff / timediff
7.5. 数值函数
7.5.1. cast 类型转换
7.5.2. truncate 保留小数位数
7.5.3. MOD 求余
7.6. 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. Buffering and Caching
9.1.1. Query Cache SELECT Options
9.2. where 优化
9.3. SHOW PROFILE Syntax SQL性能分析器
9.4. 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.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)

表格清单

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