MySQL Clusterは、MySQL互換データベースに高可用性と低レイテンシーを提供するように設計されています。 MySQLクラスターテクノロジーは、NDB(ネットワークデータベース)およびNDBCLUSTERストレージエンジンを介して実装され、MySQLデータベースシステムにシェアードナッシングクラスタリングおよび自動シャーディングを提供します。シェアードナッシングアーキテクチャでは、各ノードに独自のメモリとディスクがあり、NFS、SANなどの共有ストレージの使用は推奨およびサポートされていません。
MySQLクラスターを実装するには、3種類のノードをインストールする必要があります。各ノードタイプは、独自のサーバーにインストールされます。コンポーネントは次のとおりです。
1.管理ノード-NDB_MGMD/MGM
クラスタ管理サーバーは、クラスタの他のノードを管理するために使用されます。新しいノードの作成と構成、クラスター上のノードの再起動、削除、またはバックアップを管理ノードから行うことができます。
2。 データノード-NDBD/NDB
これは、ノード間の同期とデータレプリケーションのプロセスが発生するレイヤーです。
3. SQLノード-MySQLD/API
アプリケーションがデータベースクラスターに接続するために使用するインターフェースサーバー。
このチュートリアルでは、centOS 7を使用したMySQLクラスターのインストールと構成について説明します。管理ノード、2つのデータノード、および2つのSQLノードを構成します。
- OSはCentOS7-64ビットです。
- 5つのCentOSサーバーまたは仮想マシン。以下に示すように、ホスト名とIPアドレスを使用します。
- 管理ノード
db1 =192.168.1.120 - データノード
db2 =192.168.1.121
db3 =192.168.1.122 - SQLノード
db4 =192.168.1.123
db5 =192.168.1.124
最初のステップは、CentOS 7 db1で「管理ノード」を作成することです。 およびIP192.168.1.120 。 rootユーザーとしてdb1サーバーにログインしていることを確認してください。
A。 MySQLClusterソフトウェアをダウンロードする
MySQLサイトからwgetでダウンロードします。ここでは、CentOS7と互換性のある「RedHatEnterprise Linux 7 / Oracle Linux 7(x86、64ビット)、RPMバンドル」を使用しています。次にtarファイルを抽出します。
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B。パッケージのインストールと削除
MySQL Clusterのrpmパッケージをインストールする前に、 perl-Data-Dumperをインストールする必要があります。 これは、MySQL-Clusterサーバーに必要です。そして、 mariadb-libsを削除する必要があります MySQLクラスターをインストールする前に。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C。 MySQLクラスターをインストールする
次のrpmコマンドを使用してMySQLClusterパッケージをインストールします。
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
エラーがないことを確認してください。
D。 MySQLクラスターの構成
構成ファイル用の新しいディレクトリを作成します。 「/var/ lib/mysql-cluster」ディレクトリを使用します。
mkdir -p /var/lib/mysql-cluster
次に、「 config.ini」という名前のクラスター管理用の新しい構成ファイルを作成します。 "mysql-clusterディレクトリにあります。
cd /var/lib/mysql-cluster
vi config.ini
以下に設定を貼り付けます:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124
ファイルを保存して終了します。
E。管理ノードを開始します
次に、以下のコマンドで管理ノードを起動します。
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
結果は次のようになります:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory
管理ノードが開始されました。これで、コマンド「ndb_mgm」を使用してノードを監視できます。
ndb_mgm
show
管理ノードがmysql-6.6およびndb-7.4で開始されていることがわかります。
データノードには2台のCentOSサーバーを使用します。
- db2 =192.168.1.121
- db3 =192.168.1.122
A。 rootユーザーとしてログインし、MySQLClusterソフトウェアをダウンロードします
sshを使用してdb2サーバーにログインします:
ssh [email protected]
次に、MySQL Clusterパッケージをダウンロードして解凍します:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B。パッケージのインストールと削除
perl-Data-Dumperをインストールし、mariadb-libsを削除します:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C。 MySQLクラスターをインストールする
これで、次のrpmコマンドを使用してデータノードのMySQLクラスターパッケージをインストールできます。
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
エラーがないことを確認してください。
D。データノードの構成
viエディターを使用して/etcディレクトリーに新しい構成ファイルを作成します。
vi /etc/my.cnf
以下に構成を貼り付けます:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node
ファイルを保存して終了します。
次に、管理ノードの構成ファイル「config.ini」で定義したデータベースデータ用の新しいディレクトリを作成します。
mkdir -p /var/lib/mysql-cluster
次に、データノード/ ndbdを起動します:
ndbd
結果:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2
管理ノードip192.168.1.120に接続されたデータノードdb2。
E。 db3サーバーでステップ2.A-2.Dをやり直します。
2つのデータノードがあるため、2番目のデータノードで手順2.A〜2.Dをやり直してください。
このステップには、データベースへのアプリケーションアクセスを提供するSQLノードのセットアップが含まれています。 SQLノードには2台のCentOSサーバーを使用しています:
- db4 =192.168.1.123
- db5 =192.168.1.124
A。ログインしてMySQLクラスターをダウンロード
rootユーザーとしてdb4サーバーにログインします:
ssh [email protected]
そして、MySQL Clusterパッケージをダウンロードします:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B。パッケージのインストールと削除
perl-Data-Dumperをインストールし、MySQLClusterと競合するmariadb-libsを削除します。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C。 MySQLクラスターをインストールする
以下のrpmコマンドを使用して、MySQL Clusterサーバー、クライアント、および共有パッケージをインストールします。
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D。 SQLノードを構成する
/etcディレクトリに新しいmy.cnfファイルを作成します。
vi /etc/my.cnf
そして、以下に構成を貼り付けます:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node
ファイルを保存してエディタを終了します。
MySQLサーバーを起動してSQLノードを起動します:
service mysql start
E。 db5サーバーでステップ3.A-3.Dをやり直します。
2番目のSQLサーバー(db5)で手順3.A〜3.Dをやり直してください。
クラスタのステータスを確認するには、管理ノードdb1にログインする必要があります。
ssh [email protected]
ndb_mgmコマンドを使用して、クラスタのステータスを確認できます。
ndb_mgm
ndb_mgm> show
もう1つの便利なコマンドは次のとおりです。
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
新しいMySQLクラスターでテストを実行するには、SQLノードdb4またはdb5サーバーにログインする必要があります。
db4サーバーにログインします:
ssh [email protected]
「.mysql_secret」に保存されているデフォルトのMySQLパスワードを変更します "ルートディレクトリ内のファイル:
cd ~
cat .mysql_secret
これは私のサンプルです:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
次に、以下のコマンドでパスワードを変更します。
mysql_secure_installation
古いmysqlパスワードを入力してから、新しいパスワードを入力し、Enterキーを押してすべてを確認します。
すべて完了したら、パスワードを使用してMySQLシェルにログインできます。
mysql -u root -p
ログイン後、ホスト「 @」で新しいrootユーザーを作成します "、外部からMySQLにアクセスできるようになります。
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
aqwe123を置き換えます あなた自身の安全なパスワードで!これで、MySQLユーザーリストにホスト「@」が付いた新しいrootユーザーが表示されます。
select user, host, password from mysql.user;
そして、新しいrootユーザーにリモートノードからの読み取りおよび書き込みアクセスを許可します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
次に、db4サーバーから新しいデータベースを作成してみてください。データベースは、db5にも表示されます。
これは、クラスターデータレプリケーションをテストするための単なるサンプル結果です。
MySQLクラスタは、5つのサーバーノードを備えたCentOS7で正常にセットアップされました。
MySQL Clusterは、MySQLデータベースに高可用性と冗長性を提供するテクノロジーです。 NDBまたはNDBCLUSTERをストレージエンジンとして使用し、MySQLデータベースにシェアードナッシングクラスタリングと自動シャーディングを提供します。クラスタを実装するには、管理ノード(MGM)、データノード(NDB)、SQLノード(API)の3つのコンポーネントが必要です。各ノードには、独自のメモリとディスクが必要です。 NFSなどのネットワークストレージを使用することはお勧めしません。 CentOS 7の最小限のシステムにMySQLクラスターをインストールするには、mariadb-libsパッケージを削除する必要があります。mariadb-libsはMySQL-Cluster-serverと競合し、perl-Data-Dumperパッケージをインストールする必要があります。これはMySQL-Clusterに必要です。 -サーバ。 MySQLクラスターは、複数のCentOSサーバーに簡単にインストールおよび構成できます。