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

CentOS用のMariaDBクラスターオフラインインストール

    インターネットで利用可能なインストール手順のほとんどは、データベースホストがパッケージリポジトリへのアクティブなインターネット接続を持ち、すべての依存関係を満たしていることを前提として、標準のオンラインインストールをカバーしています。ただし、インストール手順とコマンドは、オフラインインストールでは少し異なります。オフラインインストールは、セキュリティコンプライアンスのための金融および軍事部門のような厳格で安全な環境での一般的な方法であり、リスクを軽減し、機密性を維持します。

    このブログ投稿では、CentOSホストのオフライン環境に3ノードのMariaDBクラスターをインストールします。このインストールでは、次の3つのノードを検討してください。

    • mariadb1-192.168.0.241
    • mariadb2-192.168.0.242
    • mariadb3-192.168.0.243
    パッケージのダウンロード

    最も時間のかかる部分は、インストールに必要なすべてのパッケージを取得することです。まず、インストールするそれぞれのMariaDBリポジトリに移動します(この例では、OSはCentOS 7 64ビットです):

    • MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/
    • MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
    • MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
    • MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/
    • MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/

    すべてのMariaDB関連パッケージにまったく同じマイナーバージョンをダウンロードするようにしてください。この例では、MariaDBバージョン10.4.13をダウンロードしました。このリポジトリにはたくさんのパッケージがありますが、MariaDBクラスターを実行するためだけにそれらすべてが必要なわけではありません。一部のパッケージは古く、デバッグ用です。 MariaDB Galera10.4およびCentOS7の場合、MariaDB10.4リポジトリから次のパッケージをダウンロードする必要があります。

    • jemalloc
    • galera-3 / galera-4
    • libzstd
    • MariaDBバックアップ
    • MariaDBサーバー
    • MariaDBクライアント
    • MariaDB共有
    • MariaDB共通
    • MariaDB compat

    次のwgetコマンドは、ダウンロードプロセスを簡素化します。

    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
    wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

    これらのパッケージの一部には、他のパッケージへの依存関係があります。それらすべてを満たすには、オペレーティングシステムのISOイメージをマウントし、yumパッケージマネージャーにISOイメージをオフラインベースリポジトリとして使用するように指示するのがおそらく最善です。そうしないと、あるホスト/メディアから別のホスト/メディアにパッケージをダウンロード/転送しようとして多くの時間を浪費することになります。

    古いMariaDBパッケージをお探しの場合は、こちらのアーカイブリポジトリで検索してください。ダウンロードしたら、USBドライブ、DVDバーナー、またはデータベースホストに接続されているネットワークストレージを介して、パッケージをすべてのデータベースサーバーに転送します。

    ISOイメージをローカルにマウントする

    インストール中にいくつかの依存関係を満たす必要があります。これを簡単に実現する1つの方法は、データベースサーバーにオフラインのyumリポジトリを設定することです。まず、CentOS 7DVDISOイメージを最寄りのCentOSミラーサイトの「isos」ディレクトリからダウンロードする必要があります。

    $ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

    イメージを転送して直接マウントするか、DVDに書き込んでDVDドライブを使用してサーバーに接続することができます。この例では、ISOイメージをDVDとしてサーバーにマウントします。

    $ mkdir -p /media/CentOS
    $ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

    次に、CentOS-Media(c7-media)リポジトリを有効にし、標準のオンラインリポジトリ(base、updates、extras)を無効にします。

    $ yum-config-manager --disable base,updates,extras
    $ yum-config-manager --enable c7-media
    これでインストールの準備が整いました。

    MariaDBサーバーのインストールと構成

    必要なパッケージがすべて揃っていれば、インストール手順は非常に簡単です。まず、SElinuxを無効にする(または許容モードに設定する)ことをお勧めします:

    $ setenforce 0
    $ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

    すべてのパッケージが配置されているディレクトリ(この場合は/ root / installer /)に移動します。すべてのパッケージがそこにあることを確認してください:

    $ cd /root/installer
    $ ls -1
    galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
    jemalloc-3.6.0-1.el7.x86_64.rpm
    libzstd-1.3.4-1.el7.x86_64.rpm
    MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
    MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
    MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
    MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
    MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
    MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

    最初にsocatというmariabackup依存関係をインストールしてから、yum localinstallコマンドを実行してRPMパッケージをインストールし、すべての依存関係を満たします。

    $ yum install socat
    $ yum localinstall *.rpm

    MariaDBサービスを開始し、ステータスを確認します:

    $ systemctl start mariadb
    $ systemctl status mariadb
    プロセスでエラーが発生していないことを確認してください。次に、mysql_secure_installationスクリプトを実行して、MySQLルートパスワードと強化を構成します。

    $ mysql_secure_installation

    MariaDBルートパスワードがすべてのMariaDBホストで同一であることを確認してください。バックアップとSSTを実行するMariaDBユーザーを作成します。これは、MariaDBクラスターのSSTメソッドとして推奨されるmariabackupを使用する場合、およびバックアップの目的でも重要です。

    $ mysql -uroot -p
    MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
    MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];
    

    MariaDBクラスター機能をロードするには、デフォルトの構成ファイルを変更する必要があります。 /etc/my.cnf.d/server.cnfを開き、最小限の構成のために次の行が存在することを確認します。

    [mysqld]
    log_error = /var/log/mysqld.log
    
    [galera]
    wsrep_on=ON
    wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
    wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
    binlog_format=row
    default_storage_engine=InnoDB
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
    innodb_flush_log_at_trx_commit=2
    wsrep_sst_method=mariabackup
    wsrep_sst_auth=backup_user:P455w0rd
    wsrep_node_address=192.168.0.241 # change this

    wsrep_node_addressの値を、MariaDBクラスター通信用のデータベースノードのIPアドレスに変更することを忘れないでください。また、wsrep_providerの値は、インストールしたMariaDBサーバーとMariaDBクラスターのバージョンによって異なる場合があります。 libgalera_smm.soパスを見つけて、それに応じてここで指定します。

    すべてのデータベースノードで同じ手順を繰り返すと、クラスターを開始する準備が整います。

    クラスターのブートストラップ

    これは新しいクラスターであるため、任意のMariaDBノードを選択して、クラスターのブートストラッププロセスの参照ノードにすることができます。 mariadb1を選びましょう。最初にMariaDBが停止していることを確認してから、galera_new_clusterコマンドを実行してブートストラップします。

    $ systemctl stop mariadb
    $ galera_new_cluster
    $ systemctl status mariadb

    他の2つのノード(mariadb2とmariadb3)では、標準のMariaDB開始コマンドを使用して起動します:

    $ systemctl stop mariadb
    $ systemctl start mariadb

    すべてのノードのwsrep関連のステータスを確認して、すべてのノードがクラスターの一部であるかどうかを確認します。

    MariaDB> SHOW STATUS LIKE 'wsrep%';
    報告されたステータスが次のとおりであることを確認してください。

    wsrep_local_state_comment     | Synced
    wsrep_cluster_size            | 3
    wsrep_cluster_status          | Primary

    MariaDB10.4およびGaleraCluster4の場合、任意のMariaDBノードのテーブルmysql.wsrep_cluster_membersからクラスターメンバー情報を直接取得できます。

    $ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
    Enter password:
    +--------------------------------------+--------------------------------------+---------------+-----------------------+
    | node_uuid                            | cluster_uuid                         | node_name     | node_incoming_address |
    +--------------------------------------+--------------------------------------+---------------+-----------------------+
    | 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local  | AUTO                  |
    | 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local  | AUTO                  |
    | fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local  | AUTO                  |
    +--------------------------------------+--------------------------------------+---------------+-----------------------+

    クラスタのブートストラップ中に問題が発生した場合は、すべてのMariaDBノードの/var/log/mysqld.logにあるMySQLエラーログを確認してください。クラスターがブートストラップされて実行されたら、galera_new_clusterスクリプトを再度実行してMariaDBサービスを開始しないでください。 PRIMARY状態のデータベースノードがもうない場合を除いて、標準の「systemctl start/restartmariadb」コマンドを使用すれば十分です。このブログ投稿「MySQLまたはMariaDBクラスターをブートストラップする方法」をチェックして、このステップが重要である理由を理解してください。

    ボーナスステップ

    これで、監視および管理機能なしでデータベースクラスターが実行されています。データベースクラスターをClusterControlにインポートしてみませんか? ClusterControlを別のサーバーにインストールし、ClusterControlサーバーからすべてのデータベースノードへのパスワードなしのSSHをセットアップします。 ClusterControlサーバーのIPが192.168.0.240であると仮定して、ClusterControlサーバーで次のコマンドを実行します。

    $ whoami
    root
    
    $ ssh-keygen -t rsa # generate key, press Enter for all prompts
    $ ssh-copy-id [email protected] # root password on 192.168.0.241
    $ ssh-copy-id [email protected] # root password on 192.168.0.242
    $ ssh-copy-id [email protected] # root password on 192.168.0.243

    次に、ClusterControl->インポート-> MySQL Galeraに移動し、必要なSSHの詳細を入力します。

    MySQLサーバーの定義の2番目の手順で、[自動ノード検出]をオフに切り替えます。 "そしてデータベースノードのすべてのIPアドレスを指定し、IPアドレスの横に緑色のチェックマークが付いていることを確認します。これは、ClusterControlがパスワードなしのSSH経由でノードに到達できることを示します。

    [インポート]をクリックして、インポートジョブが完了するまで待ちます。クラスターリストの下に表示されます:

    これで手元にあります。 ClusterControlは、デフォルトで30日間の完全なエンタープライズ機能になり、有効期限が切れると、デフォルトでCommunityEditionに戻ります。これは永久に無料です。


    1. SQLServerのSalesforceSOQL

    2. SQLiteOpenHelper onCreateメソッドが呼び出されたとき?

    3. 2018年のMySQL:8.0およびその他の所見の内容

    4. コンテンツプロバイダーでのAndroid投影マップの目的は何ですか?