~joeborg/charm-helpers/charm-helpers

« back to all changes in this revision

Viewing changes to charmhelpers/contrib/database/mysql.py

  • Committer: james.page at ubuntu
  • Date: 2017-03-02 14:55:51 UTC
  • mfrom: (700.2.2 percona-tuning-level)
  • Revision ID: james.page@ubuntu.com-20170302145551-ynv0eu82513kez1s
Add additional configuration option handling for tuning MySQL deployments.

Show diffs side-by-side

added added

removed removed

Lines of Context:
344
344
    DEFAULT_INNODB_BUFFER_FACTOR = 0.50
345
345
    DEFAULT_INNODB_BUFFER_SIZE_MAX = 512 * 1024 * 1024
346
346
 
 
347
    # Validation and lookups for InnoDB configuration
 
348
    INNODB_VALID_BUFFERING_VALUES = [
 
349
        'none',
 
350
        'inserts',
 
351
        'deletes',
 
352
        'changes',
 
353
        'purges',
 
354
        'all'
 
355
    ]
 
356
    INNODB_FLUSH_CONFIG_VALUES = {
 
357
        'fast': 2,
 
358
        'safest': 1,
 
359
        'unsafe': 0,
 
360
    }
 
361
 
347
362
    def human_to_bytes(self, human):
348
363
        """Convert human readable configuration options to bytes."""
349
364
        num_re = re.compile('^[0-9]+$')
407
422
            mysql_config['wait_timeout'] = config['wait-timeout']
408
423
 
409
424
        if 'innodb-flush-log-at-trx-commit' in config:
410
 
            mysql_config['innodb_flush_log_at_trx_commit'] = config['innodb-flush-log-at-trx-commit']
 
425
            mysql_config['innodb_flush_log_at_trx_commit'] = \
 
426
                config['innodb-flush-log-at-trx-commit']
 
427
        elif 'tuning-level' in config:
 
428
            mysql_config['innodb_flush_log_at_trx_commit'] = \
 
429
                self.INNODB_FLUSH_CONFIG_VALUES.get(config['tuning-level'], 1)
 
430
 
 
431
        if ('innodb-change-buffering' in config and
 
432
                config['innodb-change-buffering'] in self.INNODB_VALID_BUFFERING_VALUES):
 
433
            mysql_config['innodb_change_buffering'] = config['innodb-change-buffering']
 
434
 
 
435
        if 'innodb-io-capacity' in config:
 
436
            mysql_config['innodb_io_capacity'] = config['innodb-io-capacity']
411
437
 
412
438
        # Set a sane default key_buffer size
413
439
        mysql_config['key_buffer'] = self.human_to_bytes('32M')