daixijun.mysql

mysql

ビルドステータス Ansible Galaxy GitHub タグ (最新 SemVer)

MySQLクラスターの迅速なデプロイに使用されます。

以下のクラスタータイプをサポートしています:

  • GTIDベースの主従複製
  • デフォルトでSemi-Syncを有効化
  • MHAアーキテクチャに基づく主従複製
  • MGR単一マスター(デフォルト)
  • MGRマルチマスター
  • レプリカセット複製

サポートしているMySQLバージョン:

環境要件

  • CentOS 7以上
  • Ansible 2.9以上
  • MySQL 8.0以上

変数

変数名 タイプ デフォルト値 変数説明
mysql_version 文字列 8.0.23 MySQLバージョン
mysql_upgrade 真偽値 false バージョンアップの実行が必要かどうか
mysql_download_url 文字列 インストール不要の圧縮ファイルのダウンロードURL
mysql_inventory_group 文字列 mysql Ansibleホストインベントリ内のグループ名(デフォルトはmysql
mysql_basedir 文字列 /usr/local/mysql インストールディレクトリ
mysql_datadir 文字列 /data/mysql データファイルの保存ディレクトリ
mysql_logdir 文字列 /var/log/mysqld ログ保存ディレクトリ
mysql_pidfile 文字列 /var/run/mysqld/mysqld.pid PIDファイルの場所
mysql_socket 文字列 /var/run/mysqld/mysqld.sock ソケットファイルの場所
mysql_port 整数 3306 リッスンポート
mysql_bind_address 文字列 0.0.0.0 リッスンアドレス
mysql_interface 文字列 "" 指定するネットワークインターフェース、デフォルトではlo以外の最初のインターフェースを使用します
mysql_default_time_zone 文字列 +8:00 タイムゾーンの指定
mysql_character_set_server 文字列 utf8mb4 デフォルト文字セット
mysql_collation_server 文字列 utf8mb4_general_ci デフォルト照合順序
mysql_max_connections 整数 1005 最大接続数
mysql_max_user_connections 整数 1000 ユーザーの最大接続数、mysql_max_connectionsより少ない必要があり、管理者用にいくつかの接続を確保する必要があります
mysql_interactive_timeout 整数 28800 サーバーがインタラクティブ接続を閉じる前に待機する活動の秒数
mysql_wait_timeout 整数 28800 サーバーが非インタラクティブ接続を閉じる前に待機する活動の秒数
mysql_max_connect_errors 整数 200 最大接続エラー数
mysql_root_password 文字列 "" rootアカウントのパスワード
mysql_cluster_type 文字列 mgr クラスタータイプ(デフォルトはmgr) mgr(Mysql Group Replication)またはms(Master-Slave)
mysql_cluster_name 文字列 default クラスターの名前、InnodbCluster/ReplicaSetに適用されます
mysql_mha_enabled 真偽値 false MHAに基づく主従の高可用性を有効にするかどうか
mysql_mha_config_dir 文字列 /etc/mha MHA設定ファイルディレクトリ
mysql_mha_manager_workdir 文字列 /var/log/mha MHA作業ディレクトリ、ログとステータス情報の保存場所
mysql_mha_user 文字列 mha MySQLを管理するための接続ユーザー、ALL特権が必要
mysql_mha_password 文字列 "" MySQL管理パスワード
mysql_mha_repl_user 文字列 repl MySQL主従複製のためのアカウント
mysql_mha_repl_password 文字列 "" MySQL主従複製のためのパスワード
mysql_mha_ssh_user 文字列 root ノード間通信のSSHユーザー
mysql_mha_ssh_port 整数 22 ノード間通信のSSHポート
mysql_mha_ping_interval 整数 2 マスターノードの状態ハートビート間隔
mysql_mha_vip 文字列 "" マスターノードにバインドされるVIP
mysql_mha_wechat_token 文字列 "" 企業微信ボットのキー、アラート通知を送信するため
mysql_mha_proxy 文字列 "" アラート通知送信(send_report)スクリプトで使用するプロキシ
mysql_repl_user 文字列 repl 主従/グループ複製のためのアカウント
mysql_repl_password 文字列 主従/グループ複製のためのアカウントのパスワード
mysql_group_replication_name uuid "" グループ複製クラスター名、MySQLでSELECT UUID()またはシェルでuuidgenを使用して生成
mysql_group_replication_single_primary_mode 真偽値 true MGRクラスターが単一マスターかどうか
mysql_innodb_cluster_enable 真偽値 true Innodb Clusterを有効にするかどうか
mysql_innodb_cluster_username 文字列 ic Innodb Clusterの作成と管理のためのアカウント、ALL WITH GRANT OPTION特権が必要
mysql_innodb_cluster_password 文字列 "" 管理パスワード
mysql_proxysql_config 真偽値 false proxysqlをプロキシとして使用するかどうか
mysql_proxysql_monitor_username 文字列 monitor proxysqlがMGRの状態を監視するためのアカウント
mysql_proxysql_monitor_password 文字列 "" proxysqlがMGRの状態を監視するためのパスワード
mysql_databases 配列 [] 作成するビジネスデータベース
mysql_users 配列 [] 作成するユーザー

依存関係

コレクション:

使用例

インストール

ansible-galaxy collection install -r requirements.yml

使用方法

- hosts: servers
  roles:
    - { role: mysql, mysql_version: 8.0.20 }

知られている問題

  • mysql_userモジュールがMySQL 8.0以降のバージョンでユーザーにALL権限を付与する際に冪等性の問題が発生します 冪等性全付与

TODO

  • 主従モードで半同期複製をサポート
  • MHA下での副作用テストを改善
  • バージョン更新をサポート
  • ノード再構築をサポート
  • 極端な状況下でMGRクラスターの全ノードがダウンした場合、最大のgtidインスタンスを特定してクラスターを再起動する必要があります。

クラスター異常復旧

MGRクラスターの非同期ダウン後の回復

共通集合を取り、SELECT RECEIVED_TRANSACTION_SET from performance_schema.replication_connection_status + show variables like 'gtid_executed'を実行し、最大の主を選択してprimaryとします。

プロジェクトについて

安装mysql,并配置主从或MGR集群

インストール
ansible-galaxy install daixijun.mysql
ライセンス
mit
ダウンロード
238
所有者