mariadbを使う

MySQLデータベース(Mariadb)のインストール

下記のコマンドでSQLサーバーをインストールします。

rootのアクセス権限を要求されますので入力してください。

sudo apt-get install mariadb-server

認証プラグインの状態

$ sudo mysql -u root
MariaDB [(none)]> SELECT user,host,plugin from mysql.user;
+------+-----------+-------------+
| user | host      | plugin      |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+

認証方式を変更する

MariaDB [(none)]> set password for 'root'@'localhost'=password('input your password');
MariaDB [(none)]> use mysql; 
MariaDB [mysql]> update user set plugin='' where user='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> \q

レプリケーション用のユーザーを作成します

レプリケーションをユーザー”repl”で実行します
レプリケーションを192.168.0.0のネットワークから許可します
レプリケーションのパスワードを”password”にします

root@hosts:~$ mysql -u root -p
Enter password: input your password
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.0/255.255.255.0' IDENTIFIED BY 'password';

マスタ側にレプリケーション用ユーザを作成

root@hosts:~$ mysql -u root -p
Enter password: input your password
MariaDB [(none)]> CREATE USER 'repl'@'192.168.[slave IP]' IDENTIFIED BY '[パスワード]';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.[slave IP]'
MariaDB [(none)]> FLUSH PRIVILEGES;

マスタ側の設定ファイルを編集

mariadbを停止します。

root@hosts:~$ sudo systemctl stop mariadb.service 
root@hosts:~$ sudo vi /etc/mysql/my.cnf
 
[mysqld]
server-id = 1      # スレーブと異なるサーバIDにする
log-bin=mysql-bin  # 任意のバイナリログファイル名
expire_logs_days=5

log-bin でレプリケーションに必要なバイナリログを有効にします

server-id はレプリケーションを構成するサーバー内で被らないように割り振ります

expire_logs_days はバイナリログの保存日数です。レプリケーションに間が空いた時に復旧できるようにする期間を指定します

root@hosts:~$ sudo systemctl start mariadb
root@hosts:/var/lib/mysql $ ls

datadir(デフォルト /var/lib/mysql) にlog-binで設定したファイル名のバイナリログが出力されているか確認します。

バイナリログファイル名とポジションを取得します。その情報を元にselectを発行します。

MariaDB [(none)]> SHOW MASTER STATUS;
MariaDB [mysql]> SELECT BINLOG_GTID_POS(‘mysql-bin.000001’, [input number] );

※ ここで空が返ってきてしまう場合、何かしら適当なUPDATE文を投げてMariaDBの再起動を行い、ダンプ取得の手順からやり直せばヒットするようになります。

スレーブの設定ファイルを編集

root@hosts:~$ sudo systemctl stop mariadb.service 
root@hosts:~$ sudo vi /etc/mysql/my.cnf
 
[mysqld]
server-id = 2      # 異なるサーバIDにする。複数のスレーブを設置する場合、被らないように別々の数字を割り当ててください。
read_only          # データーベースを読み込み専用にするためのオプションです。スレーブに誤って更新クエリを行ってしまうとレプリケーションが止まってしまうため、それを防止する目的で設定します
log-bin=slave1-bin  # 任意のバイナリログファイル名
log-slave-updates

datadir(デフォルト /var/lib/mysql) にlog-binで設定したファイル名のバイナリログが出力されているか確認します。

MariaDB [mysql]> CHANGE MASTER 'master1' TO
  MASTER_HOST     = '192.168.[input your master mariadb server IP]',
  MASTER_USER     = 'repl',
  MASTER_PASSWORD = '[replユーザのパスワード]',
  MASTER_USE_GTID = slave_pos;

MariaDB [mysql]> START ALL SLAVES;
MariaDB [mysql]> SHOW SLAVE STATUS \G

参考サイト

CentOS7 + MariaDB でGTIDレプリケーション構築 - Qiita
検証環境CentOS 7.3MariaDB 10.1.24DBマスタサーバ(IP: 192.168.0.1)DBスレーブサーバ(IP: 192.168.0.2)MySQLでGTID有効のレ…
[MySQL][MariaDB] DBのレプリケーション構築手順 - Qiita
前提単体のサーバーでDBが動いている状態から説明を進めますマスターの操作マスターの設定レプリケーション用のユーザーを作成しますレプリケーションをユーザー"repl"で実行しますレプリケー…
Raspberry PiにインストールしたmariaDBをVSCodeから操作する - Qiita
VSCodeからRaspberry Pi内のmariaDBを操作したいSQLの勉強のためRaspberry PiにmariaDBをインストールしたけど、ターミナルからSQLを入力するのが面倒になり…

コメント

タイトルとURLをコピーしました