暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

GreatSQL(/MySQL)的配置文件模板样例

644

刚接触到MySQL的时候,印象最深的就是他的配置文件my.cnf,作为初学者,像[client]、[mysql]、[mysqld]中往往就只配置一些简单的,参数很多,除了一些基础的,其他的可能就需要积累了。但是线上的生产数据库,DBA们很可能会根据实际的机器配置、应用需求和特性,通过调整my.cnf中的配置项,达到他们的目的。


叶大师在微信群中推荐了一个GreatSQL标准的配置文件,我们可以借鉴下,针对我们的实际需求,适当剪裁,形成自己的模板。

https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.25-16

    #
    # my.cnf example for GreatSQL
    # last update, 2021/8/20
    #
    # 下面参数选项设置仅作为参考,且假设服务器可用内存为256G
    #
    [client]
    socket = data/GreatSQL/mysql.sock
    [mysql]
    loose-skip-binary-as-hex
    prompt="(\\D)[\\u@GreatSQL][\\d]>"
    no-auto-rehash
    [mysqld]
    user = mysql
    port = 3306
    server_id = 3306
    basedir = usr/
    datadir = data/GreatSQL
    socket = data/GreatSQL/mysql.sock
    pid-file = mysql.pid
    character-set-server = UTF8MB4
    skip_name_resolve = 1
    #若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
    default_time_zone = "+8:00"


    #performance setttings
    lock_wait_timeout = 3600
    open_files_limit = 65535
    back_log = 1024
    max_connections = 1024
    max_connect_errors = 1000000
    table_open_cache = 2048
    table_definition_cache = 2048
    thread_stack = 512K
    sort_buffer_size = 4M
    join_buffer_size = 4M
    read_buffer_size = 8M
    read_rnd_buffer_size = 4M
    bulk_insert_buffer_size = 64M
    thread_cache_size = 768
    interactive_timeout = 600
    wait_timeout = 600
    tmp_table_size = 96M
    max_heap_table_size = 96M


    #log settings
    log_timestamps = SYSTEM
    log_error = data/GreatSQL/error.log
    log_error_verbosity = 3
    slow_query_log = 1
    log_slow_extra = 1
    slow_query_log_file = data/GreatSQL/slow.log
    long_query_time = 0.01
    log_queries_not_using_indexes = 1
    log_throttle_queries_not_using_indexes = 60
    min_examined_row_limit = 0
    log_slow_admin_statements = 1
    log_slow_slave_statements = 1
    log_slow_verbosity = FULL
    log_bin = data/GreatSQL/binlog
    binlog_format = ROW
    sync_binlog = 1
    binlog_cache_size = 4M
    max_binlog_cache_size = 6G
    max_binlog_size = 1G
    binlog_rows_query_log_events = 1
    binlog_expire_logs_seconds = 604800
    binlog_checksum = CRC32
    gtid_mode = ON
    enforce_gtid_consistency = TRUE


    #myisam settings
    key_buffer_size = 32M
    myisam_sort_buffer_size = 128M


    #replication settings
    relay_log_recovery = 1
    slave_parallel_type = LOGICAL_CLOCK
    #并行复制线程数可以设置为逻辑CPU数量的2倍
    slave_parallel_workers = 64
    binlog_transaction_dependency_tracking = WRITESET
    slave_preserve_commit_order = 1
    slave_checkpoint_period = 2


    #启用InnoDB并行查询优化功能
    loose-force_parallel_execute = OFF
    #设置每个SQL语句的并行查询最大并发度
    loose-parallel_default_dop = 8
    #设置系统中总的并行查询线程数,可以和最大逻辑CPU数量一样
    loose-parallel_max_threads = 64
    #并行执行时leader线程和worker线程使用的总内存大小上限,可以设置物理内存的5-10%左右
    loose-parallel_memory_limit = 12G


    #mgr settings
    loose-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:PORT,请自行替换
    loose-group_replication_local_address = "172.16.16.10:33061"
    #MGR集群所有节点IP:PORT,请自行替换
    loose-group_replication_group_seeds = '172.16.16.10:33061,72.16.16.12:33061,72.16.16.12:33061'
    loose-group_replication_start_on_boot = ON
    loose-group_replication_bootstrap_group = OFF
    loose-group_replication_exit_state_action = READ_ONLY
    loose-group_replication_flow_control_mode = "DISABLED"
    loose-group_replication_single_primary_mode = ON
    loose-group_replication_majority_after_mode = ON
    loose-group_replication_communication_max_message_size = 10M
    loose-group_replication_arbitrator = 0
    loose-group_replication_single_primary_fast_mode = 1
    loose-group_replication_request_time_threshold = 100
    loose-group_replication_primary_election_mode = GTID_FIRST
    loose-group_replication_unreachable_majority_timeout = 30
    loose-group_replication_member_expel_timeout = 5
    loose-group_replication_autorejoin_tries = 288
    report_host = "172.16.16.10"


    #innodb settings
    innodb_buffer_pool_size = 16G
    innodb_buffer_pool_instances = 8
    innodb_data_file_path = ibdata1:12M:autoextend
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 32M
    innodb_log_file_size = 2G
    innodb_log_files_in_group = 3
    innodb_doublewrite_files = 2
    innodb_max_undo_log_size = 4G
    # 根据您的服务器IOPS能力适当调整
    # 一般配普通SSD盘的话,可以调整到 10000 - 20000
    # 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
    innodb_io_capacity = 4000
    innodb_io_capacity_max = 8000
    innodb_open_files = 65534
    innodb_flush_method = O_DIRECT
    innodb_lru_scan_depth = 4000
    innodb_lock_wait_timeout = 10
    innodb_rollback_on_timeout = 1
    innodb_print_all_deadlocks = 1
    innodb_online_alter_log_max_size = 4G
    innodb_print_ddl_logs = 1
    innodb_status_file = 1
    innodb_status_output = 0
    innodb_status_output_locks = 1
    innodb_sort_buffer_size = 64M


    #innodb monitor settings
    innodb_monitor_enable = "module_innodb"
    innodb_monitor_enable = "module_server"
    innodb_monitor_enable = "module_dml"
    innodb_monitor_enable = "module_ddl"
    innodb_monitor_enable = "module_trx"
    innodb_monitor_enable = "module_os"
    innodb_monitor_enable = "module_purge"
    innodb_monitor_enable = "module_log"
    innodb_monitor_enable = "module_lock"
    innodb_monitor_enable = "module_buffer"
    innodb_monitor_enable = "module_index"
    innodb_monitor_enable = "module_ibuf_system"
    innodb_monitor_enable = "module_buffer_page"
    innodb_monitor_enable = "module_adaptive_hash"


    #pfs settings
    performance_schema = 1
    #performance_schema_instrument = '%memory%=on'
    performance_schema_instrument = '%lock%=on'
    复制


    叶大师特意在自己的博客中给了一个[client]的配置,

    https://imysql.com/2008_07_09_show_mysql_client_settings

      [client]
      port=3306
      socket=/tmp/mysql.sock
      [mysql]
      prompt="(\\u:db1@yejr.com:\R:\m:\\s)[\\d]> "
      pager="less -i -n -S"
      tee="/tmp/query.log"
      no-auto-rehash
      复制


      通过prompt,能很方便地知道当前位于哪个MySQL DB上,正在以哪个用户名登录,对哪个数据库进行操作,防止误操作,并且还能显示当前时间。


      tee="/tmp/query.log"是将每次查询的SQL及其结果都记录到 /tmp/query.log 里,便于追踪。


      pager="less -i -n -S" 则是将每次输出都用less来控制显示,便于输出结果格式更加容易阅读,尤其是行记录长度超过一屏宽度时。



      如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,



      近期更新的文章:

      开学了,喝下第一口鸡汤

      多表关联场景下如何用好分区表?

      一个删除数据的trick

      最近碰到的一些问题

      让你的sqlplus支持历史指令的快速检索


      近期的热文:

      "红警"游戏开源代码带给我们的震撼


      文章分类和索引:

      公众号1000篇文章分类和索引

      文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论