当前位置: 首页 > news >正文

MySQL通用性能优化模板(MySQL General Performance Optimization Template)

MySQL通用性能优化模板

01

硬件优化

  • CPU:物理机上建议配置更高性能的CPU,不仅是核数越多越好,处理主频也是越高越好。生产环境建议配置不低于8 Cores的CPU;

  • MEM:建议配置更大的物理内存,生产环境建议配置不低于8 GB的物理内存;

  • DISK:建议使用更好的物理I/O设备,配置更高物理IOPS性能的设备,如SSD;

  • NET:如果是构建构建MGR集群,建议使用不低于千兆网络的条件。条件允许的话建议使用万兆网络。

  • 02

操作系统优化

  • 1. 采用XFS文件系统,保证在高I/O负载情况下IOPS的性能及稳定性

mkfs.xfs -f -L /mysql /dev/sdb
  • 2. 关闭SWAP交换分区,避免使用SWAP造成数据库性能急剧下降;

echo "vm.swappiness=0" >> /etc/sysctl.confsysctl -pswapoff -a
  • 3. 关闭透明大页,避免内存碎片化严重时分配透明大页页面出现较高延迟,从而影响性能;

echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernle/mm/transparent_hugepage/defragcat /sys/kernle/mm/transparent_hugepage/enabled
  • 4. 调整数据库分区的I/O Scheduler为noop或deadline;

echo 'noop' > /sys/block/sdb/queue/schedulercat /sys/block/sdb/queue/scheduler
  • 5. 确认CPU性能模式为高性能模式;

cpupower frequency-info --policy# 预期输出是:The governor "performanace",代表高性能模式
  • 6. 确认NUMA模式;

针对X86架构的CPU,建议关闭NUMA;针对ARM架构的CPU,如果单台服务器上运行多个实例,建议开启NUMA提升性能。cat /etc/default/grub
  • 7. 优化系统内核参数、调整用户资源使用上限;

# 调整内核参数echo "fs.file-max = 1000000" >> /etc/sysctl.confecho "vm.overcommit_memory = 1" >> /etc/sysctl.confecho "net.core.somaxconn = 32768" >> /etc/sysctl.confecho "net.ipv4.tcp_syncookies = 0" >> /etc/sysctl.confsysctl -p
# 调整用户资源使用上线mysql           soft    nofile         65535mysql           hard    nofile         65535mysql           soft    stack          32768mysql           hard    stack          32768mysql           soft    nproc          65535mysql           hard    nproc          65535
  • 8. 安装常用系统辅助工具包。

yum -y install net-tools perf sysstat iotop tmux strace
cat /etc/my.cnf# 32C 64G 服务器 mysql配置文件参考[client]port = 3306socket = /mysql/mysql.sock[mysqld]user = mysqlport = 3306server_id = 1basedir = /usrdatadir = /mysql/datasocket = /mysql/mysql.sockpid-file = /mysql/mysql.pidcharacter-set-server = UTF8MB4skip_name_resolve = 1default_time_zone = "+8:00"bind_address = "0.0.0.0"
#performance setttingslock_wait_timeout = 3600open_files_limit = 65535back_log = 1024max_connections = 1024max_connect_errors = 1000000table_open_cache = 2048table_definition_cache = 2048sort_buffer_size = 4Mjoin_buffer_size = 4Mread_buffer_size = 8Mread_rnd_buffer_size = 4Mbulk_insert_buffer_size = 64Mthread_cache_size = 768interactive_timeout = 600wait_timeout = 600tmp_table_size = 96Mmax_heap_table_size = 96Mmax_allowed_packet = 64Mnet_buffer_shrink_interval = 180#GIPKloose-sql_generate_invisible_primary_key = ON
#log settingslog_timestamps = SYSTEMlog_error = /data/errlog/error.loglog_error_verbosity = 3slow_query_log = 1log_slow_extra = 1slow_query_log_file = /mysql/slowlog/slow.log#设置slow log文件大小1G及总文件数10max_slowlog_size = 1073741824max_slowlog_files = 10long_query_time = 3log_queries_not_using_indexes = 1log_throttle_queries_not_using_indexes = 60min_examined_row_limit = 100log_slow_admin_statements = 1log_slow_replica_statements = 1log_slow_verbosity = FULLlog_bin = /data/binlog/binlogbinlog_format = ROWsync_binlog = 1binlog_cache_size = 4Mmax_binlog_cache_size = 6Gmax_binlog_size = 1G#控制binlog总大小,避免磁盘空间被撑爆binlog_space_limit = 500Gbinlog_rows_query_log_events = 1binlog_expire_logs_seconds = 604800binlog_checksum = CRC32binlog_order_commits = OFFgtid_mode = ONenforce_gtid_consistency = TRUE
#myisam settingskey_buffer_size = 32Mmyisam_sort_buffer_size = 128M
#replication settingsrelay_log_recovery = 1replica_parallel_type = LOGICAL_CLOCK#并行复制线程数可以设置为逻辑CPU数量的2倍replica_parallel_workers = 64binlog_transaction_dependency_tracking = WRITESETreplica_preserve_commit_order = 1replica_checkpoint_period = 2
#mgr settingsloose-plugin_load_add = 'mysql_clone.so'loose-plugin_load_add = 'group_replication.so'loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1"#MGR本地节点IP:PORTloose-group_replication_local_address = "192.168.56.11:33061"#MGR集群所有节点IP:PORTloose-group_replication_group_seeds = '192.168.56.11:33061,192.168.56.12:33061,192.168.56.13:33061'loose-group_replication_start_on_boot = ONloose-group_replication_bootstrap_group = OFFloose-group_replication_exit_state_action = READ_ONLYloose-group_replication_flow_control_mode = "QUOTA"loose-group_replication_single_primary_mode = ONloose-group_replication_enforce_update_everywhere_checks = 0loose-group_replication_communication_max_message_size = 10Mreport_host = 192.168.56.11report_port = 3306
#innodb settingsinnodb_buffer_pool_size = 16Ginnodb_buffer_pool_instances = 8innodb_data_file_path = ibdata1:12M:autoextendinnodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 32Minnodb_log_file_size = 2Ginnodb_log_files_in_group = 3innodb_redo_log_capacity = 6Ginnodb_doublewrite_files = 2innodb_max_undo_log_size = 4G# 根据您的服务器IOPS能力适当调整# 一般配普通SSD盘的话,可以调整到 10000 - 20000# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000innodb_io_capacity = 4000innodb_io_capacity_max = 8000innodb_open_files = 65534# 当需要用CLONE加密特性时,不要选用O_DIRECT模式,否则会比较慢innodb_flush_method = O_DIRECTinnodb_lru_scan_depth = 4000innodb_lock_wait_timeout = 10innodb_rollback_on_timeout = 1innodb_print_all_deadlocks = 1innodb_online_alter_log_max_size = 4Ginnodb_print_ddl_logs = 1innodb_status_file = 1innodb_status_output = 0innodb_status_output_locks = 1innodb_sort_buffer_size = 64Minnodb_adaptive_hash_index = 0innodb_numa_interleave = OFFinnodb_spin_wait_delay = 20innodb_print_lock_wait_timeout_info = 1#自动杀掉超过5分钟不活跃事务,避免行锁被长时间持有kill_idle_transaction = 300#异步清理大表innodb_data_file_async_purge = ON
#innodb monitor settings#根据实际需要开启,会影响数据库性能,但有利于故障诊断和性能优化#innodb_monitor_enable = "module_innodb,module_server,module_dml,module_ddl,module_trx,module_os,module_purge,module_log,module_lock,module_buffer,module_index,module_ibuf_system,module_buffer_page,module_adaptive_hash"#pfs settingsperformance_schema = 1#performance_schema_instrument = '%memory%=on'performance_schema_instrument = '%lock%=on'

http://www.xdnf.cn/news/95401.html

相关文章:

  • MyBatis-Plus 使用 Wrapper 构建动态 SQL 有哪些优劣势?
  • 爱普生SG-8200CG可编程晶振成为工业自动化领域的理想选择
  • Tailwind CSS 实战:基于 Kooboo 构建个人博客页面
  • vue3中slot(插槽)的详细使用
  • JVM 生产环境问题定位与解决实战(七):实战篇——OSSClient泄漏引发的FullGC风暴
  • 事业单位体检心电图不合格类型有哪些
  • 视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
  • 如何使用 uv 构建 Python 包并本地安装
  • 配色之道:解码产品设计中的UI设计配色艺术
  • 卷积神经网络:视觉炼金术士的数学魔法
  • SQL进阶知识:四、索引优化
  • C# 使用Windows API实现键盘钩子的类
  • Java虚拟机面试题:JVM调优
  • 网页布局新视角:全局居中的魅力与应用
  • Jsoup、Selenium 和 Playwright 的含义、作用和区别
  • SpringBoot整合SSE,基于okhttp
  • Java面试:探索Spring Boot与微服务的深度挑战
  • 01 ubuntu中wps桌面快捷键无法使用
  • C++23 新特性:令声明顺序决定非静态类数据成员的布局 (P1847R4)
  • C++学习:六个月从基础到就业——STL算法(一) 基础与查找算法
  • JS通过GetCapabilities获取wms服务元数据信息并在SuperMap iClient3D for WebGL进行叠加显示
  • C++语言速成,语法及示例宝典汇总整理
  • 状态模式(State Pattern)详解
  • Hooks的使用限制及原因
  • 单例模式:确保唯一实例的设计模式
  • mall-cook 本地运行
  • 基于MTF的1D-2D-CNN-LSTM-Attention时序图像多模态融合的故障识别,适合研究学习(Matlab完整源码和数据),附模型研究报告
  • VUE Element-ui Message 消息提示组件自定义封装
  • Android Cordova 开发 - Cordova 解读初始化项目(index.html meta、Cordova.js、config.xml)
  • 【PCB工艺】运放电路中的负反馈机制