本文最后更新于 2024-07-23,文章内容可能已经过时。

需要注意, 数据缓冲区大小 配置

主库配置文件

[mysqld]

user=mysql
basedir=/home/application/mysql/app
datadir=/home/application/mysql/data
default-storage-engine=INNODB


character-set-server=utf8mb4
collation_server = utf8mb4_general_ci

#只能用IP地址检查客户端的登录,不用主机名,跳过域名解析
skip-name-resolve=1

#日志时间
log_timestamps=SYSTEM
default-time-zone = '+8:00'


#慢日志
long_query_time=3
slow_query_log=ON
slow_query_log_file=/home/application/mysql/logs/slow_query.log
#不记录未使用索引的查询到慢查询日志中
log_queries_not_using_indexes = 0
#管理员执行的慢查询语句记录到慢查询日志中
log_slow_admin_statements = 1
#将从服务器执行的慢查询语句记录到慢查询日志中
log_slow_slave_statements = 1
#当未使用索引的查询数量达到10次时,开始将这些查询记录到慢查询日志中
log_throttle_queries_not_using_indexes = 10


#通用日志
#general_log=1
#general_log_file=/home/application/mysql/logs/mysql_general.log

#错误日志
log-error=/home/application/mysql/logs/mysqld.log



# InnoDB存储引擎的配置
innodb_file_per_table = 1
#InnoDB系统表空间的初始数据文件的名称、大小以及自动扩展的设置
innodb_data_file_path = ibdata1:500M:autoextend:max:10G
#InnoDB临时表空间的初始数据文件的名称、大小以及自动扩展的设置
innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G


# 数据缓冲区
#专用服务器可以设为内存70%以上,建议innodb_buffer_pool_size设置为系统内存的50%,或更低
innodb_buffer_pool_size = 8G
innodb_log_buffer_size = 4M
table_open_cache = 16384
table_definition_cache =16384


#binlog配置
server_id=17
log-bin=mysql-bin
max_binlog_size = 100M
binlog_format=row
log_slave_updates
expire_logs_days=7


#disable_ssl
skip_ssl
port=3306
socket=/tmp/mysql.sock
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=512M

[mysql]
socket=/tmp/mysql.sock
default-character-set = utf8mb4


[client]
default-character-set = utf8mb4

从库配置文件,补充

#主从
server_id=3
#从库,只写入主库来的数据,除此之外包含root用户都没有写权限,只有读
super-read-only

innodb 补充

关于innodb 这块的调优配置,仅供参考,结合自己的环境

可以优化InnoDB存储引擎的性能,提高数据库的稳定性和可靠性。建议在调整参数之前做好备份,并根据实际情况逐步调整参数值,以达到最佳的性能配置。

innodb_io_capacity = 1500: 这个参数表示InnoDB存储引擎的I/O容量,即InnoDB可以处理的I/O操作的数量。

innodb_io_capacity_max = 3000: 这个参数表示InnoDB存储引擎的最大I/O容量,即InnoDB可以处理的最大I/O操作的数量。

innodb_buffer_pool_size = 40G: 这个参数表示InnoDB缓冲池的大小,即InnoDB用于缓存数据和索引的内存大小。

innodb_buffer_pool_instances = 8: 这个参数表示InnoDB缓冲池实例的数量,用于将缓冲池分割为多个部分,以便更好地利用多核处理器。

innodb_buffer_pool_load_at_startup = 1: 这个参数表示是否在启动时加载InnoDB缓冲池。

innodb_buffer_pool_dump_at_shutdown = 1: 这个参数表示是否在关闭时将InnoDB缓冲池转储到磁盘。

innodb_lru_scan_depth = 2000: 这个参数表示InnoDB缓冲池的LRU链表扫描深度,用于确定要从缓冲池中移除的页数。

innodb_lock_wait_timeout = 50: 这个参数表示InnoDB存储引擎等待锁的超时时间,即当一个事务等待锁超过这个时间时,将会超时。

innodb_flush_method = O_DIRECT: 这个参数表示InnoDB存储引擎的刷新方法,O_DIRECT表示直接IO,绕过操作系统缓存。

innodb_log_file_size = 2G: 这个参数表示InnoDB日志文件的大小,即每个日志文件的大小限制。

innodb_log_files_in_group = 3: 这个参数表示InnoDB日志文件组中日志文件的数量。

innodb_read_io_threads = 8: 这个参数表示InnoDB读取IO操作的线程数量。

innodb_write_io_threads = 8: 这个参数表示InnoDB写入IO操作的线程数量。

innodb_log_buffer_size = 4M: 这个参数表示InnoDB日志缓冲区的大小,即用于存储日志数据的内存大小。

innodb_undo_tablespaces = 5: 这个参数表示InnoDB撤销表空间的数量。

innodb_max_undo_log_size = 2G: 这个参数表示InnoDB最大撤销日志文件大小。


innodb_flush_neighbors = 1: 这个参数表示InnoDB刷新邻居页的策略,即是否在刷新脏页时一起刷新相邻的页。

innodb_purge_threads = 4: 这个参数表示InnoDB清理线程的数量,用于清理过期的事务版本。

innodb_thread_concurrency = 0: 这个参数表示InnoDB线程并发度的控制,0表示不限制并发度。

innodb_print_all_deadlocks = 1: 这个参数表示是否打印所有死锁信息。

innodb_strict_mode = 1: 这个参数表示InnoDB是否启用严格模式,即是否对数据完整性进行严格检查。

innodb_sort_buffer_size = 8M: 这个参数表示InnoDB排序缓冲区的大小,用于排序操作的内存大小。

innodb_flush_log_at_trx_commit=1: 这个参数表示每次事务提交时是否立即刷新日志到磁盘。

innodb_autoextend_increment=64: 这个参数表示InnoDB数据文件自动扩展的增量大小。

innodb_concurrency_tickets=5000: 这个参数表示在InnoDB内部用于控制并发性的票数。

innodb_old_blocks_time=1000: 这个参数表示InnoDB缓冲池中旧块的最大存活时间。

innodb_open_files=65536: 这个参数表示InnoDB打开文件的数量限制。

innodb_stats_on_metadata=0: 这个参数表示是否在元数据操作时收集统计信息。

innodb_file_per_table=1: 这个参数表示是否为每个InnoDB表创建单独的数据文件。

innodb_checksum_algorithm=0: 这个参数表示InnoDB数据文件的校验算法。

innodb_data_file_path=ibdata1:500M;ibdata2:500M;ibdata3:500M:autoextend:max:20G: 这个参数表示InnoDB数据文件的路径和大小设置。

innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:10G: 这个参数表示InnoDB临时数据文件的路径和大小设置。

innodb_buffer_pool_dump_pct = 40: 这个参数表示在缓冲池转储时要转储的页的百分比。

innodb_page_cleaners = 4: 这个参数表示InnoDB页清理线程的数量。

innodb_purge_rseg_truncate_frequency = 128: 这个参数表示InnoDB清理线程截断撤销段的频率。