设为首页 收藏本站
查看: 1994|回复: 0

[经验分享] mysql数据库环境优化

[复制链接]

尚未签到

发表于 2018-10-11 10:19:36 | 显示全部楼层 |阅读模式
一、环境优化
1.1内存优化
  由于数据库主机一般内存较大,因此采用huge page。而且尽量使用80%的内存,以空间换时间。
  /etc/sysctl.conf配置参数:
  vm.hugetlb_shm_group=3306
  kernel.shmmax=243805679616
  kernel.shmall=59522871
1.2虚拟内存优化
  由于数据库对存取速度反应较大,因此关闭swap。
1.3网络优化
  由于公司需要直接访问IDC机房中数据库,因此网络需要优化。
  /etc/sysctl.conf配置参数:
  net.core.somaxconn = 40000
  net.ipv4.tcp_max_syn_backlog = 40000
  net.ipv4.ip_local_port_range = 1024 65535
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  net.core.wmem_max=12582912
  net.core.rmem_max=12582912
  net.ipv4.tcp_rmem= 10240 87380 12582912
  net.ipv4.tcp_wmem= 10240 87380 12582912
  net.ipv4.tcp_window_scaling = 1
  net.ipv4.tcp_timestamps = 1
  net.ipv4.tcp_sack = 1
  net.ipv4.tcp_no_metrics_save = 1
  net.core.netdev_max_backlog = 5000
1.4IO优化
  尽量减少对IO的限制。因此在保障硬盘读写正常的情况下,需要增加如下/etc/sysctl.conf参数:
  fs.file-max = 1000000
  /etc/security/limits.conf配置:
  *                soft  nofile                  65535
  *                hard    nofile           65535
  mysql   hard   memlock  unlimited
  mysql   soft    memlock  unlimited
二、数据库优化
2.1源码编译优化
  采用较优的编译参数:
  -m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g
  编译命令:
  cmake .. -DCMAKE_CXX_FLAGS_DEBUG=="-DUNIV_DEBUG -DUNIV_SYNC_DEBUG" \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_C_FLAGS_RELWITHDEBINFO="-m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g" \
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g" \
  -DBUILD_CONFIG=mysql_release \
  -DFEATURE_SET=community \
  -DWITH_EMBEDDED_SERVER=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local/percona \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  -DMYSQL_DATADIR=/data/mysql/data \
  -DSYSCONFDIR=/etc \
  -DMYSQL_TCP_PORT=3306 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_FEDERATED_STORAGE_ENGINE=1  \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  -DWITH_READLINE=system \
  -DENABLED_LOCAL_INFILE=1 \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DWITH_EXTRA_CHARSETS=all \
  -DWITH_FAST_MUTEXES=ON\
  -DWITH_ATOMIC_LOCKS=rwlocks
2.2内存优化
  尽量采用内存的80%,作为数据库内存空间。
  配置参数:
  innodb_buffer_pool_size=180G
  join_buffer_size=32M
  key_buffer_size=256M
  read_buffer_size=8388608
  read_rnd_buffer_size=4M
2.3连接池优化
  采用连接池,以负载高并发的访问。
  配置参数:
  thread_handling=pool-of-threads
  thread_pool_high_prio_mode=statements
  thread_pool_max_threads=100000
  thread_pool_size=48
  thread_pool_oversubscribe=10
  thread_pool_stall_limit=300
2.4IO优化
  配置参数:
  sync_binlog=1000
  innodb_read_io_threads=48
  innodb_thread_concurrency=0
  innodb_use_native_aio=1
  innodb_write_io_threads=48
  innodb_flush_method=ALL_O_DIRECT
2.5网络优化
  配置参数:
  max_connections=1000
  net_buffer_length=1M
2.6结构优化
  对一些大表进行分区处理,如crm_consume、crm_consume_detail、crm_customer等,以优化查询。
2.7综合优化
  /etc/my.cnf配置参数:
  [mysqld]
  audit_log_rotations=5
  audit_log_rotate_on_size=20480000
  slow_query_log=1
  slow_query_log_file=/data/mysql/data/db4-slow.log
  long_query_time=5
  back_log=1024
  big_tables=1
  bind_address=0.0.0.0
  binlog_cache_size=8M
  binlog_format=row
  basedir=/usr/local/percona
  binlog_stmt_cache_size=8M
  datadir=/data/mysql/data/
  delayed_queue_size=10000
  enforce-gtid-consistency=ON
  default_time_zone=+8:00
  event_scheduler=1
  expire_logs_days=7
  federated
  gtid_mode=ON
  innodb_additional_mem_pool_size=64M
  innodb_buffer_pool_instances=16
  metadata_locks_hash_instances=16
  table_open_cache_instances=16
  innodb_buffer_pool_size=180G
  innodb_data_file_path=ibdata1:1024M:autoextend
  innodb_data_home_dir=/data/mysql/data/
  innodb_file_per_table=1
  innodb_flush_log_at_trx_commit=2
  innodb_autoinc_lock_mode=2
  innodb_flush_method=ALL_O_DIRECT
  innodb_flush_neighbors=0
  innodb_io_capacity=1000
  innodb_lock_wait_timeout=50
  innodb_log_buffer_size=512M
  innodb_log_file_size=4096M
  innodb_log_files_in_group=3
  innodb_log_group_home_dir=/data/mysql/data/
  innodb_max_dirty_pages_pct=75
  innodb_old_blocks_pct=30
  innodb_old_blocks_time=1000
  innodb_open_files=4096
  innodb_purge_threads=1
  innodb_random_read_ahead=1
  innodb_read_io_threads=48
  innodb_thread_concurrency=0
  innodb_use_native_aio=1
  innodb_write_io_threads=48
  join_buffer_size=32M
  key_buffer_size=256M
  log-bin=mysql-bin
  log-error=/var/log/mysql-error.log
  log_output=FILE
  log_slave_updates=1
  max_allowed_packet=128M
  max_connect_errors=10000000
  max_connections=1000
  max_heap_table_size=64M
  max_tmp_tables=1024
  myisam_recover=FORCE,BACKUP
  myisam_sort_buffer_size=128M
  net_buffer_length=1M
  open_files_limit=65535
  pid-file=/data/mysql/data/mysql.pid
  port=3306
  query_cache_size=0
  query_cache_type=0
  report_host=192.168.201.11
  report_port=3306
  read_buffer_size=8388608
  read_rnd_buffer_size=4M
  relay-log=mysql-relay-bin
  log_warnings=9
  sync_binlog=1000
  rpl_semi_sync_master_enabled=1
  rpl_semi_sync_master_timeout=1000
  server-id=11
  skip-external-locking
  skip-name-resolve
  socket=/tmp/mysql.sock
  sort_buffer_size=16M
  table_definition_cache=4096
  transaction_isolation=read-committed
  table_open_cache=16384
  thread_cache_size=2048
  thread_stack=1048576
  tmp_table_size=64M
  slave_net_timeout=30
  master-info-repository=TABLE
  relay-log-info-repository=TABLE
  sync-master-info=1
  slave-parallel-workers=4
  binlog-checksum=CRC32
  master-verify-checksum=1
  slave-sql-verify-checksum=1
  binlog-rows-query-log_events=1
  thread_handling=pool-of-threads
  thread_pool_high_prio_mode=statements
  thread_pool_max_threads=100000
  thread_pool_size=48
  thread_pool_oversubscribe=10
  thread_pool_stall_limit=300
  innodb_monitor_enable = '%'
  performance_schema = ON
  performance_schema_instrument = '%=on'
三、性能测试
3.1基准测试
  利用sysbench工具进行数据库oltp测试,得出测试结论如下:
  OLTP test statistics:
  queries performed:
  read:                            481348
  write:                           137528
  other:                           68764
  total:                           687640
  transactions:                        34382  (572.21 per sec.)
  read/write requests:                 618876 (10299.77 per sec.)
  other operations:                    68764  (1144.42 per sec.)
  ignored errors:                      0      (0.00 per sec.)
  reconnects:                          0      (0.00 per sec.)
  General statistics:
  total time:                          60.0864s
  total number of events:              34382
  total time taken by event execution: 3842.8699s
  response time:
  min:                                 23.10ms
  avg:                                111.77ms
  max:                                323.79ms
  approx.  95 percentile:             166.95ms
  Threads fairness:
  events (avg/stddev):           537.2188/9.58
  execution time (avg/stddev):   60.0448/0.02
  可知:
  tps:572.21 per sec
  qps:10299.77 per sec.
3.2优化后测试
  最好的测试结论如下:
  OLTP test statistics:
  queries performed:
  read:                            7265944
  write:                           2075984
  other:                           1037992
  total:                           10379920
  transactions:                        518996 (864.91 per sec.)
  read/write requests:                 9341928 (15568.43 per sec.)
  other operations:                    1037992 (1729.83 per sec.)
  ignored errors:                      0      (0.00 per sec.)
  reconnects:                          0      (0.00 per sec.)
  General statistics:
  total time:                          600.0560s
  total number of events:              518996
  total time taken by event execution: 38354.8485s
  response time:
  min:                                  6.49ms
  avg:                                 73.90ms
  max:                                252.93ms
  approx.  95 percentile:             118.04ms
  Threads fairness:
  events (avg/stddev):           8109.3125/1090.72
  execution time (avg/stddev):   599.2945/0.45
  可知:
  tps:864.91 per sec
  qps:15568.43 per sec
3.3SQL测试
  采用单个SQL语句进行测试,性能也有很大的提升。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620265-1-1.html 上篇帖子: Zabbix mysql innodb文件ibdata1损坏导致mysql无法启动 下篇帖子: mysql 优化语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表