cdelgehier.XtraDB-Cluster

Status kompilacji

Rola Ansible ansible-role-XtraDB-Cluster

Rola Ansible do ustawienia klastra Percona XtraDB. Konkretne zadania tej roli to:

  • instalacja pakietów
  • zabezpieczenie połączeń
  • uruchomienie klastra

Wymagania

Brak specjalnych wymagań.

Zmienne roli

PODSTAWY

Zmienna Domyślna Uwagi (typ)
xtradb_bind_address - Adres IP, na którym nasłuchuje
xtradb_bind_interface eth0 Interfejs używany przez klaster
xtradb_cluster_name foo Nazwa klastra
xtradb_configured xtradb_datadir/configured Ciasteczko dla idempotencji
xtradb_datadir /var/lib/mysql Katalog z danymi
xtradb_master_node groups[xtradb_nodes_group][0] Wybrany węzeł jako master
xtradb_mysql_user mysql Użytkownik do uruchamiania galera
xtradb_nodes_group xtradb-cluster-nodes Grupa węzłów, w której zostanie zainstalowany klaster
xtradb_root_password root Hasło dla użytkownika root
xtradb_root_user root Użytkownik root
xtradb_secured xtradb_datadir/secured Ciasteczko dla idempotencji
xtradb_service mysql Nazwa usługi w systemie Linux
xtradb_sst_password sstpassword Hasło dla xtradb_sst_user
xtradb_sst_user sstuser Użytkownik używany do transferu stanu
xtradb_swappiness 0 Wartość "swappiness". Domyślna dla systemu to 60. Wartość 0 oznacza, że unika się wymiany procesów.
xtradb_databases [] Lista nazw baz danych do dodania
xtradb_users [] Lista słowników określających użytkowników do dodania. Więcej szczegółów poniżej.
xtradb_version 57 Wersja pakietu XtraDB

Część MySQL

Aby uzyskać więcej informacji na temat wartości, przeczytaj dokumentację Zmiennych systemowych serwera MariaDB.

Zmienna Domyślna Uwagi (typ)
xtradb_binlog_format ROW Format logowania binarnego
xtradb_character_set_server utf Zbiór znaków
xtradb_collation_server utf8_general_ci Uporządkowanie
xtradb_default_storage_engine InnoDB Ustawienie silnika przechowywania
xtradb_innodb_autoinc_lock_mode 2 Trzy możliwe ustawienia dla parametru konfiguracyjnego innodb_autoinc_lock_mode. Ustawienia to 0, 1 lub 2 dla „tradycyjnego”, „konsekwentnego” lub „przeplatankowego” trybu blokady.
xtradb_innodb_buffer_pool_instances Aby włączyć wiele instancji puli buforowej, ustaw opcję konfiguracyjną innodb_buffer_pool_instances na wartość większą niż 1 (domyślnie 8) do 64 (maksimum). Ta opcja działa tylko, gdy ustawisz innodb_buffer_pool_size na wartość 1GB lub więcej. Całkowity rozmiar, który określisz, jest dzielony między wszystkie pule buforowe.
xtradb_innodb_buffer_pool_size Dobry rozmiar to 70%-80% dostępnej pamięci.
xtradb_innodb_file_format
xtradb_innodb_file_format_check
xtradb_innodb_file_per_table
xtradb_innodb_flush_log_at_trx_commit Gdy innodb_flush_log_at_trx_commit jest ustawione na 1, bufor logów jest opróżniany przy każdym zatwierdzeniu transakcji do pliku logu na dysku, co zapewnia maksymalną integralność danych, ale wpływa na wydajność. Ustawienie na 2 oznacza, że bufor logów jest opróżniany do pamięci podręcznej plików systemu operacyjnego przy każdym zatwierdzeniu transakcji.
xtradb_innodb_log_buffer_size Innodb zapisuje zmienione dane w swoim buforze logów, który jest przechowywany w pamięci, co oszczędza operacje dyskowe dla dużych transakcji. 4 MB - 8 MB to dobry początek, chyba że zapisujesz dużo ogromnych obiektów.
xtradb_innodb_log_file_size Domyślna wartość została zmieniona w MySQL 5.6 na 50 MB z 5 MB (stara domyślna wartość), ale nadal jest zbyt mała dla wielu obciążeń.
xtradb_innodb_file_per_table on innodb_file_per_table jest WŁĄCZONY domyślnie w MySQL 5.6. Zwykle jest to zalecane, ponieważ unika posiadania ogromnej wspólnej przestrzeni tabel oraz pozwala odzyskać miejsce po usunięciu lub obcięciu tabeli.
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 jest zaprojektowany, aby unikać używania eksperymentalnych i nieobsługiwanych funkcji w Percona XtraDB Cluster.
xtradb_query_cache_size
xtradb_read_buffer_size
xtradb_read_rnd_buffer_size
xtradb_skip_name_resolve 1 Używaj tylko adresów IP. Ustaw na 0, aby rozwiązać nazwy hostów.
xtradb_slow_query_log 0 Ustaw na 1, aby włączyć logowanie wolnych zapytań.
xtradb_socket
xtradb_sort_buffer_size
xtradb_table_definition_cache
xtradb_table_open_cache
xtradb_table_open_cache_instances
xtradb_tmp_table_size

Dodawanie baz danych

Bazy danych definiuje się za pomocą słownika zawierającego pola name: (wymagane) i init_script: (opcjonalne). Skrypt inicjalizujący to plik SQL, który jest wykonywany podczas tworzenia bazy danych w celu zainicjowania tabel i wypełnienia ich wartościami.

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

Dodawanie użytkowników

Użytkownicy są definiowani za pomocą słownika zawierającego pola name:, password:, priv: i opcjonalnie host:. Hasło jest w formacie tekstowym, a priv: określa uprawnienia dla tego użytkownika, jak opisano w dokumentacji Ansible.

Przykład:

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

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

Zależności

Brak zależności.

Przykładowy 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"   # wyłączone
      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

Testowanie

Dostępne są dwa typy środowisk testowych. Jedno obsługiwane przez Vagrant, drugie przez Docker. To drugie nadaje się do przeprowadzania automatycznych testów na Travis-CI. Kod testowy jest przechowywany w osobnych, orphans branchach. Aby uzyskać szczegóły dotyczące konfigurowania tych środowisk testowych na własnym komputerze, zapoznaj się z plikami README w odpowiednich branchach:

Usunięcie

Aby usunąć wszystkie ślady i rozpocząć nową instalację

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

Wkład

Sugestie dotyczące problemów, nowych funkcji lub pomysłów są mile widziane i mogą być zgłaszane w sekcji Problemy.

Prośby o dodanie nowych funkcji również są bardzo mile widziane. Najlepszym sposobem na przesłanie PR jest najpierw stworzenie forka tego projektu GitHub, następnie stworzenie gałęzi tematycznej dla proponowanej zmiany i przesłanie tej gałęzi do swojego forka. GitHub może następnie łatwo utworzyć PR na podstawie tej gałęzi.

Licencja

Licencja BSD 2-klausowa, zobacz LICENSE.md.

Współtwórcy

O projekcie

Install and configure a Cluster Mysql

Zainstaluj
ansible-galaxy install cdelgehier.XtraDB-Cluster
Licencja
other
Pobrania
544
Właściciel