逆引きマニュアル: MariaDBのレプリケーション

投稿日:

やりたいこと

MariaDBでレプリケーションを使用する方法です。

前提条件

CentOS 7付属のMariaDB 5.5.56を使用します。

概要

GTIDは使えません。

  1. バイナリログの出力
  2. レプリケーション用ユーザの作成
  3. バックアップを作成

手順

設定ファイルの記載場所

Configuring MariaDB with my.cnf - MariaDB Knowledge Baseによれば、グループmysqldおよびmariadbのどちらでも構わないようです。

mysqld Read by the mysqld server, both by MariaDB and MySQL mariadb Read by the MariaDB mysqld server

また、サーバの値は通常アンダースコア(_)で区切られ、 コマンドラインではハイフン(-)で区切られますが、 アンダースコアの代わりにハイフンを使っても同等です。

1. バイナリログの出力

Setting Up Replication - MariaDB Knowledge Baseによれば、以下の3つが必要です(全てアンダースコアにしてます)。

log_bin
server_id = 1
log_basename = mariadb-bin
  • log_bin: バイナリログの出力を明記
  • server_id: サーバのID、マスタとスレーブの間で一意な数字をつけること。
  • log_basename: バイナリログのファイル名。
    • MariaDB 5.5ではこれがないとエラーになった。
    • mariadb-binというのはデフォルトのバイナリログのファイル名。ホスト名に依存しない名称が望ましい。

また、以下の設定を付けると良いです。

  • expire_logs_days: ログの保存期間(日)
  • read_only: 読み込みのみにする(スレーブ)

2. レプリケーション用ユーザの作成

  • スレーブのFQDN:
  • パスワード:
CREATE USER 'repl'@'{{ slave_fqdn }} IDENTIFIED BY '{{ repl_password }}';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'{{ slave_fqdn }}';

3. バックアップを作成

mysqldumpコマンドを使ってダンプします。

  • 必須
    • --single-transaction: 整合性のあるバックアップを作成
    • --master-data:
  • --routines: プロシージャやファンクションもダンプ

制限事項

外部サイト

マニュアル