CentOS7에 MariaDB 10.3.x 슬레이브 서버 구축 Replication DB 구축하기 슬레이브는 synology nas 에다가 구축해봤습니다.

먼저 synology nas 에 접속해서 패키지를 설치했습니다.
mariadb 10 으로 깔았구요..
apache2.4에 php7 로 설치했어요.

ssh 접속하면 설치경로는 아래와 같습니다. 따로 mysql파일 실행경로에 링크 안되어있으니 경로 타고 들어가서 실행해줘야합니다.

/volume1/@database/mariadb10/   : 데이터경로
/volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/   실행파일 경로
/volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf  설정파일 경로


1. 마스터 서버의 my.cnf 의 [mysqld] 섹션 또는  [mariadb] 섹션을 찾아서 수정합니다.
[mysqld]
log-bin
server_id=1

이제 DB의 업데이트를 막기위해 웹서버 실행을 중지!
systemctl stop httpd

디비서비 재실행
systemctl restart mariadb

디비접속
mysql -uroot -p
password : 입력.

다음 쿼리문 실행 (bigs3cret 대신 비밀번호를 쓰면됨)

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'bigs3cret';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

아래 쿼리문을 실행하면 File 와 Position 이 나온다. 메모하자.
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000002 |    455330 |              |                  |
+--------------------+----------+--------------+------------------+


로그포지션을 확인했으면 이제 dB를 덤프뜬다..
DB프로세서는 실행된상태임

mysqldump -uroot -p --add-drop-table -A > all_database.sql

슬레이브 서버에 쓰레기 데이터가있어서 마스터DB에 중복되는 테이블은 삭제하고 처음부터 입력하도록 했음.

이제 슬레이브 서버로 이동해서디비접속
mysql -uroot -p
password : 입력.

아래 쿼리문의 마스터DB의 로그파일과 포지션을 본인에게 맞게 수정해서 쿼리 실행
호스트명, 유저, 비밀번호,로그파일, 그리고 포지션은 개별로 본인에게 맞게 수정한다.


CHANGE MASTER TO
  MASTER_HOST='www.sw4u.kr',
  MASTER_USER='replication_user',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master1-bin.000002',
  MASTER_LOG_POS=3465611,
  MASTER_CONNECT_RETRY=10;

아까뜬 덤프파일을 슬레이브 dB에 집어 넣는다..

mysql -uroot -p < all_database.sql

다 들어갔으면.. 다시 슬레이브 db 로 접속해서 슬레이브DB 실행

start slave;

동작이 잘되는지 확인한다.

show slave status\G


Slave_IO_Running: Yes
Slave_SQL_Running: Yes

두개가 다 Yes가 나오면 성공.

slave가 동작이 잘되는지 계속해서 확인하다가 어느순간 에러로 멈추는 경우가 있다.

1062번 에러같으면 그냥 하나 스킵하면 되고.. 나머지 중요한 에러 같으면 슬레이브DB에서 거기 맞도록 적용하고 넘어가야 겠다..
일단 쿼리가 막혔을때 해당 쿼리 하나만 그냥 넘어가고 다음을 진행하라는 명령어.. 아래 4줄을 복사해서 mysql 슬레이브에서 붙여넣기하면 4개의 질의가 순서대로 실행하고 무사통과함

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G;