cdelgehier.XtraDB-Cluster
Ansibleロール ansible-role-XtraDB-Cluster
Percona XtraDBクラスタをセットアップするためのAnsibleロールです。このロールの主な責任は次のとおりです:
- パッケージのインストール
- 接続のセキュリティ確保
- クラスタのブートストラップ
要件
特別な要件はありません。
ロール変数
基本設定
変数名 | デフォルト | コメント(タイプ) |
---|---|---|
xtradb_bind_address |
- | リスニングするIP |
xtradb_bind_interface |
eth0 |
クラスタで使用するインターフェース |
xtradb_cluster_name |
foo |
クラスタの名前 |
xtradb_configured |
xtradb_datadir /configured |
冪等性のためのクッキー |
xtradb_datadir |
/var/lib/mysql |
データのディレクトリ |
xtradb_master_node |
groups[xtradb_nodes_group][0] |
マスターに選ばれたノード |
xtradb_mysql_user |
mysql |
Galeraを実行するユーザー |
xtradb_nodes_group |
xtradb-cluster-nodes |
クラスタがインストールされるノードグループ |
xtradb_root_password |
root |
rootユーザーのパスワード |
xtradb_root_user |
root |
rootユーザー |
xtradb_secured |
xtradb_datadir /secured |
冪等性のためのクッキー |
xtradb_service |
mysql |
Linuxサービス名 |
xtradb_sst_password |
sstpassword |
xtradb_sst_user のパスワード |
xtradb_sst_user |
sstuser |
状態スナップショット転送に使用されるユーザー |
xtradb_swappiness |
0 |
"スワップ値"。システムのデフォルトは60。0はプロセスのスワッピングを回避する。 |
xtradb_databases |
[] | 追加されるデータベース名のリスト |
xtradb_users |
[] | 追加されるユーザーを指定する辞書のリスト |
xtradb_version |
57 |
XtraDBのパッケージバージョン |
MySQL部分
値の詳細については、MariaDB Server System Variablesのドキュメントを参照してください。
変数名 | デフォルト | コメント(タイプ) |
---|---|---|
xtradb_binlog_format |
ROW |
バイナリログの形式 |
xtradb_character_set_server |
utf |
文字セット |
xtradb_collation_server |
utf8_general_ci |
照合順序 |
xtradb_default_storage_engine |
InnoDB |
ストレージエンジンを設定 |
xtradb_innodb_autoinc_lock_mode |
2 |
3つの設定があります。“traditional”、“consecutive”、“interleaved” |
xtradb_innodb_buffer_pool_instances |
|
複数のバッファプールインスタンスを有効にするには、1より大きい値を設定(デフォルトは8) |
xtradb_innodb_buffer_pool_size |
|
良い値は利用可能なメモリの70%-80%。 |
xtradb_innodb_file_format |
|
|
xtradb_innodb_file_format_check |
|
|
xtradb_innodb_file_per_table |
|
|
xtradb_innodb_flush_log_at_trx_commit |
|
1に設定すると、すべてのトランザクションコミットでログバッファがフラッシュされる |
xtradb_innodb_log_buffer_size |
|
変更されたデータレコードをロギング。4MB - 8MBが良いスタート |
xtradb_innodb_log_file_size |
|
デフォルト値はMySQL 5.6で50MBに変更されました |
xtradb_innodb_file_per_table |
on |
MySQL 5.6以降からONがデフォルトです。 |
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は、Percona XtraDB Clusterでの実験的な機能を回避します |
xtradb_query_cache_size |
|
|
xtradb_read_buffer_size |
|
|
xtradb_read_rnd_buffer_size |
|
|
xtradb_skip_name_resolve |
1 |
IPアドレスのみ使用。0に設定するとホスト名を解決。 |
xtradb_slow_query_log |
0 |
1に設定するとスロークエリログが有効。 |
xtradb_socket |
|
|
xtradb_sort_buffer_size |
|
|
xtradb_table_definition_cache |
|
|
xtradb_table_open_cache |
|
|
xtradb_table_open_cache_instances |
|
|
xtradb_tmp_table_size |
|
データベースの追加
データベースは、name:
(必須)およびinit_script:
(オプション)を含む辞書で定義されます。
初期スクリプトは、データベースが作成されるときに実行されるSQLファイルで、テーブルを初期化し値を格納します。
xtradb_databases:
- name: keystone
- name: mydb
init_script: files/init_mydb.sql
ユーザーの追加
ユーザーは、name:
、password:
、priv:
、およびオプションでhost:
フィールドを含む辞書で定義されます。
パスワードは平文で、priv:
はこのユーザーの特権を指定します。詳細はAnsibleドキュメントを参照してください。
例:
xtradb_users:
- name: keystone
password: KEYSTONE_DBPASS
priv: 'keystone.*:SUPER'
- name: cdelgehier
password: yolo
priv: 'mydb.*:ALL'
host: '192.168.1.%'
依存関係
依存関係はありません。
例プレイブック
- 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" # 無効化
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
テスト
2つのテスト環境があります。一つはVagrant、もう一つはDockerで、後者はTravis-CIでの自動テストに適しています。テストコードは別のオーファンブランチに保管されています。これらのテスト環境を自分のマシンでセットアップする方法は、それぞれのブランチのREADMEファイルを参照してください:
- Docker: docker-tests
削除
すべての痕跡を削除し、新しいインストールを開始するには、
ansible db -m shell -a 'rm -rf /var/lib/mysql /var/log/mysqld.log /etc/percona-xtradb-cluster.conf.d ; yum remove Percona* -y'
貢献
問題、機能リクエスト、アイデアは歓迎します。Issuesセクションに投稿してください。
プルリクエストも大歓迎です。プルリクエストを提出する最良の方法は、まずこのGithubプロジェクトのフォークを作成し、その後提案された変更に対するトピックブランチを作成してそれを自分のフォークにプッシュすることです。Githubはそのブランチに基づいて簡単にPRを作成できます。
ライセンス
2条項BSDライセンス、詳細はLICENSE.mdを参照してください。
貢献者
- Cedric DELGEHIER (メンテナ)