cdelgehier.XtraDB-Cluster

Build-Status

Ansible-Rolle ansible-role-XtraDB-Cluster

Eine Ansible-Rolle zum Einrichten eines Percona XtraDB Clusters. Die Aufgaben dieser Rolle sind:

  • Pakete installieren
  • Verbindungen sichern
  • Den Cluster initialisieren

Anforderungen

Keine speziellen Anforderungen

Rollenvariablen

GRUNDLAGEN

Variable Standard Kommentare (Typ)
xtradb_bind_address - Die hörende IP
xtradb_bind_interface eth0 Die vom Cluster verwendete Schnittstelle
xtradb_cluster_name foo Ein Name für den Cluster
xtradb_configured xtradb_datadir/konfiguriert Ein Cookie für Idempotenz
xtradb_datadir /var/lib/mysql Verzeichnis der Daten
xtradb_master_node groups[xtradb_nodes_group][0] Der gewählte Knoten als Master
xtradb_mysql_user mysql Der Benutzer für Galera
xtradb_nodes_group xtradb-cluster-nodes Knoten-Gruppe, in der der Cluster installiert wird
xtradb_root_password root Passwort für den Root-Benutzer
xtradb_root_user root Der Root-Benutzer
xtradb_secured xtradb_datadir/gesichert Ein Cookie für Idempotenz
xtradb_service mysql Name des Linux-Dienstes
xtradb_sst_password sstpassword Passwort für den xtradb_sst_user
xtradb_sst_user sstuser Benutzer für den Zustandssnapshot-Transfer
xtradb_swappiness 0 "Swappiness"-Wert. Standardwert des Systems ist 60. Ein Wert von 0 bedeutet, dass der Austausch von Prozessen vermieden wird.
xtradb_databases [] Liste der Namen der hinzuzufügenden Datenbanken
xtradb_users [] Liste der Diktate, die die hinzuzufügenden Benutzer spezifizieren. Siehe unten für Details.
xtradb_version 57 Paketversion von XtraDB

MySQL-Teil

Für mehr Informationen zu den Werten lesen Sie die Dokumentation zu den MariaDB Server-Systemvariablen.

Variable Standard Kommentare (Typ)
xtradb_binlog_format ROW Das format für die binäre Protokollierung
xtradb_character_set_server utf Der Zeichensatz
xtradb_collation_server utf8_general_ci Die Sortierreihenfolge
xtradb_default_storage_engine InnoDB Einstellung des Speicher-Engine
xtradb_innodb_autoinc_lock_mode 2 Es gibt drei mögliche Einstellungen für den Parameter innodb_autoinc_lock_mode: 0, 1 oder 2, für “traditionell”, “fortlaufend” oder “interleaved” Sperrmodus.
xtradb_innodb_buffer_pool_instances Um mehrere Pufferpool-Instanzen zu aktivieren, setzen Sie die Konfigurationsoption innodb_buffer_pool_instances auf einen Wert größer als 1 (8 ist der Standard) bis maximal 64.
xtradb_innodb_buffer_pool_size Ein guter Wert ist 70%-80% des verfügbaren Speichers.
xtradb_innodb_file_format
xtradb_innodb_file_format_check
xtradb_innodb_file_per_table
xtradb_innodb_flush_log_at_trx_commit Bei einer Einstellung von 1 wird der Log-Puffer bei jedem Transaktionscommit auf die Protokolldatei auf der Festplatte ausgegeben.
xtradb_innodb_log_buffer_size Innodb schreibt geänderte Datensätze in seinen Log-Puffer, der im Speicher gehalten wird.
xtradb_innodb_log_file_size Der Standardwert wurde in MySQL 5.6 von 5 MB auf 50 MB geändert.
xtradb_innodb_file_per_table on innodb_file_per_table ist in MySQL 5.6 standardmäßig aktiviert.
xtradb_innodb_strict_mode on
xtradb_join_buffer_size
xtradb_log_warnings
xtradb_long_query_time
xtradb_max_allowed_packet
xtradb_max_connections 4096
xtradb_max_heap_table_size
xtradb_max_user_connections
xtradb_pxc_strict_mode ENFORCING PXC Strict Mode soll die Verwendung von experimentellen und nicht unterstützten Funktionen in Percona XtraDB Cluster vermeiden.
xtradb_query_cache_size
xtradb_read_buffer_size
xtradb_read_rnd_buffer_size
xtradb_skip_name_resolve 1 Nur IP-Adressen verwenden. Setzen Sie es auf 0, um Hostnamen aufzulösen.
xtradb_slow_query_log 0 Auf 1 setzen, um das Protokoll langsamer Abfragen zu aktivieren.
xtradb_socket
xtradb_sort_buffer_size
xtradb_table_definition_cache
xtradb_table_open_cache
xtradb_table_open_cache_instances
xtradb_tmp_table_size

Hinzufügen von Datenbanken

Datenbanken werden mit einem Diktat definiert, das die Felder name: (erforderlich) und init_script: (optional) enthält. Das Init-Skript ist eine SQL-Datei, die ausgeführt wird, wenn die Datenbank erstellt wird, um Tabellen zu initialisieren und mit Werten zu füllen.

xtradb_databases:
  - name: keystone
  - name: mydb
    init_script: files/init_mydb.sql

Hinzufügen von Benutzern

Benutzer werden mit einem Diktat definiert, das die Felder name:, password:, priv: und optional host: enthält. Das Passwort ist im Klartext und priv: gibt die Berechtigungen für diesen Benutzer an, wie in der Ansible-Dokumentation beschrieben.

Ein Beispiel:

xtradb_users:
  - name: keystone
    password: KEYSTONE_DBPASS
    priv: 'keystone.*:SUPER'

  - name: cdelgehier
    password: yolo
    priv: 'mydb.*:ALL'
    host: '192.168.1.%'

Abhängigkeiten

Keine Abhängigkeiten.

Beispiel-Playbook

- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_bind_address: "{{ ansible_default_ipv4.address }}"
      xtradb_wsrep_cluster_address: "gcomm://{{ groups['db'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | join(',') }}"
      xtradb_master_node: "{{ hostvars[ groups['db'][0] ].ansible_default_ipv4.address }}"
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo
      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0

      xtradb_databases:
        - name: keystone
      xtradb_users:
        - name: keystone
          password: PASSWD
          priv: 'keystone.*:GRANT,ALL'

      xtradb_innodb_buffer_pool_instances: 8
      xtradb_innodb_buffer_pool_size: "384M"
      xtradb_innodb_file_format: "Barracuda"
      xtradb_innodb_file_format_check: "1"
      xtradb_innodb_file_per_table: "on"
      xtradb_innodb_flush_log_at_trx_commit: "1"
      xtradb_innodb_log_buffer_size: "16M"
      xtradb_innodb_log_file_size: "50M"
      xtradb_innodb_strict_mode: "on"
      xtradb_join_buffer_size: "128K"
      xtradb_log_warnings: "1"
      xtradb_long_query_time: "10"
      xtradb_max_allowed_packet: "16M"
      xtradb_max_connections: "505"
      xtradb_max_heap_table_size: "16M"
      xtradb_max_user_connections: "500"
      xtradb_query_cache_size: "0"   # deaktivieren
      xtradb_read_buffer_size: "128K"
      xtradb_read_rnd_buffer_size: "256k"
      xtradb_skip_name_resolve: "1"
      xtradb_slow_query_log: "1"
      xtradb_sort_buffer_size: "2M"
      xtradb_table_definition_cache: "1400"
      xtradb_table_open_cache: "2000"
      xtradb_table_open_cache_instances: "8"
      xtradb_tmp_table_size: "16M"
[db]
node1 ansible_host=192.168.1.173
node2 ansible_host=192.168.1.156
node3 ansible_host=192.168.1.154

Testen

Es gibt zwei Arten von Testumgebungen. Eine, die von Vagrant betrieben wird, und eine andere, die von Docker betrieben wird. Letztere ist geeignet für automatisierte Tests auf Travis-CI. Der Testcode wird in separaten Orphan-Branches aufbewahrt. Für Details, wie Sie diese Testumgebungen auf Ihrem eigenen Rechner einrichten, siehe die README-Dateien in den jeweiligen Branches:

Entfernen

Um alle Spuren zu entfernen und eine neue Installation zu starten

ansible db -m shell -a 'rm -rf /var/lib/mysql /var/log/mysqld.log /etc/percona-xtradb-cluster.conf.d ; yum remove Percona* -y'

Mitwirken

Probleme, Funktionsanfragen und Ideen sind willkommen und können im Abschnitt für Probleme veröffentlicht werden.

Pull-Anfragen sind ebenfalls sehr willkommen. Der beste Weg, um einen PR einzureichen, ist, zunächst ein Fork dieses Github-Projekts zu erstellen, dann einen Themen-Branch für die vorgeschlagene Änderung zu erstellen und diesen Branch in Ihr eigenes Fork hochzuladen. Github kann dann einfach einen PR basierend auf diesem Branch erstellen.

Lizenz

Lizenz nach 2-Klauseln-BSD-Lizenz, siehe LICENSE.md

Mitwirkende

Über das Projekt

Install and configure a Cluster Mysql

Installieren
ansible-galaxy install cdelgehier.XtraDB-Cluster
Lizenz
other
Downloads
544