LoginSignup
8
7

More than 5 years have passed since last update.

CentOS7 2台でレプリケーション

Last updated at Posted at 2014-12-16

CentOS7 2台でレプリケーション

を実践した。

corosync.conf

corosync.conf
  quorum {
        provider: corosync_votequorum
        expected_votes: 2
+       two_node: 1
  }

MariaDBの設定


server-idをそれぞれ一意に定義

(n1)/etc/my.cnf.d/my_custom.cnf
+ log-bin=mysql-bin
+ relay-log=relay-bin

+ server-id=1
(n2)
server-id=2

(n1)ひな形作成

mariadb起動
systemctl start mariadb
レプリケーション用ユーザを作成
-- 他のサーバからアクセスできるようにレプリケーション用ユーザを作成
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.100.%' IDENTIFIED BY 'tieP7iLu';

-- 読み取り専用に切り替えるためにlocalhostにもユーザを作成
GRANT SUPER,REPLICATION SLAVE,REPLICATION CLIENT,PROCESS ON *.* TO 'repl'@'localhost' IDENTIFIED BY 'tieP7iLu';

-- 設定反映
FLUSH PRIVILEGES;
  • パスワードは同じものにしておく。
mariadb停止
systemctl stop mariadb

n1の/var/lib/mysql/をn2にコピー

(n1)圧縮

(n1)圧縮
tar czf ~/mysql.tar.gz /var/lib/mysql

(n2)転送

転送n1->n2
scp n1:mysql.tar.gz ~
(n2)削除
rm -rf /var/lib/mysql/
(n2)解凍
tar xzf ~/mysql.tar.gz
mv ~/var/lib/mysql/ /var/lib/

(n1)pacemakerの設定

n2はStandbyにしておく(Slaveとして稼働させるため)

pcs cluster standby n2

(n1)cib編集

現在の設定をファイルに保存
pcs cluster cib mysql_repl
コマンドが長いのでalias
alias cib="pcs -f mysql_repl resource"
設定
cib create mysql ocf:heartbeat:mysql \
    binary=/usr/bin/mysqld_safe \
    pid=/var/run/mariadb/mariadb.pid

cib update mysql replication_user=repl
cib update mysql replication_passwd=tieP7iLu

cib op add mysql start interval=0 timeout=120s
cib op add mysql stop interval=0 timeout=120s

cib op add mysql monitor interval=20s timeout=30s
cib op add mysql monitor interval=10s role=Master timeout=30s
cib op add mysql monitor interval=30s role=Slave timeout=30s

cib op add mysql promote interval=0 timeout=120s
cib op add mysql demote interval=0 timeout=120s
cib op add mysql notify interval=0 timeout=90s

Error: add_operation has been deprecated, please use 'op add'

これだけ注意。

設定反映
pcs cluster cib-push mysql_repl

(n1)Master/Slave設定を作成

pcs resource master mysql-clone mysql \
    master-max=1 master-node-max=1 \
    clone-max=2 clone-node-max=1 notify=true
設定にエラーがないか確認
# crm_verify -L -V
   error: unpack_resources:     Resource start-up disabled since no STONITH resources have been defined
   error: unpack_resources:     Either configure some or disable STONITH with the stonith-enabled option
   error: unpack_resources:     NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
stonith-enabledを無効にしないとエラー扱いになる
pcs property set stonith-enabled=false
エラーがないことを確認。
# crm_verify -L -V
ignore low quorum
pcs property set no-quorum-policy=ignore
pcs property

mysqlリソースの起動を確認

pcs resource enable mysql
# pcs resource
...
 Master/Slave Set: mysql-clone [mysql]
     Masters: [ n1 ]
     Stopped: [ n2 ]
...
他ノードのスタンバイ状態の解除
pcs cluster unstandby --all
# pcs resource
...
 Master/Slave Set: mysql-clone [mysql]
     Masters: [ n1 ]
     Slaves: [ n2 ]
...

MariaDB master/slave確認

SHOW BINLOG EVENTS\G
SHOW MASTER STATUS;
Master_Host値を確認
SHOW SLAVE STATUS\G
その他
START SLAVE;
STOP SLAVE;

トラブルシューティング

mysqlのSlaveが起動してこない

〜 'unknown error' (1): 〜

  • pcs resource enable mysqlしても起動できない。
状態確認
# pcs resource failcount show mysql
Failcounts for mysql
 n2: INFINITY
エラー解除
# pcs resource failcount reset mysql
# pcs resource failcount show mysql

n2をOS再起動するとSlaveが起動してくる。

  • ログは/var/log/mysqld.logに出力されます。

@takehironetさんからご指摘いただきました。

resourceのfailcountのリセットはfailcount resetで良いと思います。cleanupはresource直下のサブコマンドだったかと(ご確認ください)

気づいた点

  • レプリケーションの障害時、復旧まで手作業で1時間はかかる予感がするのでDRBDが良い気がしてきた。
8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7