やりたいこと
MariaDBでレプリケーションを使用する方法です。
前提条件
CentOS 7付属のMariaDB 5.5.56を使用します。
概要
GTIDは使えません。
- バイナリログの出力
- レプリケーション用ユーザの作成
- バックアップを作成
手順
設定ファイルの記載場所
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. レプリケーション用ユーザの作成
CREATE USER 'repl'@'スレーブのFQDN' IDENTIFIED BY 'パスワード';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'スレーブのFQDN';
3. バックアップを作成
mysqldumpコマンドを使ってダンプします。
- 必須
--single-transaction
: 整合性のあるバックアップを作成--master-data
:
--routines
: プロシージャやファンクションもダンプ