MySQL Clusterは、MySQLデータベースに高可用性を提供するテクノロジーです。データベースストレージエンジンとしてNDB(ネットワークデータベース)またはNDBCLUSTERを使用します。 MySQL Clusterは、単一障害点のないマルチマスターACIDアーキテクチャとして設計されており、自動シャーディング(パーティション化)を使用して読み取りおよび書き込みプロセスをスケールアウトします。
MySQLクラスターを実装するには、3つの異なるタイプのノードが必要です。
- 管理ノード( ndb_mgmd )
- クラスターの監視と構成に使用されます。
- データノード( ndbd )
- これらのノードは、自動シャーディングを提供し、レプリケーションを処理できるデータを保存するために使用されます。
- SQLノード( mysqld )
- すべてのノードに接続するためのMySQLServerインターフェース。
このチュートリアルでは、Ubuntu 16.04 LTS(Xenial Xerus)に「MySQLクラスター」をインストールする方法を紹介します。
前提条件
- Ubuntuサーバー16.04を備えた4つのノード
- 192.168.1.11管理ノード
- 192.168.1.12 data-node1
- 192.168.1.13 data-node2
- 192.168.1.14 sql-node
- ノードのルート権限。
このステップでは、クラスターの管理ノードをIPアドレス192.168.1.11でインストールします。 MySQLクラスターソフトウェアをインストールし、クラスターの管理ノードとして構成します。
sshを使用して管理ノードにログインします:
ssh [email protected]
TYPE YOUR PASSWORD
A。 MySQLクラスタ管理ノードをインストールする
ここでMySQLクラスターサイトを開き、オプション' Linux-generic を選択します 'をクリックし、'ダウンロードをクリックして64ビットパッケージをダウンロードします。 'ボタン。
wgetを使用してMySQLクラスターパッケージをダウンロードし、解凍します。
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
ディレクトリの名前をmysqlに変更します:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
mysqlディレクトリに移動し、クラスタ管理コマンド' ndb_mgmdの2つのバイナリファイルをコピーします。 およびndb_mgm '/ usr / local / bin /'ディレクトリに移動し、chmodコマンドで実行可能にします。
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*
B。 MySQLクラスタ管理ノードを構成する
'/ var / lib/'ディレクトリに構成ファイル用の新しいディレクトリ'mysql-cluster'を作成して、管理ノードを構成します。
ディレクトリ「mysql-cluster」を作成し、ディレクトリに新しい構成「config.ini」を作成します:
mkdir -p /var/lib/mysql-cluster/
vim /var/lib/mysql-cluster/config.ini
以下に設定を貼り付けます:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[mysqld default]
[ndb_mgmd default]
[tcp default]
# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.11
# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster
# Data Node 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
# SQL Node
[mysqld]
hostname=192.168.1.14
# If you to add new SQL Node
[mysqld]
設定に合わせて、管理用にndb_mgmd、データノード用にndbd、SQLノード用にmysqldのIPアドレスを変更します。
ファイルを保存して終了します。
次に、以下のコマンドを使用して管理ノードプロセスを開始します。
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
' /etc/rc.local にコマンドを追加して、起動時に起動するようにします。 'ファイル:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
結果が表示された場合:
MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12
その後、管理ノードプロセスが実行されます。
別のコマンドで管理ノードを確認してください:
# Checking port 1186 used by ndb_mgmd
netstat -plntu
# Checking the management node is ready
ndb_mgm
show
このステップでは、MySQLクラスターソフトウェアをインストールし、データノードとして構成します。 2台のubuntu16.04サーバーをデータノードとして使用します。IPアドレスが192.168.1.12のdata-node1とIPアドレスが192.168.1.13のdata-node2です。
sshを使用してdata-node1サーバーにログインします:
ssh [email protected]
A。データノードにMySQLクラスターをインストールする
MySQLクラスタソフトウェアをインストールする前に、新しいパッケージ' libaio1をインストールする必要があります。 'そして新しいユーザーとグループを作成しますmysql 。そのためのルートとして以下のコマンドを実行します:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
次に、MySQLクラスターパッケージをダウンロードします' Linux-Generic '、ディレクトリを抽出してmysqlに名前を変更します。
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
'mysql'ディレクトリを'/ usr / localに移動します /'そしてそのディレクトリに移動します。
mv mysql /usr/local/
cd /usr/local/mysql/
システムデータベースを作成するためのスクリプトを実行します:
./scripts/mysql_install_db --user=mysql
エラーがない場合は、mysqlサービスファイルを' /etc/init.dにコピーします。 'ディレクトリを作成し、起動時に実行するmysql開始スクリプトを追加します。
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
次に、すべてのmysqlバイナリコマンドを' / usr / local / binに移動します 'ディレクトリを作成し、新しいシンボリックリンクを作成します。
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
mysqlディレクトリの所有者をユーザーrootおよびグループmysqlに変更し、データディレクトリを所有者としてmysqlに変更します。
chown -R root:mysql .
chown -R mysql data
B。 MySQLクラスタデータノードを構成する
新しいmysql構成ファイルを作成します'my.cnf 'with vim:
vim /etc/my.cnf
以下に構成を貼り付けます:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
保存して終了します。
データノード用の新しいディレクトリを作成し、所有権をmysqlユーザーに変更します。
mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster
C。データノードでMySQLを起動します
以下のコマンドでmysqlサービスを開始します:
ndbd --initial
systemctl start mysql
エラーがないことを確認してください。結果は以下のとおりです(data-node2):
データノード上のMySQLが起動します。これで、次のコマンドを使用してMySQLパスワードを構成できます。
mysql_secure_installation
またはMySQLシェルにアクセスします。
mysql -u root -p
注 :
' data-node2でこの手順をやり直してください 'サーバーのIPアドレス192.168.1.13。
このステップでは、MySQL Clusterソフトウェアをインストールし、SQLノードとして構成します。このノードは、データノード上のデータベースにアクセスするために使用されます。インストールプロセスはデータノードと同じですが、SQLノードでndbdサービスを実行する必要はありません。
sshを使用してSQLノードにログインします:
ssh [email protected]
A。 SQLノードにMySQLクラスターをインストールする
libaio1パッケージをインストールし、新しいユーザーとグループmysqlを作成します:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
サイトからmysqlクラスターパッケージをダウンロードし、抽出して名前を変更します:
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz>
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
mysqlディレクトリを移動します:
mv mysql /usr/local/
cd /usr/local/mysql/
mysql_install_dbを実行します スクリプト:
./scripts/mysql_install_db --user=mysql
サービスファイルをコピーして、起動時に開始するように追加します:
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
すべてのmysqlバイナリを'/ usr / local / binに移動します 'ディレクトリ:
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
すべてのファイルとディレクトリの所有者を変更します:
chown -R root:mysql .
chown -R mysql data
B。 MySQLクラスターSQLノードの構成
新しいmy.cnfを作成します vimを含む構成ファイル:
vim /etc/my.cnf
以下に設定を貼り付けます:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
保存して終了します。
C。 SQLノードを起動します
systemctlコマンドを使用してmysqlサービスを開始し、SQLノードを開始します。
systemctl start mysql
SQLノードが起動し、MySQLのパスワードを設定できるようになりました。
mysql_secure_installation
SQLノードから新しいデータベースを作成するためのテスト。
mysql -u root -p
TYPE PASSWORD
create database nanana;
データベースがデータノードサーバーに複製されていることを確認します。
ノードがオフの場合、別のノードがSQLノードからの接続を処理します。
mysql -u root -p
TYPE PASSWORD
show databases;
管理ノードからのクラスターステータスの確認:
ndb_mgm
show
クラスタの安全な再起動とシャットダウンを実行します。
クラスタ管理ノードに移動し、以下のコマンドを入力してクラスタをシャットダウンします。
ndb_mgm
shutdown
このコマンドは、データノード上のすべてのndbサービスをシャットダウンします。
クラスタを再起動する場合は、管理ノードで以下のコマンドを実行できます。
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir =/ var / lib / mysql-cluster /
そして、すべてのデータノードで以下のコマンドを実行します。
ndbd
systemctl start mysql
次に、SQLノードでmysqlサービスを開始します。
systemctl start mysql
これで、MySQLクラスターが再び実行されます。