sql >> データベース >  >> RDS >> Mysql

MySQLデータベース展開の自動化

    最近は自動化が流行しています。テクノロジーは急速に進化し、より多くの人々が既存の利用可能なサードパーティの自動化ソフトウェアプラットフォームに貢献しています。ペースの速い展開のシーズンとして、自動化が必要になり、事実上のものと見なされています。必要と思われるものを自動化することはできません。これらの必需品は、物事を迅速に実行し、冗長なタスクを排除するために重要です。これが存在すると、組織や企業は、成長をより面白くする論理的なビジネスに集中できます。このブログでは、データベース自動化の簡単な概要ツールと考慮事項について説明し、続いてデータベース自動化にClusterControlを使用する方法に関するトピックを取り上げます。

    データベース展開自動化のテクノロジー

    Puppet、Chef、Ansible、SaltStack、TerraformなどのInfrastructure as Code(IaC)向けの洗練されたツールは、通常、選択できる主流のテクノロジーです。これらのツールは、MySQLのデプロイなど、簡単に複製できるタスクでDBAを支援します。 MySQLのデプロイを自動化すると、特に、QA、ステージング、または開発環境にデプロイするためのソフトウェアエンジニアリングサイクルの手順をサポートおよび実行するための広範なプラットフォームがある場合に、時間を大幅に節約できます。

    自動化を使用すると、必要なときにこれらをすばやく簡単に管理できます。

    自動化ソフトウェアの選択

    このブログでは、Ansibleを使ってみましょう。前述のように、サードパーティのソフトウェアを使用すると、特にMySQLクラスターをデプロイするための自動化をより簡単かつ迅速に提供できます。次に、既存のモジュール、特に利用可能なAnsibleロールを使用します。以前のブログで述べたように、Ansible Galaxy(ansibleコレクションとロールのリポジトリ)を使用できます。

    その前に、展開の影響を受けるホストを宣言する必要があります。たとえば、このブログには次のようなものがあります。

    $ cat /etc/hosts
    192.168.30.40 debnode4
    192.168.30.50 debnode5

    次に、/ etc / ansible/hostsファイルにあります

    [email protected]:〜#tail -n2 / etc / ansible / hosts

    debnode4
    debnode5

    次に、以下のようにファイルmain.ymlを作成します。

    [email protected]:~/deploy-mysql# cat main.yml
    ---
    # tasks file for deploy-mysql
    - hosts: all
      become: yes
      vars_files:
        - vars/main.yml
      roles:
        - role: geerlingguy.mysql

    自動化にAnsibleを使用したこの単純なMySQLデプロイメントにUbuntu16.04を使用して実行しているため、これが発生します。

    [email protected]:~/deploy-mysql# cat vars/main.yml
    ---
    # vars file for deploy-mysql
    mysql_root_password: "[email protected]"
    mysql_python_package_debian: python-mysqldb

    これで、MySQLデプロイメントのテストが表示されます

    [email protected]:~/deploy-mysql# ansible all -a  "mysql -Nse 'select concat(\"hello world at \", @@hostname,\"\!\");' " 2>/dev/null
    debnode4 | CHANGED | rc=0 >>
    hello world at debnode4!
    debnode5 | CHANGED | rc=0 >>
    hello world at debnode5!

    自動化してから、定式化します

    上記で示したように、自動化して既存のものを利用することをお勧めします。このブログでは、Ansibleを選択しました。これは、この例のロールなどの既存のモジュールと、MySQLサーバーをデプロイするためのいくつかの手順を利用する方が簡単だからです。

    もちろん、それはそれほど単純ではありません。このような既存の役割は、レプリケーションと調整する変数をサポートします。既存のモジュールでできることは何でも、独自のモジュールを再発明するのではなく、それを利用してください。既存のものを使用して、必要に応じて変更することができます。

    自動化のためのClusterControl

    ClusterControlは、MySQLの展開を上手に自動化します。独自に作成する代わりに、ClusterControlは無料でダウンロードでき、MySQLを必要な回数だけデプロイするために使用できます。このソフトウェアを使用して、ライターとリーダーのレプリケーションまたはライターとライターのレプリケーションのセットアップをセットアップできます。以下のスクリーンショットを確認してください:

    必要なのは、目的のMySQLの送信元ホスト/IPアドレスを指定することだけです。サーバー。

    ClusterControlデプロイメント自動化は、サーバーがデプロイされるジョブを管理する準備ができているかどうかを判断するための事前チェックを実行します。これには、アクセシビリティ、ストレージの可用性、およびハードウェア容量が含まれます。チェックは、ジョブを実行する準備ができたら調整される変数に合わせて調整されます。以下のスクリーンショットを確認してください:

    ジョブアクティビティログに基づいて、調整されていることがわかります。サポートしているLinuxシステムの変数またはパラメーター。以下のスクリーンショットの例も見ると、メモリとディスクの可用性がチェックされ、MySQLのデプロイの準備ができています。したがって、MySQLを正常に実行するだけでなく、ClusterControlがサーバーと、監視用に収集したサーバーとそのサービスを監視および登録するために必要なパッケージをインストールします。

    ClusterControl開発者ツール

    ClusterControlには、アドバイザー専用の独自のスクリプトを作成できる機能があります。 MySQLデータベース展開の自動化にとってこれがどれほど重要であるかは、データベースが登録および展開されると、独自のアドバイザをさらに拡張または作成できることです。たとえば、以前のブログ「ClusterControlAdvisorを使用してSELinuxおよびMeltdown/ Spectreのチェックを作成する:パート1」を確認してください。展開後、最初のアドバイザを作成し、エクスプロイトを定期的にチェックできます。それだけでなく、ニーズに固有のカスタムパラメータを確認することもできます。

    ClusterControls9sCLIツール

    ClusterControlには、s9s CLIツールと呼ばれるCLIツールがあります。これは、githubリポジトリにあります。 s9s CLIツールを使用すると、1つのコマンドでMySQLをデプロイできます。たとえば、

    $ s9s cluster --create \
            --cluster-type=mysqlreplication \     --nodes="192.168.1.117?master;192.168.1.113?slave;192.168.1.115?slave;192.168.1.116?master;192.168.1.118?slave;192.168.1.119?slave;" \
            --vendor=oracle \
            --db-admin="root" \
            --db-admin-passwd="root123" \
            --cluster-name=ft_replication_23986 \
            --provider-version=5.7 \
            --log

    上記のコマンドを使用すると、マスターかスレーブかに関係なく、引数とともに次のIPアドレスを指定してMySQLレプリケーションクラスターをデプロイできます。

    このツールは、MySQLなど、サポートしているお気に入りのデータベースの自動展開だけでなく、より強力で効率的な機能を提供します。 s9s CLIツールの詳細については、ClusterControlのドキュメントを確認してください


    1. Laravel-5'LIKE'相当(Eloquent)

    2. PostgreSQLが実行されたクエリを確認する方法

    3. 高可用性のためにPostgreSQLストリーミングレプリケーションでOdoo12をクラスター化する方法

    4. MySQLで月と年でグループ化