Merge "Add option for innodb_flush_log_at_trx_commit = 2 for Galera only"

This commit is contained in:
Jenkins 2017-07-17 08:20:11 +00:00 committed by Gerrit Code Review
commit 1b4effb7fd
2 changed files with 61 additions and 35 deletions

View File

@ -52,6 +52,13 @@
# connections from other nodes in the cluster.
# Defaults to hiera('mysql_bind_host')
#
# [*innodb_flush_log_at_trx_commit*]
# (Optional) Disk flush behavior for MySQL under Galera. A value of
# '1' indicates flush to disk per transaction. A value of '2' indicates
# flush to disk every second, flushing all unflushed transactions in
# one step.
# Defaults to hiera('innodb_flush_log_at_trx_commit', '1')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@ -62,14 +69,15 @@
# Defaults to hiera('pcs_tries', 20)
#
class tripleo::profile::pacemaker::database::mysql (
$bootstrap_node = hiera('mysql_short_bootstrap_node_name'),
$bind_address = $::hostname,
$ca_file = undef,
$certificate_specs = hiera('tripleo::profile::base::database::mysql::certificate_specs', {}),
$enable_internal_tls = hiera('enable_internal_tls', false),
$gmcast_listen_addr = hiera('mysql_bind_host'),
$step = Integer(hiera('step')),
$pcs_tries = hiera('pcs_tries', 20),
$bootstrap_node = hiera('mysql_short_bootstrap_node_name'),
$bind_address = $::hostname,
$ca_file = undef,
$certificate_specs = hiera('tripleo::profile::base::database::mysql::certificate_specs', {}),
$enable_internal_tls = hiera('enable_internal_tls', false),
$gmcast_listen_addr = hiera('mysql_bind_host'),
$innodb_flush_log_at_trx_commit = hiera('innodb_flush_log_at_trx_commit', '1'),
$step = Integer(hiera('step')),
$pcs_tries = hiera('pcs_tries', 20),
) {
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
@ -109,33 +117,34 @@ class tripleo::profile::pacemaker::database::mysql (
$mysqld_options = {
'mysqld' => {
'skip-name-resolve' => '1',
'binlog_format' => 'ROW',
'default-storage-engine' => 'innodb',
'innodb_autoinc_lock_mode' => '2',
'innodb_locks_unsafe_for_binlog'=> '1',
'innodb_file_per_table' => 'ON',
'query_cache_size' => '0',
'query_cache_type' => '0',
'bind-address' => $bind_address,
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
'wsrep_on' => 'ON',
'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
'wsrep_cluster_name' => 'galera_cluster',
'wsrep_cluster_address' => "gcomm://${galera_nodes}",
'wsrep_slave_threads' => '1',
'wsrep_certify_nonPK' => '1',
'wsrep_max_ws_rows' => '131072',
'wsrep_max_ws_size' => '1073741824',
'wsrep_debug' => '0',
'wsrep_convert_LOCK_to_trx' => '0',
'wsrep_retry_autocommit' => '1',
'wsrep_auto_increment_control' => '1',
'wsrep_drupal_282555_workaround'=> '0',
'wsrep_causal_reads' => '0',
'wsrep_sst_method' => 'rsync',
'wsrep_provider_options' => "gmcast.listen_addr=tcp://${gmcast_listen_addr}:4567;${tls_options}",
'skip-name-resolve' => '1',
'binlog_format' => 'ROW',
'default-storage-engine' => 'innodb',
'innodb_autoinc_lock_mode' => '2',
'innodb_locks_unsafe_for_binlog' => '1',
'innodb_file_per_table' => 'ON',
'innodb_flush_log_at_trx_commit' => $innodb_flush_log_at_trx_commit,
'query_cache_size' => '0',
'query_cache_type' => '0',
'bind-address' => $bind_address,
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
'wsrep_on' => 'ON',
'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
'wsrep_cluster_name' => 'galera_cluster',
'wsrep_cluster_address' => "gcomm://${galera_nodes}",
'wsrep_slave_threads' => '1',
'wsrep_certify_nonPK' => '1',
'wsrep_max_ws_rows' => '131072',
'wsrep_max_ws_size' => '1073741824',
'wsrep_debug' => '0',
'wsrep_convert_LOCK_to_trx' => '0',
'wsrep_retry_autocommit' => '1',
'wsrep_auto_increment_control' => '1',
'wsrep_drupal_282555_workaround' => '0',
'wsrep_causal_reads' => '0',
'wsrep_sst_method' => 'rsync',
'wsrep_provider_options' => "gmcast.listen_addr=tcp://${gmcast_listen_addr}:4567;${tls_options}",
}
}

View File

@ -0,0 +1,17 @@
---
features:
- |
Enable innodb_flush_log_at_trx_commit configuration for Galera only.
upgrade:
- |
Setting the innodb_flush_log_at_trx_commit flag to the value of "2" instead
of its default value of "1" means that the underlying MySQL/MariaDB engine
will no longer flush transactions to disk on a per-transaction basis;
instead, flushes occur once per second. This leads to far fewer
disk writes and can dramatically improve write performance, at the cost
of durability (e.g. will lose the last second's worth of transactions)
if the database engine is ungracefully shut down. The
clustered nature of Galera mitigates this risk in that transactions
are replicated to other nodes before completion, and the setting of
"2" is considered to be generally safe for a Galera cluster, with the
exception case of simultaneous power loss for all nodes.