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ファイルを参照してください:

削除

すべての痕跡を削除し、新しいインストールを開始するには、

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を参照してください。

貢献者

プロジェクトについて

Install and configure a Cluster Mysql

インストール
ansible-galaxy install cdelgehier.XtraDB-Cluster
ライセンス
other
ダウンロード
544