4. MySQL 설정
아래는 MySQL 설정 파일입니다.
shell) vim /etc/my.cnf.d/server.cnf |
아래를 참고하여 수정합니다. 단 아이디는 위에 생성한 아이디와 일치시키고, NODE01/02는 각 노드의 IP를 적습니다.
[A] NODE01 서버
[mysqld] wait_timeout=2147483 skip-name-resolve max_allowed_packet=128M [galera] wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_node_address=NODE01 wsrep_node_name=NODE01 wsrep_sst_method=rsync wsrep_sst_auth=[mariauserd:mariauserd] wsrep_sst_receive_address=NODE01 innodb_flush_log_at_trx_commit=2 binlog_format=ROW bind-address=0.0.0.0 binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 wsrep_cluster_address='gcomm://NODE02' server_id=1 |
[B] NODE02 서버
[mysqld] wait_timeout=2147483 skip-name-resolve max_allowed_packet=128M [galera] wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_node_address=NODE02 wsrep_node_name=NODE02 wsrep_sst_method=rsync wsrep_sst_auth=[mariauserd:mariauserd] wsrep_sst_receive_address=NODE02 innodb_flush_log_at_trx_commit=2 binlog_format=ROW bind-address=0.0.0.0 binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 wsrep_cluster_address='gcomm://NODE01' server_id=1 |
5. NODE01/02 자동시작 삭제 및 시작테스트
[A] NODE01 서버
shell) chkconfig --del mysql shell) service mysql start --wsrep-new-cluster --wsrep-cluster-address="gcomm://"
|
[B] NODE02 서버
shell) chkconfig --del mysql shell) service mysql start |
6. 기본 DB Schema/Data가 있다면 넣어주기
shell) mysql –umariauser –pmariauser < ./SampleDB.sql
|
7. 자동실행 파일 작성 및 설정
아래와 같이 자동실행 파일을 생성합니다. 첨부파일 내용은 상황에 맞게 수정합니다. 아래 'galera 실행화일'을 /etc/init.d/galera에 생성합니다. 주의사항은 NODE01 또는 NODE02가 살아나는 시차가 있어야 합니다. (왜냐하면 처음 살아나는 노드가 MASTER가 되도록 설정하였기 때문입니다 아래 적색 부분과 같이 한개 노드에만 시차를 주어도 좋습니다.) 또 아래 NODE02라고 써진 부분은 상대편 노드 IP를 적습니다.
* galera 실행화일 (/etc/init.d/galera)
#!/bin/bash
### BEGIN INIT INFO # Provides: galera-mysql # Short-Description: Start/Stop galera server # chkconfig: 345 99 10 # description: galera service scri ### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start() { sleep 20 r=$(bash -c 'exec 3<> /dev/tcp/NODE02/3306;echo $?' 2>/dev/null) if [ "$r" = "0" ]; then echo The database on the other node is running. /etc/rc.d/init.d/mysql start else echo The database on the other node is not running /etc/rc.d/init.d/mysql start --wsrep-cluster-address='gcomm://' fi }
stop() { sh /etc/rc.d/init.d/mysql stop
}
status() { sh /etc/rc.d/init.d/mysql status }
case $1 in start|stop|status) $1;; restart) stop; start;; *) echo "Run as $0 "; exit 1;; esac |
[A] NODE01 서버
shell) cp galera.node01 /etc/init.d/galera shell) chmod 775 /etc/init.d/galera shell) chkconfig --add galera
|
[B] NODE02 서버
shell) cp galera.node02 /etc/init.d/galera shell) chmod 775 /etc/init.d/galera shell) chkconfig --add galera
|
8. 상태체크 및 기타사항
8.1 서버 강제종료/다운 후 시작이 안되는 경우
shell) vim /var/lib/mysql/grastate.dat safe_to_bootstrap: 1 // 0으로 변경
|
8.2 장애복구 시 참고 사이트
https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/
감사합니다.
댓글을 달아 주세요