查看配置
# 要查看默认值和自定义配置的值 mysqld --verbose --help # 查看 mysql 正在使用的参数值 mysqladmin variables # 只查看默认值 mysqld --no-defaults --verbose --help
常用配置说明
参考:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
客户端配置
[client] # 客户端的默认连接端口 port=3306 # 本地通信使用的套接字 socket=/run/mysqld/mysqld.sock # 客户端默认编码 default-character-set=utf8mb4
服务端配置
[mysqld] # 监听端口 port=3306 # 本地通信使用的套接字 socket=/run/mysqld/mysqld.sock # pid 文件 pid-file=/run/mysqld/mysqld.pid # 记录启动、关闭、警告、错误等日志 log_error=/var/log/mysql/error.log # 启动用户 user=mysql # 数据库程序安装目录 basedir=/usr # 数据库文件存放目录 datadir=/data # 临时目录 tmpdir=/tmp # 跳过 MyISAM 数据表外部锁定 # MyISAM 数据表在多进程共用同一个数据库目录时访问需要锁定 skip-external-locking # 禁用域名解析 skip-name-resolve # 禁用端口访问 #skip-networking # 绑定 ip 地址 bind-address=0.0.0.0 # MyISAM 存储引擎的线程共享索引缓冲区大小 key_buffer_size=64M # 并发连接时缓存打开表的最大总数 # 每当 MySQL 访问一个表时,如果表缓冲区中还有空间,该表就被打开并放入其中,以此加速访问表 # 通过 SHOW GLOBAL STATUS LIKE 'Open%tables' 检查峰值时间的状态值 Open_tables 和 Opened_tables 来判断是否需要增加 table_open_cache 的值 # 推荐设置值 # Open_tables / Opened_tables >= 0.85 # Open_tables / table_open_cache <= 0.95 table_open_cache=512 # 设置 order by 和 group by 排序操作缓冲区大小 sort_buffer_size=1M # 服务端最大允许接收的数据包大小 max_allowed_packet=1M # 数据包缓冲区初始化大小,会根据需要最大增长至 max_allowed_packet net_buffer_length=8K # 对 MyISAM 数据表进行顺序扫描时每个线程的缓冲区大小 read_buffer_size=1M # 对任何数据表随机扫描时每个线程的缓冲区大小 read_rnd_buffer_size=512K # 在 REPAIR TABLE 期间对 MyISAM 索引进行排序或使用 CREATE INDEX 或 ALTER TABLE 创建索引时分配的缓冲区大小 myisam_sort_buffer_size=16M # 线程池大小 thread_cache_size=16 # 对于读多写少的环境设置 1 启用查询缓存会对性能有所提升 # 0 默认值,禁用查询缓存 # 1 缓存所有以 SELECT 开头的可缓存查询结果,SELECT SQL_NO_CACHE 除外 # 2 仅缓存以 SELECT SQL_CACHE 开头的可缓存查询结果 query_cache_type=1 # 启用查询缓存时,会缓存 SELECT 语句和对应的结果集,设置查询缓存的大小 query_cache_size=16M # 内部内存临时表的最大大小,超出限制时会自动将其转换为磁盘上的临时表 tmp_table_size=32M # 默认为 false 情况下 # 如果 TIMESTAMP 列未指定 NULL 属性,该列会自动添加 NOT NULL 属性,如果向列中插入 NULL 会自动设置为 CURRENT_TIMESTAMP 值 # 如果表中第一个 TIMESTAMP 列未指定 NULL 属性或默认值,也没有指定 ON UPDATE 语句,该列会自动添加 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 属性 # 非第一个 TIMESTAMP 列,如果没有指定未指定 NULL 属性和默认值,该列会自动添加 DEFAULT '0000-00-00 00:00:00'属性 explicit_defaults_for_timestamp=true # 最大并发连接数 max_connections=500 # 允许客户端错误连接最大次数,超过将被拉黑 max_connect_errors=100 # 最大打开文件数 open_files_limit=65535 # 服务器 ID,互相通信的服务器 ID 不允许重复 server-id=1 # 二进制日志,相对于 datadir 路径 log-bin=/var/log/mysql/mysql-bin #relay_log=/var/log/mysql/mysql-relay-bin # 二进制日志格式 binlog_format=mixed # 二进制日志保留天数 expire_logs_days=14 # 设置自增的增量 auto_increment_increment=1 # 设置自增起始值 auto_increment_offset=1 # 默认新数据表的存储引擎 default_storage_engine=InnoDB # 每个数据库的每个表都会生成一个数据空间(.ibd 文件) innodb_file_per_table=1 # 如果不指定,则所有 InnoDB TableSpace 文件只能存放在 datadir 中 # 如果指定为空,则可为 InnoDB TableSpace 文件指定不同路径 # 如果指定路径,则所有 InnoDB TableSpace 文件只能存放在指定路径中 #innodb_data_home_dir= # 设置存储 InnoDB 数据表的表空间存放位置、最大长度等属性 # 每个表空间文件规则用 ; 间隔 # 最后一个表空间可以使用 autoextend 和 max:n 属性 innodb_data_file_path=ibdata1:10M:autoextend # InnoDB 缓存池大小 innodb_buffer_pool_size=128M # 指定 InnoDB 事务日志(如 ib_logfile0、ib_logfile1)存放路径 innodb_log_group_home_dir=/var/log/mysql # 每个 InnoDB 事务日志大小 innodb_log_file_size=64M # InnoDB 事务日志缓冲区大小 innodb_log_buffer_size=8M # InnoDB 事务日志同步磁盘时机 # 0 每次 COMMIT 将事务日志写进了日志缓冲区,然后每隔一秒将缓冲区的事务日志同步到磁盘,性能最好,但 mysqld 进程崩溃会导致上一秒钟所有事务数据的丢失 # 1 每次 COMMIT 将事务日志同步到磁盘,mysqld 崩溃不会丢失数据,但频繁的 IO 操作导致效率低下 # 2 每次 COMMIT 将事务日志写进了日志缓冲区并同时写入系统缓冲区,然后每隔一秒将缓冲区的事务日志同步到磁盘, mysqld 崩溃时不会丢失日志,折衷的举措 innodb_flush_log_at_trx_commit=1 # 如果某个事务在等待 n 秒后仍未获得所需要的资源,就执行 ROLLBACK 回滚该事务 innodb_lock_wait_timeout=50 # 默认的编码 character-set-server=utf8mb4 # 默认的排序规则 collation-server=utf8mb4_general_ci
其他配置
# mysqldump 工具的配置 [mysqldump] quick max_allowed_packet=16M # mysql 工具的配置 [mysql] # 自动补全表名、字段名 auto-rehash prompt="\\u@\\h:\\d \\p>" default-character-set=utf8mb4 # myisamchk 工具的配置 [myisamchk] key_buffer_size=64M sort_buffer_size=1M read_buffer=2M write_buffer=2M # mysqlhotcopy 工具的配置 [mysqlhotcopy] interactive-timeout
本文标题:mysql常用配置说明
版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
上一篇:PHP 实现 RSA 公私钥加密