编码
Linux 上修改 /etc/my.cnf。windows 上 my.ini,一般会在安装目录的根目录。
Linux 用 rpm 包安装的 MySQL 没有 /etc/my.cnf 文件,默认用 /usr/share/mysql/my-medium.cnf,复制 /usr/share/mysql 目录下的 .cnf 文件到 /etc 目录,并改名为 my.cnf 即可。
[client] default-character-set=utf8 [mysqld] character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci [mysql] default-character-set=utf8
查看编码,修改编码(已创建的表或库)
SHOW VARIABLES LIKE '%char%'; -- 修改已创建数据库的字符集 alter database mydb character set 'utf8'; -- 修改已创建数据表的字符集 alter table mytbl convert to character set 'utf8'; -- 已经乱码数据,无论是修改 mysql 配置文件或是修改库、表字符集,都无法改变已经变成乱码的数据。 -- 只能删除数据重新插入或更新数据才可以完全解决
大小写不敏感
Windows 系统默认大小写不敏感,但 Linux 系统是大小写敏感的
-- 查看 show variables like '%lower_case_table_names%' -- 0 大小写敏感 -- 1 大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于 sql 语句都是转换为小写对表和 DB 进行查找 -- 2 创建的表和 DB 依据语句上格式存放,凡是查找都是转换为小写进行
修改 my.cnf,然后重启服务器
[mysqld] lower_case_table_names = 1
注:如果要设置属性为大小写不敏感,要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则将找不到数据库名。
时区
SQL 方式
-- 查看时间 SELECT NOW(); -- 查看时区 SHOW VARIABLES LIKE '%time_zone%'; -- 临时修改,重启 MySQL 服务后失效 SET GLOBAL time_zone='+8:00'; flush privileges;
修改 my.cnf 方式,需重启 MySQL 服务
[mysqld] default-time_zone = '+8:00
开启查询日志
在 my.ini 配置文件的 [mysqld] 下增加:
slow_query_log=TRUE slow_query_log_file=/tmp/slow_query_log.txt long_query_time=3
重启 mysql 服务,查询是否生效
show variables like '%quer%';
主从
# 保证主从一致性,建议两个都设置为 1
sync_binlog
innodb_fush_log_at_trx_commit
缓存
# 建议 4M 或 8M,可以应付 sort/join/read sort/join/read/read rnd buffer # 建议 16M 或 32M,经常产生临时表可以加大一点 128M tmp/heap table # 1G-2G innodb_buffer_pool_size
其它配置
# 0.01(10毫秒)-0.1(100毫秒) 范围,记录超过时间的 SQL。设置 0,记录所有的 SQL long_query_time # 记录没有使用索引的 SQL,on/60,每分钟记录多少条 log_queries_not_using_indexes log_throttle_queries_not_using_indexes # 交互模式的超时时间,建议 300-600 秒 interactive_timeout wait_timeout # 表锁的超时时间,默认一年,建议 30-60 分钟 lock_wait_timeout # 设定时区 time_zone # 是否开启线程池 thread_handling
# 默认 75%,建议 50% innodb_max_dirty_pages_pct # 默认 0,不用改动 innodb_thread_concurrency # 行锁等待时间,默认 50 秒,建议设置 5-20 秒 innodb_lock_wait_timeout # 默认 0,不用改动 innodb_max_purge_lag # 建议 2G/3 组 innodb_log_file_size innodb_log_files_in_group # innodb 最大 io innodb_io_capacity innodb_io_capacity_max
https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
https://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
中文 5.1:https://dev.mysql.com/doc/index-archive.html
中文 5.1 在线:https://jhxxb.gitee.io/blog/refman-5.1-zh.html-chapter/index.html