スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQL・MariaDB間でレプリケーション環境を構築

MySQL5.7とMariaDB10.1のレプリケーション環境を構築

MySQLをマスターサーバー、
MySQLと互換性を持つMariaDBをスレーブサーバーとして設定し、
両サーバー間でレプリケーション環境を構築してみました。
Vagrant で立てた MySQL 5.7 (mysql-node1) 1台 + MariaDB10.1 (maria-node1) 1台の環境でテストしています。

構築概要

★ vagrant上でMySQLとMariaDBをそれぞれ一台ずつ構築します。
★ 今回のレプリケーション構築ではGTIDを無効にしています。
★ MySQLをマスターサーバー、MariaDBをスレーブサーバーとして構築します。

構築手順

0.環境

■ CentOS 6.9
■ MySQL 5.7.18
■ MariaDB 10.1.24

1.MySQL・MariaDBサーバー構築

  • 下記のVagrantfileを利用して以下の2サーバをVagrant上で構築します。
  • mysql-node1:192.168.40.10
  • maria-node1:192.168.40.11
  • 全サーバー間で名前解決できるように以下の内容を全サーバーの/etc/hostsファイルに追記します。
  • 全ノードにおいてselinux、iptables、ip6tablesを一時的にオフにします。

2.MySQL5.7をインストール

(1)以下のコマンドを実行しrpmパッケージをインストールします。

※2017/6/14時点の最新版はmysql57-community-release-el6-11.noarch.rpmです。

(2)以下のコマンドを実行しMySQLをインストールします。

3.MariaDB10.1をインストール

  • MariaDBのyumリポジトリファイルを作成します。

※MariaDBの公式サイトよりリポジトリファイルに記載されている内容をコピーし、
「/etc/yum.repos.d/」配下にファイルを作成します。

  • MariaDBをインストールします。

(1)以下のコマンドを実行しMariaDBをインストールします。

4.MySQL-MariaDB間のレプリケーション構築

(1)マスターサーバー及びスレーブサーバーのmy.cnfファイルに以下の内容をそれぞれ追加します。

  • マスターサーバー用のmy.cnf。
  • スレーブサーバー用のmy.cnf。

(2)MySQLを起動しサンプルDB(worldデータベース)を入れます。

公式サイトから「world database」のzipファイルをダウンロードし、/tmp/配下に配置し解凍します。

  • MySQLを起動し初期rootユーザーのパスワード確認後、「mysql_secure_installation」を実行します。

※「mysql_secure_installation」実行時に設定するパスワードの条件は以下です。
★ パスワードが最低 1 つの数値文字を含む
★ 1 つの小文字および大文字を含む
★ 1 つの特殊文字 (英数字以外) を含む

  • 以下のコマンドを実行しMySQLにworldデータベースを入れます。

(3)マスターサーバー側のレプリケーション構築の準備を行います。

  • MySQLにログイン後にレプリケーションユーザーを作成します。
  • マスターデータベースのダンプファイルを作成します。
  • 作成したダンプファイルをスレーブサーバーの「/tmp/」配下にコピーします。

(4)スレーブサーバーのMariaDBを起動し、ダンプファイルを読み込みます。

  • 以下のコマンドを実行しダンプファイルを読み込みます。

(5)MySQL-MariaDB間のレプリケーション構築

  • ダンプファイルを作成した時点のマスターサーバーのバイナリログファイル名(MASTER_LOG_FILE)と、開始位置(MASTER_LOG_POS)を確認します。
  • スレーブサーバー側にてレプリケーションの設定を行います。

5.レプリケーションの同期確認

  • スレーブサーバー側の現存するデータベースを確認します。
  • マスターサーバー側にて新規データベースを作成します。
  • スレーブサーバー側でhogeデータベースが作成されているかについて確認します。

備考

今回ではMySQLをマスターサーバー、MariaDBをスレーブサーバーとしてレプリケーションを構築しましたが、MariaDBをマスターサーバーとし、MySQLをスレーブサーバーとしての構築も可能です。

Return Top