環境構成
| サーバー名 | IPアドレス | 役割 |
|---|---|---|
| db-master-01 | 10.32.161.131 | マスター |
| db-slave-01 | 10.32.161.132 | スレーブ |
MariaDBのインストール
公式ドキュメントを参照してMariaDBをインストールしてください。
設定変更とサービス再起動
# マスターノード設定
# /etc/my.cnf を編集
server-id = 101
log_bin = master-bin
binlog_format = row
# スレーブノード設定
# /etc/my.cnf を編集
server-id = 102
log_bin = slave-bin
read_only = ON
relay_log = relay-bin
# サービス再起動
systemctl restart mariadb
# レプリケーション用ユーザー作成(マスター)
CREATE USER 'sync_user'@'%' IDENTIFIED BY 'secure_pass123';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'%';
FLUSH PRIVILEGES;
データバックアップとリストア
# マスターでのバックアップ作成
mkdir -p /backup/mariadb
mariabackup --backup --user=root --target-dir=/backup/mariadb/full_backup
# バックアップファイルをスレーブに転送
rsync -av /backup/mariadb/full_backup/ 10.32.161.132:/backup/mariadb/
# スレーブでのデータ準備
systemctl stop mariadb
rm -rf /var/lib/mysql/*
# バックアップの準備とリストア
mariabackup --prepare --target-dir=/backup/mariadb/full_backup
mariabackup --copy-back --target-dir=/backup/mariadb/full_backup
# 権限設定とサービス起動
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
レプリケーション設定
# バイナリログ位置の確認
# cat /backup/mariadb/full_backup/xtrabackup_binlog_info
master-bin.000003 1564
# スレーブでのレプリケーション設定
CHANGE MASTER TO
MASTER_HOST='10.32.161.131',
MASTER_USER='sync_user',
MASTER_PASSWORD='secure_pass123',
MASTER_LOG_FILE='master-bin.000003',
MASTER_LOG_POS=1564;
# レプリケーション開始
START SLAVE;
# レプリケーション状態確認
SHOW SLAVE STATUS\G
レプリケーションフィルタリング
# スレーブ設定ファイル
# /etc/my.cnf
[mysqld]
replicate_ignore_table=app_db.temp_data,app_db.log_entries
replicate_wild_ignore_table=test%.%