MySQL 8.x 的配置说明(高级选项和新特性)

MySQL 8 提供了许多配置选项,允许用户根据具体需求调整数据库服务器的行为。以下是一些常见的配置文件属性及其说明,这些配置通常位于 /etc/my.cnf/etc/mysql/my.cnf 文件中,以及 /etc/my.cnf.d//etc/mysql/my.cnf.d/ 目录下的文件中。

基本配置

  • [mysqld]
    此部分用于 mysqld 服务的选项。

  • port = 3306
    MySQL 服务器监听的端口号,默认是 3306。

  • bind-address = 0.0.0.0
    服务器绑定的IP地址。使用 0.0.0.0 表示接受所有IPv4地址的连接。

  • datadir = /var/lib/mysql
    数据库文件的存储目录。

  • socket = /var/lib/mysql/mysql.sock
    MySQL 进程间通信使用的 socket 文件路径。

安全配置

  • skip-grant-tables
    在没有密码的情况下启动 MySQL,这对于丢失 root 密码的恢复过程很有用。生产环境中应谨慎使用。

  • ssl-cipher =
    用于指定 SSL 加密时使用的密码套件。

  • skip-networking
    禁止通过网络连接到 MySQL。如果数据库只通过本地应用访问,启用此选项可以增强安全性。

  • require_secure_transport = ON
    要求客户端连接使用安全传输(SSL/TLS)。如果你的数据库连接需要经过不安全的网络,考虑启用此选项。

性能调优

  • innodb_buffer_pool_size = 128M
    InnoDB 存储引擎的缓冲池大小。这是影响 MySQL 性能最重要的设置之一。

  • innodb_log_file_size = 50M
    InnoDB 日志文件的大小,影响数据库的恢复时间和写入性能。

  • innodb_flush_log_at_trx_commit = 1
    控制日志写入磁盘的策略,平衡性能和数据完整性。

  • max_connections = 151
    允许的最大连接数。根据系统资源和需求进行调整。

  • query_cache_size = 0
    在 MySQL 8.0 中,查询缓存被默认禁用(设置为0),因为它可能导致性能问题。

  • table_open_cache = 2000
    打开表的数量的缓存大小。增大此值可以提高数据库操作的速度,特别是在操作许多表的应用中。

  • thread_cache_size
    用于缓存线程的数量。合理设置此值可以减少线程创建和销毁的开销,提升系统性能。

  • tmp_table_sizemax_heap_table_size
    控制内存临时表的最大大小。对于执行大量复杂查询(如大量的JOIN操作)的数据库,增加这些值可能会提高性能。

  • innodb_flush_method
    设置 InnoDB 的数据写入磁盘的方法。不同的设置会影响性能和数据的一致性。

  • innodb_lock_wait_timeout
    InnoDB 在回滚事务前等待获取锁的时间。对于高并发的应用,可能需要调整此值以减少锁争用。

日志管理

  • general_log = 0
    是否启用通用查询日志。默认关闭,因为它会记录所有的 MySQL 查询并影响性能。

  • slow_query_log = 1
    是否启用慢查询日志,用于记录执行时间超过 long_query_time 秒的查询。

  • slow_query_log_file = /var/log/mysql/mysql-slow.log
    慢查询日志文件的路径。

  • long_query_time = 2
    定义什么样的查询应该被认为是慢查询,单位是秒。

  • log_error
    错误日志文件的路径,用于记录启动、运行或停止mysqld时遇到的问题。

  • audit_log_policy
    配置审计日志策略,允许记录数据库活动,对于满足合规要求非常有用。

复制相关

  • server-id = 1
    服务器的唯一ID,复制设置中需要。

  • log_bin = /var/log/mysql/mysql-bin.log
    二进制日志文件的位置,用于复制和数据恢复。

  • binlog_format = row
    二进制日志的格式,rowstatementmixed 之间选择。

其他配置

  • character-set-server = utf8mb4
    服务器的默认字符集,utf8mb4 是推荐的字符集,支持更多的 Unicode 字符。

  • collation-server = utf8mb4_unicode_ci
    服务器的默认排序规则。

  • lower_case_table_names
    设置表名的大小写敏感性。在 Windows 上通常设置为 1,而在 Linux 上设置为 0 或 2,根据文件系统的区分大小写能力而定。

  • max_allowed_packet
    定义 MySQL 网络协议中单个数据包的最大大小。对于大量大型查询或大型行操作,可能需要增加此值。

  • group_replication
    配置组复制,作为 MySQL 高可用性和扩展性解决方案的一部分。

备份和恢复

  • expire_logs_days
    自动删除二进制日志文件的天数。设置此参数可以帮助管理磁盘空间。

  • binlog_expire_logs_seconds
    MySQL 8.x 引入的新配置项,以秒为单位自动删除二进制日志文件,提供比 expire_logs_days 更精细的控制。

复制和高可用性

  • gtid_mode = ON
    启用全局事务标识符(GTID),简化复制和故障恢复过程。

  • enforce_gtid_consistency
    确保只有可以安全创建GTID的事务才会执行,有助于保持复制的一致性。

  • slave_parallel_typeslave_parallel_workers
    在从服务器上配置并行复制,可以显著提高复制性能和吞吐量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值