インターネットで利用可能なインストール手順のほとんどは、データベースホストがパッケージリポジトリへのアクティブなインターネット接続を持ち、すべての依存関係を満たしていることを前提として、標準のオンラインインストールをカバーしています。ただし、インストール手順とコマンドは、オフラインインストールでは少し異なります。オフラインインストールは、セキュリティコンプライアンスのための金融および軍事部門のような厳格で安全な環境での一般的な方法であり、リスクを軽減し、機密性を維持します。
このブログ投稿では、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
必要なパッケージがすべて揃っていれば、インストール手順は非常に簡単です。まず、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
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に戻ります。これは永久に無料です。