github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/test/testdata/resources/mysql-consensus-config-template.yaml (about)

     1  apiVersion: v1
     2  kind: ConfigMap
     3  metadata:
     4    name: mysql-consensus-template-8.0
     5    labels:
     6      helm.sh/chart: apecloud-mysql-0.1.8
     7      app.kubernetes.io/name: apecloud-mysql
     8      app.kubernetes.io/instance: release-name
     9      app.kubernetes.io/version: "8.0.30"
    10      app.kubernetes.io/managed-by: Helm
    11  data:
    12    my.cnf: |-
    13      [mysqld]
    14      # aliyun buffer pool: https://help.aliyun.com/document_detail/162326.html?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#title-rey-j7j-4dt
    15      
    16      {{- $log_root := getVolumePathByName ( index $.podSpec.containers 0 ) "log" }}
    17      {{- $data_root := getVolumePathByName ( index $.podSpec.containers 0 ) "data" }}
    18      {{- $mysql_port_info := getPortByName ( index $.podSpec.containers 0 ) "mysql" }}
    19      {{- $pool_buffer_size := ( callBufferSizeByResource ( index $.podSpec.containers 0 ) ) }}
    20      {{- $phy_memory := getContainerMemory ( index $.podSpec.containers 0 ) }}
    21      
    22      {{- if $pool_buffer_size }}
    23      innodb_buffer_pool_size={{ $pool_buffer_size }}
    24      {{- end }}
    25      
    26      # require port
    27      {{- $mysql_port := 3306 }}
    28      {{- if $mysql_port_info }}
    29      {{- $mysql_port = $mysql_port_info.containerPort }}
    30      {{- end }}
    31      
    32      {{- $thread_stack := 262144 }}
    33      {{- $binlog_cache_size := 32768 }}
    34      {{- $join_buffer_size := 262144 }}
    35      {{- $sort_buffer_size := 262144 }}
    36      {{- $read_buffer_size := 262144 }}
    37      {{- $read_rnd_buffer_size := 524288 }}
    38      {{- $single_thread_memory := add $thread_stack $binlog_cache_size $join_buffer_size $sort_buffer_size $read_buffer_size $read_rnd_buffer_size }}
    39      
    40      {{- if gt $phy_memory 0 }}
    41      # Global_Buffer = innodb_buffer_pool_size = PhysicalMemory *3/4
    42      # max_connections = (PhysicalMemory  - Global_Buffer) / single_thread_memory
    43      max_connections={{ div ( div $phy_memory 4 ) $single_thread_memory }}
    44      {{- end}}
    45      
    46      # alias replica_exec_mode. Aliyn slave_exec_mode=STRICT
    47      slave_exec_mode=IDEMPOTENT
    48      
    49      # gtid
    50      gtid_mode=ON
    51      enforce_gtid_consistency=ON
    52      
    53      # consensus
    54      loose_consensus_enabled=ON
    55      loose_consensus_io_thread_cnt=8
    56      loose_consensus_worker_thread_cnt=8
    57      loose_consensus_election_timeout=1000
    58      loose_consensus_auto_leader_transfer=OFF
    59      loose_consensus_prefetch_window_size=100
    60      loose_consensus_auto_reset_match_index=ON
    61      loose_cluster_mts_recover_use_index=ON
    62      # loose_replicate_same_server_id=ON
    63      loose_consensus_large_trx=ON
    64      loose_consensuslog_revise=ON
    65      # loose_cluster_log_type_node=OFF
    66      
    67      #server & instances
    68      thread_stack={{ $thread_stack }}
    69      thread_cache_size=60
    70      # ulimit -n
    71      open_files_limit=1048576
    72      local_infile=ON
    73      persisted_globals_load=OFF
    74      sql_mode=NO_ENGINE_SUBSTITUTION
    75      #Default 4000
    76      table_open_cache=4000
    77      
    78      # under high number thread (such as 128 threads), this value will cause sysbench fails
    79      # if so, change it to 100000 or higher.
    80      max_prepared_stmt_count=16382
    81      
    82      performance_schema_digests_size=10000
    83      performance_schema_events_stages_history_long_size=10000
    84      performance_schema_events_transactions_history_long_size=10000
    85      read_buffer_size={{ $read_buffer_size }}
    86      read_rnd_buffer_size={{ $read_rnd_buffer_size }}
    87      join_buffer_size={{ $join_buffer_size }}
    88      sort_buffer_size={{ $sort_buffer_size }}
    89      
    90      #default_authentication_plugin=mysql_native_password    #From mysql8.0.23 is deprecated.
    91      authentication_policy=mysql_native_password,
    92      back_log=5285
    93      host_cache_size=867
    94      connect_timeout=10
    95      
    96      # character-sets-dir=/usr/share/mysql-8.0/charsets
    97      
    98      port={{ $mysql_port }}
    99      mysqlx-port=33060
   100      mysqlx=0
   101      
   102      datadir={{ $data_root }}/data
   103      
   104      log_statements_unsafe_for_binlog=OFF
   105      log_error_verbosity=2
   106      log_output=FILE
   107      {{- if hasKey $.component "enabledLogs" }}
   108      {{- if mustHas "error" $.component.enabledLogs }}
   109      # Mysql error log
   110      log_error={{ $data_root }}/log/mysqld-error.log
   111      {{- end }}
   112      
   113      {{- if mustHas "slow" $.component.enabledLogs }}
   114      # MySQL Slow log
   115      slow_query_log=ON
   116      long_query_time=5
   117      slow_query_log_file={{ $data_root }}/log/mysqld-slowquery.log
   118      {{- end }}
   119      
   120      {{- if mustHas "general" $.component.enabledLogs }}
   121      # SQL access log, default off
   122      general_log=ON
   123      general_log_file={{ $data_root }}/log/mysqld.log
   124      {{- end }}
   125      {{- end }}
   126      
   127      #innodb
   128      innodb_doublewrite_batch_size=16
   129      innodb_doublewrite_pages=32
   130      innodb_flush_method=O_DIRECT
   131      innodb_io_capacity=200
   132      innodb_io_capacity_max=2000
   133      innodb_log_buffer_size=8388608
   134      #innodb_log_file_size and innodb_log_files_in_group are deprecated in MySQL 8.0.30. These variables are superseded by innodb_redo_log_capacity.
   135      #innodb_log_file_size=134217728
   136      #innodb_log_files_in_group=2
   137      innodb_redo_log_capacity=268435456
   138      innodb_open_files=4000
   139      innodb_purge_threads=1
   140      innodb_read_io_threads=4
   141      # innodb_print_all_deadlocks=ON    # AWS not set
   142      key_buffer_size=16777216
   143      
   144      # binlog
   145      # master_info_repository=TABLE
   146      # From mysql8.0.23 is deprecated.
   147      binlog_cache_size={{ $binlog_cache_size }}
   148      # AWS binlog_format=MIXED, Aliyun is ROW
   149      binlog_format=MIXED
   150      binlog_row_image=FULL
   151      # Aliyun AWS binlog_order_commits=ON
   152      binlog_order_commits=ON
   153      log-bin=mysql-bin
   154      log_bin_index=mysql-bin.index
   155      max_binlog_size=134217728
   156      log_replica_updates=1
   157      # binlog_rows_query_log_events=ON #AWS not set
   158      # binlog_transaction_dependency_tracking=WRITESET    #Default Commit Order, Aws not set
   159      
   160      # replay log
   161      # relay_log_info_repository=TABLE
   162      # From mysql8.0.23 is deprecated.
   163      relay_log_recovery=ON
   164      relay_log=relay-bin
   165      relay_log_index=relay-bin.index
   166      
   167      pid-file=/var/run/mysqld/mysqld.pid
   168      socket=/var/run/mysqld/mysqld.sock
   169      
   170      {{- if $.component.tls }}
   171      {{- $ca_file := getCAFile }}
   172      {{- $cert_file := getCertFile }}
   173      {{- $key_file := getKeyFile }}
   174      # tls
   175      # require_secure_transport=ON
   176      ssl_ca={{ $ca_file }}
   177      ssl_cert={{ $cert_file }}
   178      ssl_key={{ $key_file }}
   179      {{- end }}
   180      
   181      [client]
   182      port={{ $mysql_port }}
   183      socket=/var/run/mysqld/mysqld.sock
   184  ---
   185  apiVersion: v1
   186  kind: ConfigMap
   187  metadata:
   188    name: mysql-reload-script
   189    labels:
   190      helm.sh/chart: apecloud-mysql-0.1.8
   191      app.kubernetes.io/name: apecloud-mysql
   192      app.kubernetes.io/instance: release-name
   193      app.kubernetes.io/version: "8.0.30"
   194      app.kubernetes.io/managed-by: Helm
   195  data:
   196    reload.tpl: |-
   197      {{- /* mysql global variable update */}}
   198      {{- /* mysql using system variables reference docs: https://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html */}}
   199      {{- /*  1. system variable names must be written using underscores, not dashes. */}}
   200      {{- /*  2. string variable 'xxx' */}}
   201      {{- /*  3. type convert to number */}}
   202      {{- range $pk, $pv := $.arg0 }}
   203      	{{- $pk = replace "-" "_" $pk }}
   204      	{{- $var_int := -1 }}
   205          {{- if $pv | regexMatch "^\\d+$" }}
   206      		{{- $var_int = atoi $pv }}
   207      	{{- end}}
   208      	{{- if lt $var_int 0 }}
   209      		{{- $tmp := $pv | regexStringSubmatch "^(\\d+)K$" }}
   210      		{{- if $tmp }}
   211      		{{- $var_int = last $tmp | atoi | mul 1024 }}
   212      		{{- end }}
   213      	{{- end }}
   214      	{{- if lt $var_int 0 }}
   215      		{{- $tmp := $pv | regexStringSubmatch "^(\\d+)M$" }}
   216      		{{- if $tmp }}
   217      		{{- $var_int =  $tmp | atoi | mul 1024 1024 }}
   218      		{{- end }}
   219      	{{- end }}
   220      	{{- if lt $var_int 0 }}
   221      		{{- $tmp := $pv | regexStringSubmatch "^(\\d+)G$" }}
   222      		{{- if $tmp }}
   223      		{{- $var_int = last $tmp | atoi | mul 1024 1024 1024 }}
   224      		{{- end }}
   225      	{{- end }}
   226      	{{- if ge $var_int 0 }}
   227      		{{- exec_sql ( printf "SET GLOBAL %s = %d" $pk $var_int ) }}
   228      	{{- else }}
   229      		{{- exec_sql ( printf "SET GLOBAL %s = '%s'" $pk $pv ) }}
   230      	{{- end }}
   231      {{- end }}
   232    reload.yaml: |-
   233      scripts: reload.tpl
   234      fileRegex: my.cnf
   235      formatterConfig:
   236        format: ini
   237        iniConfig:
   238          sectionName: mysqld