cdelgehier.XtraDB-Cluster
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:
- Docker: docker-tests
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
- Cedric DELGEHIER (maintainer)
ansible-galaxy install cdelgehier.XtraDB-Cluster