MySQL 有许多配置选项,可以用来调整其行为以满足特定的需求。以下是一些常见的配置选项,除了大小写敏感之外,这些配置选项也经常被调整:
1. 字符集和排序规则
- character_set_server: 设置服务器的默认字符集。
- collation_server: 设置服务器的默认排序规则。
- character_set_client: 设置客户端发送给服务器的字符集。
- character_set_connection: 设置连接层的字符集。
- character_set_results: 设置结果集的字符集。
2. 缓冲区和缓存
- innodb_buffer_pool_size: InnoDB 缓冲池的大小,用于缓存数据和索引页。
- query_cache_size: 查询缓存的大小,用于缓存 SELECT 查询的结果。
- key_buffer_size: MyISAM 表的键缓冲区大小。
- sort_buffer_size: 为每个需要进行排序的线程分配的缓冲区大小。
- read_buffer_size 和 read_rnd_buffer_size: 用于全表扫描和排序扫描的缓冲区大小。
3. 日志和恢复
- log_bin: 启用二进制日志,用于复制和恢复。
-
binlog_format: 二进制日志格式,可以是
STATEMENT
,ROW
, 或MIXED
。 - expire_logs_days: 二进制日志自动删除的时间(天数)。
- innodb_log_file_size: InnoDB 事务日志文件的大小。
- innodb_flush_log_at_trx_commit: 控制事务提交时日志刷新的行为。
4. 连接和线程
- max_connections: 允许的最大并发连接数。
- thread_cache_size: 线程缓存的大小,用于快速响应新连接。
- wait_timeout: 服务器关闭非交互连接之前等待活动的秒数。
- interactive_timeout: 服务器关闭交互连接之前等待活动的秒数。
5. 性能优化
- skip_name_resolve: 禁用 DNS 解析,提高连接速度。
- table_open_cache: 打开表的缓存大小。
- tmp_table_size: 内存中临时表的最大大小。
- max_heap_table_size: 内存表的最大大小。
- join_buffer_size: 用于全连接操作的缓冲区大小。
6. 安全性
- secure-file-priv: 限制 LOAD DATA 和 SELECT … INTO OUTFILE 操作的目录。
- local-infile: 控制是否允许客户端使用 LOAD DATA LOCAL 语句。
- old_passwords: 控制是否使用旧的密码哈希算法。
7. 存储引擎
-
default_storage_engine: 默认的存储引擎,例如
InnoDB
或MyISAM
。 - innodb_file_per_table: 每个 InnoDB 表使用单独的文件。
8. 其他
- lower_case_table_names: 控制表名是否转换为小写(Windows 上默认为 1,Linux 上默认为 0)。
- datadir: 数据文件的存储目录。
- socket: 本地客户端连接使用的 Unix 域套接字文件。
- port: MySQL 服务器监听的 TCP/IP 端口号。
配置文件
这些配置选项通常在 MySQL 的配置文件 my.cnf
或 my.ini
中设置。配置文件的位置可能因操作系统和安装方式而异,常见的位置包括:
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
-
C:\ProgramData\MySQL\MySQL Server X.X\my.ini
(Windows)
示例配置
以下是一个简单的 my.cnf
示例,展示了如何设置一些常用的配置选项:
[mysqld]
# 基本设置
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
port=3306
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 缓冲区和缓存
innodb_buffer_pool_size=1G
query_cache_size=0
key_buffer_size=16M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=8M
# 日志和恢复
log_bin=mysql-bin
binlog_format=row
expire_logs_days=7
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=1
# 连接和线程
max_connections=150
thread_cache_size=10
wait_timeout=28800
interactive_timeout=28800
# 性能优化
skip_name_resolve=ON
table_open_cache=2000
tmp_table_size=16M
max_heap_table_size=16M
join_buffer_size=2M
# 安全性
secure-file-priv=/var/lib/mysql-files
local-infile=0
# 存储引擎
default_storage_engine=InnoDB
innodb_file_per_table=ON