728x90
이전 포스트
[MariaDB] MHA 구성(Part 1. MariaDB 10.11.8 설치)
1. MariaDB 바이너리 설치아래 설치 파일들을 모두 다운로드 받습니다.OS : Red Hat Enterprise Linux release 8.10 (Ootpa)MariaDB 10.11.8 엔진 다운로드(master, slave 서버 필요)https://mariadb.org/download/?t=mariadb&p=mariadb&r=
khyup.tistory.com
2. Replication 설정
basedir, datadir 설정 확인(master, slave)
MariaDB [(none)]> select @@basedir;
+------------------+
| @@basedir |
+------------------+
| /usr/local/mysql |
+------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> select @@datadir;
+-----------------------+
| @@datadir |
+-----------------------+
| /data/mariadb/master/ |
+-----------------------+
1 row in set (0.000 sec)
/etc/my.cnf 설정(master)
- 아래 내용을 추가합니다.
# vi /etc/my.cnf
...
[mysqld]
server_id = 1
...
[mysqld_safe]
log_error = /var/log/mysqld.log
pid-file = /var/log/mysqld.pid
...
# systemctl restart mysqld
MariaDB [(none)]> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.000 sec)
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 342 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
/etc/my.cnf 설정(slave)
- read_only=1, relay_log_purge=0으로 설정해야 MHA가 정상적으로 실행됨
# vi /etc/my.cnf
...
[mysqld]
server_id = 2
read_only = 1
relay_log = /data/mariadb/log-bin/relay_log
relay_log_purge = 0
log_slave_updates = 1
...
[mysqld_safe]
log_error = /var/log/mysqld.log
pid-file = /var/log/mysqld.pid
...
# systemctl restart mysqld
MariaDB [(none)]> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 342 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
파라미터 관련 개념 설명
- Binary Log :
Binary Log에는 MySQL의 모든 변경 사항이 기록이 되고 Slave DB에서는 이 Binary Log(이하 binlog)를 이용하여 데이터 복제가 수행됩니다. - Binlog dump thread :
Master(Source) 서버에 Slave(Replica) 서버가 연결되면(START SLAVE) 바이너리 로그 내용을 Slave(Replica) 서버로 보내는 Binlog Dump thread를 생성합니다. 이 thread는 Master(Source) 서버에서 SHOW PROCESSLIST 명령어의 출력 내용에서 Binlog Dump thread로 확인됩니다. Slave(Replica)서버의 I/O Thread 요청에 의해 Master(Replica) 서버의 Binlog Dump thread가 Binary Log를 읽어서 Slave(Replica)에 전송합니다. - I/O thread :
START SLAVE(START REPLICA) 명령어가 Slave(Replica) 서버에서 실행되면 Slave(Replica) 서버는 Master(Source) 서버에 연결하고 binary log에 기록된 변경 내역을 보내도록 요청하는 I/O thread를 생성합니다. I/O thread는 Master(Source)서버의 Binlog Dump thread가 보내는 변경 내역을 읽고 이를 Slave(Replica) 서버의의 Relay Log에 기록합니다. - SQL thread :
Slave(Replica) 서버에서 I/O thread가 작성한 Relay Log를 읽고 여기에 포함된 트랜잭션을 실행하기 위해 SQL thread를 생성하고 SQL thread는 Relay Log를 읽어서 Slave(Replica) 서버에 반영합니다. - log-bin 파라미터 :
Binary Log가 기록되는 경로입니다. - relay_log 파라미터 :
Relay Log가 기록되는 경로입니다. - relay_log_purge 파라미터 :
TRUE or FALSE 값을 가집니다. TRUE로 설정 시 오래되고 필요없는 relay_log를 자동으로 삭제합니다. - log_slave_updates 파라미터 :
Slave에서 log_slave_updates 파라미터가 활성화(1) 하게 되면 자신의 Binlog에도 기록하게 됩니다. log_slave_updates 파라미터는 Slave(Replica)에서 Master(마스터)로부터 수신한 변경 내용에 대해서 자신(Replica/Slave)의 Binary Log에 기록합니다.
Replication 유저 생성(master, slave)
MariaDB [(none)]> grant replication slave on *.* to rep@'%' identified by 'rep';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use mysql
MariaDB [mysql]> select host, user, password from user;
+-----------+-------------+-------------------------------------------+
| Host | User | Password |
+-----------+-------------+-------------------------------------------+
| localhost | mariadb.sys | |
| localhost | root | invalid |
| localhost | maria | invalid |
| | PUBLIC | |
| localhost | | |
| maria1 | | |
| % | rep | *9FF2C222F44C7BBA5CC7E3BE8573AA4E1776278C |
+-----------+-------------+-------------------------------------------+
7 rows in set (0.001 sec)
Replication 시작(slave)
- 반드시 3306 포트가 열려있어야 합니다(방화벽 off)
- MASTER_HOST : Master 서버 IP
- MASTER_USER, MASTER_PASSWORD : replication용 User/Password
- MASTER_LOG_FILE, MASTER_LOG_POS 값은 Master 서버의 show master status;로 확인한 값을 넣습니다.
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.137.171', MASTER_USER='rep',MASTER_PASSWORD='rep',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=342,MASTER_CONNECT_RETRY=10;
- slave 시작
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)
- Slave_IO_State, Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master 값 확인
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.137.171
Master_User: rep
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos: 645
Relay_Log_File: relay_log.000002
Relay_Log_Pos: 858
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Rewrite_DB:
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 645
Relay_Log_Space: 1161
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: optimistic
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Slave_DDL_Groups: 1
Slave_Non_Transactional_Groups: 1
Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
ERROR: No query specified
동작 확인(master)
- 실제로 Replication이 동작하는지 Master 서버에서 테이블 생성하고 Slave에도 생성되었는지 확인
MariaDB [(none)]> use test;
MariaDB [test]> create table test (id int);
Query OK, 0 rows affected (0.003 sec)
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
1 row in set (0.000 sec)
동작 확인(slave)
MariaDB [(none)]> use test;
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
1 row in set (0.000 sec)
다음 포스트
[MariaDB] MHA 구성(Part 3. MHA 설정)
이전 포스트 [MariaDB] MHA 구성(Part 1. MariaDB 10.11.8 설치)1. MariaDB 바이너리 설치아래 설치 파일들을 모두 다운로드 받습니다.OS : Red Hat Enterprise Linux release 8.10 (Ootpa)MariaDB 10.11.8 엔진 다운로드(master, sl
khyup.tistory.com
728x90
'📁 Database > Oracle' 카테고리의 다른 글
| [Oracle] CRS에 Database 리소스 재등록 방법 (0) | 2024.08.02 |
|---|---|
| [Oracle] RAC 19c opatch RU 업데이트 (opatchauto) (0) | 2024.07.31 |
| [Oracle] 실행 계획 뜨는 법 (5) | 2024.07.23 |
| [Oracle] OS Watcher 설치(관리 경로를 따로 설정하고 싶은 경우) (1) | 2024.07.14 |
| [Oracle] RAC, ASM 환경에서 Data File 경로 변경 (0) | 2024.07.14 |