번개애비의 라이프스톼일
MariaDB(MySQL) 최적셋팅값 본문
[구성1]
CPU : 4Core
RAM : 32GB
(relication setting을 제외하고 셋팅해주면 된다. 물론 양방향 리플리케이션은 강추)
[mysqld]
log-bin=mysql-bin #replication setting
server-id=2 #replication setting
binlog_format = 'MIXED' #replication setting
datadir=C:/DB/data
port=3306
character-set-server=utf8
innodb_buffer_pool_size=20G
innodb_buffer_pool_instances = 20
innodb_write_io_threads = 8
innodb_read_io_threads = 8
max_heap_table_size=24m
tmp_table_size=24m
innodb_sort_buffer_size=64m
#innodb_force_recovery = 4
slave-skip-errors=all
skip-name-resolve
read_only=0
key_buffer_size = 768M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 64M
read_buffer_size = 24M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
thread_cache_size = 20
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
max_connections = 2048
table_cache = 512
# Query Cache
query_cache_limit=16M
query_cache_size=1024M
query_cache_type=1
[client]
port=3306
plugin-dir=C:/DB/lib/plugin
[구성2]
CPU : 8Core
RAM : 16GB
(relication setting을 제외하고 셋팅해주면 된다. 물론 서버가 다수 있다면 양방향 리플리케이션은 강추)
[mysqld]
log-bin=mysql-bin #replication setting
server-id=1 #replication setting
binlog_format = 'MIXED' #replication setting
datadir=C:/DB/data
port=3306
character-set-server=utf8
innodb_buffer_pool_size=10G
innodb_buffer_pool_instances = 10
innodb_write_io_threads = 8
innodb_read_io_threads = 8
max_heap_table_size=24m
tmp_table_size=24m
innodb_sort_buffer_size=64m
#innodb_force_recovery = 4
read_only=0
slave-skip-errors=all
skip-name-resolve
key_buffer_size = 768M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 64M
read_buffer_size = 24M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
thread_cache_size = 20
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 16
max_connections = 2048
table_cache = 512
# Query Cache
query_cache_limit=16M
query_cache_size=512M
query_cache_type=1
[client]
port=3306
plugin-dir=C:/DB/lib/plugin
보통 서버 증설을 할때 웹서버와 DB서버 분리를 많이들 사용하지만, 웹서버와 DB서버를 분리하지 않고
웹데이터는 rsync, DB데이터는 Replication 을 시켜서 DNS Roundrobin 하는것을 권장한다.
필자는 2개의 윈도우서버 위에 IIS10+PHP 웹서버와 MariaDB 10.5 DB서버를 운영하고
윈도우 특성상 rsync대신 Robocopy를, MariaDB는 양방향 Replication을 사용하고 있다.
2개의 윈도우서버는 같은 NAT단위안에 있는 환경이 아니기 때문에 각각의 서버 앞단의 DHCP에서 openVPN을 통해 터널링을 하여 데이터의 싱크를 맞추고 있다.
확실히 단순히 웹, DB분리보다는 성능차이가 확연하고, 비록 완벽한 로드밸러싱은 아니지만, DNS 라운드로빈으로 서버다운 타임을 확실하게 줄일 수 있었다.
그리고 무엇보다 데이터의 완벽한 이중화 구성으로 하나의 서버에 문제가 발생할경우 발빠르게 대응이 가능하다는점!
현재 MySQL상태정보이다.
phpMyAdmin을 통해 주기적으로 MySQL상태를 점검해주는것이 중요하다.
실패한 시도가의 값이 1%미만으로 구성되어야 한다.
다음에는 MariaDB의 양방향 리플리케이션에 대해 다뤄보겠음 ㅎㅎ
'IT' 카테고리의 다른 글
윈도우에서 숨김파일 강제로 해지 하는 방법 (0) | 2019.05.28 |
---|---|
nginx에서 특정포트를 사용할때 막힐경우 ([emerg] bind() to 0.0.0.0 failed (13: Permission denied)) (0) | 2019.05.27 |
Nginx proxy & Linux 최적화 셋팅 (0) | 2019.05.24 |
VMware ESXi 6.7 - Realtek 랜카드 대응 ISO파일 공유 (10) | 2019.05.23 |
Zotac AMP mini box (eGPU) 인식불량 문제 [해결] (2) | 2019.05.23 |