timorunge.proxysql
proxysql
現在、この役割はProxySQL >= v2.0.1に対応していません。
この役割は、MySQLdbからPyMySQLへの移行のバグのため、Ansible 2.7.9以上としか互換性がありません (#40123)。
リリース0.3.0はAnsible 2.7.0以下と互換性があります。
この役割は、ProxySQLをインストールし設定します - 高性能で高可用性のMySQL用プロトコル対応プロキシです。
バージョン2.3.0以降、AnsibleはProxySQLを設定するための モジュールを提供しています。 このAnsibleの役割は、この機能を使用しながら、いくつかの(役立つことを望む)機能を追加しています:
- 異なるオペレーティングシステムのための自動インストール
- proxysql.cnfの(事前)生成
- ProxySQLクラスタの管理 (ProxySQLサーバーを設定する機能を追加するカスタムモジュールを使用)
- 動的および静的な
global_variables
の区別 - 必要に応じてProxySQLを再起動
このドキュメントの「既知の問題または: 知っておくべきこと」セクションもご覧ください。
要件
この役割は、Ansible 2.5.0以上を必要とします。
安定バージョンのインストール(および定義)には、pipを使用できます:
pip install ansible==2.7.9
すべてのプラットフォーム要件は、メタデータファイルに記載されています。
インストール
ansible-galaxy install timorunge.proxysql
ロール変数
この役割に渡すことができる変数。すべての変数については、defaults/main.ymlを参照してください。
# ProxySQLをサービスとして有効/無効にします。
# 型: Bool
proxysql_service_enabled: True
# 静的変数が変更された場合にProxySQLを再起動します。静的
# 変数のリストは`vars/main.yml`の`proxysql_non_dynamic_variables`を見てください。
# 型: Bool
proxysql_restart_on_static_variables_change: True
# リポジトリ
# `proxysql_use_official_repo`と`proxysql_use_percona_repo`の両方が
# `False`に設定されている場合、モジュールは自動的に定義された
# `proxysql_version`をGithubからパッケージとしてダウンロードし、同じものをインストールします。
# 公式のProxySQLリポジトリを使用します。
# 型: Bool
proxysql_use_official_repo: True
# Perconaリポジトリを使用します。
# 型: Bool
proxysql_use_percona_repo: False
# Perconaリポジトリのリリースバージョンを定義します。
# 型: Str
proxysql_percona_release: latest
# ProxySQLリポジトリを使用しない場合にインストールされるProxySQLのバージョンです。
# 型: Int
proxysql_version: 1.4.15
# 設定
# ProxySQLがデータベースとログを保存すべきパスです。
# 型: Str
proxysql_datadir: /var/lib/proxysql
# proxysql.cnfテンプレートを定義します。
# 型: Str
proxysql_proxysql_cnf_template: proxysql.cnf.j2
# proxysql-admin.cnfテンプレートを定義します。
# 型: Str
proxysql_proxysql_admin_cnf_template: proxysql-admin.cnf.j2
# ProxySQL自体の設定のためのログイン変数です。これらは
# `main.yml`ファイル内でのみ使用され、設定を簡略化するためにここでも使用されます。
# 型: Str
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
# グローバル变量
# `admin_variables`は`proxysql_global_variables_kv`内にあり、管理インターフェースの機能を制御するグローバル
# 变量を含みます。
# `admin_variables`は`admin-`で始まります。
# `mysql_variables`は`proxysql_global_variables_kv`内にあり、
# 受信するMySQLトラフィックの処理機能を制御するグローバル変数を含みます。
# `mysql_variables`は`mysql-`で始まります。
# 変数は文字列または整数である必要があります。真偽値は文字列としてマークしてください。例:"True"または"False"。
# 詳細については、次のサイトを参照してください:
# https://github.com/sysown/proxysql/wiki/Global-variables
# 形式:
# 型: Dict
# proxysql_global_variables:
# load_to_runtime: "True"
# save_to_disk: "True"
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
proxysql_global_variables:
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
# 形式:
# 型: Dict
# proxysql_global_variables_kv:
# key: value
# 例:
# proxysql_global_variables_kv:
# admin-admin_credentials: "{{ proxysql_login_admin_user }}:{{ proxysql_login_admin_password }}"
# admin-mysql_ifaces: "{{ proxysql_login_admin_host }}:{{ proxysql_login_admin_port }}"
# mysql-interfaces: 0.0.0.0:6033
# mysql-commands_stats: "True"
# mysql-threads: 4
proxysql_global_variables_kv: {}
# バックエンドサーバー
# `proxysql_backend_servers`:受信するMySQLトラフィックがルーティングされるバックエンドサーバーを定義します。
# 詳細については、次のサイトを参照してください:
# https://docs.ansible.com/ansible/latest/modules/proxysql_backend_servers_module.html
# 重要なこと:このモジュールは、データベース内の正しい名前である
# `hostgroup`を使用し、デフォルトは`hostgroup_id`です!
# 形式:
# 型: Dict
# proxysql_backend_servers:
# mysql-srv1-hg1:
# comment: mysql-srv1-hg1
# hostgroup: 1
# hostname: 172.16.77.101
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# max_connections: 1000
# max_replication_lag: 0
# status: ONLINE
# weight: 1
# mysql-srv1-hg2:
# comment: mysql-srv1-hg2
# hostgroup: 2
# hostname: 172.16.77.101
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# max_connections: 1000
# max_replication_lag: 0
# status: ONLINE
# weight: 1
proxysql_backend_servers: {}
# ProxySQLサーバー
# `proxysql_proxysql_servers`: クラスタ用のProxySQLサーバーを定義します。
# 詳細については、次のサイトを参照してください:
# `library/proxysql_proxysql_servers.py`
# 形式:
# 型: Dict
# proxysql_proxysql_servers:
# proxysql-srv-1:
# comment: proxysql-srv-1
# hostname: 172.16.77.201
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# weight: 0
# proxysql-srv-2:
# comment: proxysql-srv-2
# hostname: 172.16.77.202
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# weight: 0
proxysql_proxysql_servers: {}
# レプリケーショングループ
# `proxysql_replication_hostgroups`: 書き込みホストグループと読み取りホストグループのペアを示します。
# 詳細については、次のサイトを参照してください:
# https://docs.ansible.com/ansible/latest/modules/proxysql_replication_hostgroups_module.html
# 形式:
# 型: Dict
# proxysql_replication_hostgroups:
# Cluster:
# comment: Cluster
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# reader_hostgroup: 2
# writer_hostgroup: 1
proxysql_replication_hostgroups: {}
# ユーザー
# `proxysql_mysql_users`: プロキシに接続できるユーザーと、プロキシがバックエンドサーバーに接続できるユーザーを定義します。
# 詳細については、次のサイトを参照してください:
# http://docs.ansible.com/ansible/latest/proxysql_mysql_users_module.html
# 形式:
# 型: Dict
# proxysql_mysql_users:
# user1:
# active: 1
# backend: 1
# default_hostgroup: 1
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# max_connections: 10000
# password: Passw0rd
# username: user1
# user2:
# active: 1
# backend: 1
# default_hostgroup: 2
# login_host: "{{ proxysql_login_admin_host }}"
# login_password: "{{ proxysql_login_admin_password }}"
# login_port: "{{ proxysql_login_admin_port }}"
# login_user: "{{ proxysql_login_admin_user }}"
# max_connections: 1000
# password: dr0wssaP
# username: user2
proxysql_mysql_users: {}
# クエリルール
# `proxysql_query_rules`は受信するMySQLトラフィックを分類しルーティングするためのルールを定義します。
# 詳細については、次のサイトを参照してください:
# http://docs.ansible.com/ansible/latest/proxysql_query_rules_module.html
# 形式:
# 型: Dict
# proxysql_query_rules:
# catchall:
# active: 1
# destination_hostgroup: 1
# match_pattern: .*@.*
# rule_id: 1
# selectforupdate:
# active: 1
# destination_hostgroup: 1
# match_pattern: ^SELECT.*FOR UPDATE
# rule_id: 2
# select:
# active: 1
# destination_hostgroup: 2
# match_pattern: ^SELECT.*
# rule_id: 3
proxysql_query_rules: {}
# Percona ProxySQL Admin
# ProxySQL Admin(proxysql-admin)は、Percona XtraDBクラスターのノードをProxySQLに設定します。
# 詳細については、次のサイトを参照してください:
# https://github.com/percona/proxysql-admin-tool
# 形式:
# 型: Dict
# proxysql_percona_admin_tool:
# PROXYSQL_DATADIR: "{{ proxysql_datadir }}"
# PROXYSQL_USERNAME: "{{ proxysql_login_admin_user }}"
# PROXYSQL_PASSWORD: "{{ proxysql_login_admin_password }}"
# PROXYSQL_HOSTNAME: "{{ proxysql_login_admin_host }}"
# PROXYSQL_PORT: "{{ proxysql_login_admin_port }}"
# CLUSTER_USERNAME: admin
# CLUSTER_PASSWORD: admin
# CLUSTER_HOSTNAME: localhost
# CLUSTER_PORT: 3306
# MONITOR_USERNAME: monitor
# MONITOR_PASSWORD: monit0r
# CLUSTER_APP_USERNAME: proxysql_user
# CLUSTER_APP_PASSWORD: passw0rd
# WRITE_HOSTGROUP_ID: 10
# READ_HOSTGROUP_ID: 11
# MODE: singlewrite
proxysql_percona_admin_tool:
PROXYSQL_DATADIR: "{{ proxysql_datadir }}"
PROXYSQL_USERNAME: "{{ proxysql_login_admin_user }}"
PROXYSQL_PASSWORD: "{{ proxysql_login_admin_password }}"
PROXYSQL_HOSTNAME: "{{ proxysql_login_admin_host }}"
PROXYSQL_PORT: "{{ proxysql_login_admin_port }}"
例
1) 完全な設定例
ここでは、ProxySQLの完全な設定例を見ることができます。この場合、役割は1.4.15
パッケージを直接ダウンロードし、リポジトリを使用しません
(proxysql_use_official_repo
がFalse
に設定されています)。
これは、テスト用に使用されるtest.ymlファイルの基本的に(小さな変更あり)同じものです。
- hosts: proxysql
gather_facts: True
vars:
proxysql_version: 1.4.15
proxysql_service_enabled: True
proxysql_use_official_repo: True
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
proxysql_global_variables:
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
proxysql_global_variables_kv:
admin-admin_credentials: "{{ proxysql_login_admin_user }}:{{ proxysql_login_admin_password }}"
admin-mysql_ifaces: "{{ proxysql_login_admin_host }}:{{ proxysql_login_admin_port }}"
mysql-commands_stats: "True"
mysql-connect_retries_on_failure: 10
mysql-connect_timeout_server: 3000
mysql-default_charset: utf8
mysql-default_query_delay: 0
mysql-default_query_timeout: 300000
mysql-default_schema: information_schema
mysql-default_sql_mode: >
STRICT_TRANS_TABLES,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION
mysql-interfaces: 127.0.0.1:6033
mysql-max_connections: 8192
mysql-monitor_read_only_interval: 1500
mysql-monitor_read_only_timeout: 500
mysql-ping_timeout_server: 500
mysql-poll_timeout: 2000
mysql-query_retries_on_failure: 1
mysql-sessions_sort: "True"
mysql-threads: 4
proxysql_backend_servers:
mysql-srv1-hg1:
comment: mysql-srv1-hg1
hostgroup: 1
hostname: 172.16.77.101
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 1000
max_replication_lag: 0
status: ONLINE
weight: 1
mysql-srv1-hg2:
comment: mysql-srv1-hg2
hostgroup: 2
hostname: 172.16.77.101
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 1000
max_replication_lag: 0
status: ONLINE
weight: 1
mysql-srv2-hg2:
comment: mysql-srv2-hg2
hostgroup: 2
hostname: 172.16.77.102
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 2000
max_replication_lag: 5
status: ONLINE
weight: 1
mysql-srv3-hg2:
comment: mysql-srv3-hg2
hostgroup: 2
hostname: 172.16.77.103
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 2000
max_replication_lag: 5
status: OFFLINE_HARD
weight: 1
proxysql_proxysql_servers:
proxysql-srv-1:
comment: proxysql-srv-1
hostname: 172.16.77.201
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
port: 6032
weight: 0
proxysql-srv-2:
comment: proxysql-srv-2
hostname: 172.16.77.202
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
port: 6032
weight: 0
proxysql_replication_hostgroups:
Cluster:
comment: Cluster
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
reader_hostgroup: 2
writer_hostgroup: 1
proxysql_mysql_users:
user1:
active: 1
backend: 1
default_hostgroup: 1
fast_forward: 0
frontend: 1
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 10000
password: Passw0rd
transaction_persistent: 1
username: user1
user2:
active: 1
backend: 1
default_hostgroup: 1
fast_forward: 0
frontend: 1
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
max_connections: 1000
password: dr0wssaP
transaction_persistent: 1
username: user2
proxysql_query_rules:
catchall:
active: 1
apply: 1
destination_hostgroup: 1
flagIN: 0
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
match_pattern: .*@.*
negate_match_pattern: 0
rule_id: 1
selectforupdate:
active: 1
apply: 1
destination_hostgroup: 1
flagIN: 0
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
match_pattern: ^SELECT.*FOR UPDATE
negate_match_pattern: 0
rule_id: 2
select:
active: 1
apply: 0
destination_hostgroup: 2
flagIN: 0
login_host: "{{ proxysql_login_admin_host }}"
login_password: "{{ proxysql_login_admin_password }}"
login_port: "{{ proxysql_login_admin_port }}"
login_user: "{{ proxysql_login_admin_user }}"
match_pattern: ^SELECT.*
negate_match_pattern: 0
rule_id: 3
roles:
- timorunge.proxysql
2) 公式リポジトリからのインストール
ProxySQLリポジトリを使用します(proxysql_use_official_repo
がTrue
に設定されています)。
ProxySQLはUbuntu > 16.04用のパッケージを提供していません。
新しいUbuntuリリースの場合は、proxysql_use_official_repo
をFalse
に設定するか、
Perconaリポジトリを使用します。
テストセクションを確認して、公式リポジトリのカバレッジを確認してください。
- hosts: proxysql
vars:
proxysql_use_official_repo: True
proxysql_use_percona_repo: False
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
...
3) Perconaリポジトリからのインストール
ProxySQLリポジトリを使用します(proxysql_use_percona_repo
がTrue
に設定されています)。
テストセクションを確認して、Perconaリポジトリのカバレッジを確認してください。
- hosts: proxysql
vars:
proxysql_use_official_repo: False
proxysql_use_percona_repo: True
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
...
4) debまたはrpmパッケージからのインストール
ProxySQLを
GitHubリリースから直接インストールできます。proxysql_version
を定義するだけです。proxysql_use_official_repo
と
proxysql_use_percona_repo
をFalse
に設定します。
- hosts: proxysql
vars:
proxysql_version: 1.4.15
proxysql_use_official_repo: False
proxysql_use_percona_repo: False
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
...
5) 静的変数の変更後にProxySQLを再起動しない
静的変数の構成変更後に自分でProxySQLを再起動したい場合は、proxysql_restart_on_static_variables_change
を
False
に設定する必要があります。
この場合、既知の問題に直面することになりますが、大したことではありません。 この場合、冪等性テストは失敗します。
手動で再起動した後は、再度Ansibleを適用する必要はありません。
- hosts: proxysql
vars:
proxysql_use_official_repo: False
proxysql_restart_on_static_variables_change: False
proxysql_login_admin_host: 127.0.0.1
proxysql_login_admin_password: admin
proxysql_login_admin_port: 6032
proxysql_login_admin_user: admin
...
既知の問題または: 知っておくべきこと
1) Ubuntu 16.04でのProxySQL > 1.4.7の問題(修正済み)
Ubuntu 16.04では、Ansible(バージョンは関係ありません) / ProxySQL > 1.4.7が
mysql-python
/ python-mysqldb
を通じて正しく通信するのに問題があるようです。
例のエラー:
"サーバーを変更できません.. (1045, '認識されないトークン: \"\\'\\n AND compression = 0\\n AND weight = 1\\n AND use_ssl = 0\\n AND max_connections = 2000\\n AND max_latency_ms = 0\\n AND max_replication_lag = 5\"')"
注:
私は、Ubuntu 16.04上でpipを通じてインストールされたmysql-python
について
ちょっとした調査を行いました。心配しないでください。python-mysqldb
でも失敗します。
MySQLdb Pythonライブラリでは、execute
メソッド(クラスBaseCursor
)が
以下のようにクエリを生成します:
query = query % tuple([db.literal(item) for item in args])
db.literal
はConnection
クラスの一部であり、単一オブジェクトを文字列として、複数オブジェクトを
シーケンスとして戻し、それぞれのシーケンスを変換します。
def literal(self, o):
return self.escape(o, self.encoders)
self.escape
は、特別な文字を持つオブジェクトをすべてエスケープし、各タイプに対するクォート関数を提供するために
マッピング辞書を使用します。
文字列のマッピングはStringType: Thing2Literal
です。そのため、文字列は
Thing2Literal
メソッドでエスケープされます。
def Thing2Literal(o, d):
return string_literal(o, d)
string_literal
は文字列オブジェクトをSQL文字列リテラルに変換します。これは、特別なSQL文字がすべてエスケープされ、
一重引用符で囲まれます。言い換えれば、次の処理を行います:
"'%s'" % escape_string(str(obj))
文字列をエスケープする過程で、文字列オブジェクトは削除されて単一引用符('
)を返します。
テストではProxySQLのバージョンだけが変更されているため、ProxySQLの変更 (diff 1.4.7 vs. 1.4.8)が Ansibleの失敗を引き起こしていると考えています。ProxySQL自体は、Ansible経由で呼び出さなければ 正常に動作しているためです。
最後に…
この問題は、pipを通じて mysqlclientをインストールすることで解決されます。
2) Ubuntu > 16.04用パッケージの問題(修正済み)
ProxySQL自体は、Ubuntu > 16.04用の「最新」パッケージを提供していません。 このAnsible役割は、16.04リリースをダウンロードし、インストールすることで この問題を回避します(この動作は将来的に変更される可能性があります)。
Ubuntu >= 18.04からのlibcrypto++6
とlibssl1.0.0
に対するパッケージ依存は
自動的に解決されます。
3) 非動的グローバル変数
ProxySQLには、実行中に変更できないいくつかのglobal_variables
があります
(vars/main.ymlのproxysql_non_dynamic_variables
参照)。
とはいえ、ProxySQLロールは(proxysql.cnf
を生成することによって)この問題に
対処し、変数が変更された場合に自動的に再起動する機会を提供します。
この役割はProxySQLデータベース内でもこの値を設定し、ここで問題が始まります:
複数の静的変数を変更すると、技術的にはすべてが正常です。
ProxySQLは再起動し、proxysql.cnf
の新しい値を取得します。しかし、データベース自体では
最初の値だけが変更されます。
これは「大きな問題」ではありません。実際の値は設定ファイルから正しく取得されますが、 次回のAnsible実行で変更セットが見られることになります。
- ProxySQLは再度再起動されます
- 冪等性テストは失敗します(最初からブートストラップしない限り)
潜在的な解決策は、ProxySQLデータベース内でproxysql_non_dynamic_variables
を設定しないことかもしれません。
4) ProxySQLクラスタリング
ProxySQLクラスタリングはまだ実験的です。クラスタリング文書からの引用 (ProxySQLクラスタのドキュメント): "この機能はまだ実験段階にあるため、テーブルは自動的にディスクから読み込まれません。"
proxysql.cnf
からの初期化では、hostname
(明らかに)と
port
(デフォルト値を取らない)が定義されていることが重要です。
5) CentOSでのProxySQLとPerconaリポジトリ...
...依存関係に関するいくつかの問題があるため動作しません。
技術的には、Ansibleを正しく適用するために必要なパッケージは次の通りです:
proxysql_dependency_pkgs:
- MySQL-python
- mysql
Perconaリポジトリが有効な場合、MySQL-python
とmysql
のパッケージ依存が
衝突します。
yum install MySQL-python
yum install mysql
テスト
テストはDockerと docker_test_runnerで行われており、異なる環境設定で次のコンテナを起動します:
- CentOS 7
- Debian 9 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
すべてのコンテナにAnsible 2.7.9がインストールされ、テストプレイブックが 適用されます。
詳細や他のチェックについては、docker_test_runner設定と Dockerエントリポイントを確認してください。 以下の表に高レベルの概要があります:
ディストリビューション | バージョン | 公式リポジトリ | Perconaリポジトリ | パッケージ |
---|---|---|---|---|
CentOS | 7 | yes | no | 1.4.15 |
Debian | 9 | yes | yes | 1.4.15 |
Ubuntu | 16.04 | yes | yes | 1.4.15 |
Ubuntu | 18.04 | no | yes | 1.4.15 |
# ローカルでのテスト:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Travisのビルド時間は公開リポジトリでは制限されているため、自動テストは以下に限定されます:
- CentOS 7
- Debian 8 (Jessie)
- Debian 9 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
依存関係
- proxysql_proxysql_servers.py はこの役割のライブラリフォルダに追加されます。
ライセンス
BSD 3-Clause "New" or "Revised" License
著者情報
- ティモ・ルンゲ