2023. 7. 11. 06:00ใSystem ์์ ์ค/Docker
๐ Docker Container๋ฅผ ์ด์ฉํ MariaDB ์ค์นํ๊ธฐ
๐ฝ Maria DB
๐ฆ Docker Container - ์ค์นํ๊ธฐ
์ฃผ๋๋ Docker Container ์ค Maria DB Docker Container๋ฅผ ๋ฐ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ํํ์์ด์.
์ด Image๋ฅผ ์ด์ฉํ์ฌ Data Base๋ฅผ ์ค๋นํด ๋ณด๋๋ก ํ ๊ฒ์.
์ฐธ๊ณ ๋ก ์์ ๊ฐ์ด Docker ๊ถํ์ด ์์ด Error๊ฐ ๋๋ฉด sudo ๋ช
๋ น์ ํตํด ํ ์๋ ์์ง๋ง, ๊ต์ฅํ ๋ฒ์ก์ค๋ฝ๊ธฐ ๋๋ฌธ์
๊ด๋ฆฌ์ฉ ๊ณ์ ์๋ ์์ ๊ฐ์ด ๊ถํ์ ์ค์ ํด ์ฃผ๊ณ , newgrp {๊ทธ๋ฃน ์ด๋ฆ} ๋ช
๋ น์ด๋ฅผ ํตํด sudo ๋ช
๋ น ์์ด Docker ๋ช
๋ น์ ์ธ ์ ์๊ฒ ํ ์ ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด MariaDB Docker Image๋ฅผ ๋ด๋ ค ๋ฐ์ ์ค๋๋ค.
Image๊ฐ ์ ์์ ์ผ๋ก ๋ด๋ ค ๋ฐ์์ง๊ฑธ ํ์ธํ ์ ์์ด์.
์ด ์ ๊ธ๋ค์์ ์ฃผ๋๋ Docker ๊ธฐ๋์ ์ํด Shell Script๋ฅผ ๋ง๋ค๊ณ , ๊ธฐ๋ํ์๋๋ฐ,
์ด๋ฒ์ Docker-compose๋ฅผ ์ด์ฉํด๋ณด๋ ค๊ณ ํด์.
๊ทธ ์ ์ MariaDB Container์ File์ Docker Host Server์์ ์ง์ ๊ด๋ฆฌํ ์ ์๋๋ก
Directory Mapping์ ์ํ Directory๋ค์ ๋ง๋ค์ด ์ค๊ฒ์.
์ฃผ๋์ฐ๋ ์ด๋ ๊ฒ ๋ง๋ค์ด ์ฃผ์๋๋ฐ, /data ๋ถํฐ /giggal-mng-mariadb๊น์ง๋ OS ์์ญ ์ ์ฅ์ ๋ถ์กฑ์ผ๋ก ์๋ก์ด ๊ฐ์ Storage๋ฅผ ์ถ๊ฐํด ์ฃผ์๊ณ , ๊ทธ ๊ณณ์ Data๊ฐ ์์ด๊ฒ ํ๊ธฐ ์ํจ์ด์์.
์ฃผ๋์ฐ์ฒ๋ผ ๋ฐ๋ก HDD๋ฅผ ๋ง๋ค์ง ์์๋ค๋ฉด ๊ทธ ์ดํ์ธ db๋ถํฐ ๋ง๋ค์ด๋ ํฌ๊ฒ ์๊ด ์์ด์.
์ฃผ๋๊ฐ ๋ง๋ Docker-compose.yml File์ด์์.
์ด๋ฒ์๋ ์์์ ๋ง๋ค์๋ Directory ์ค conf.d ์์ my.cnf File์ ๋ง๋ค์ด Maria DB Config File์ ์์ฑํด ์ค๊ฒ์.
์ฃผ๋๊ฐ ์ค๋นํ Config File์ ์์ ๊ฐ์์.
๐ก MySQL | Maria DB ์ค์ ๊ด๋ จ
##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## mysqld ๋ฐ๋ชฌ ํ๋ก์ธ์ค ๊ด๋ จ ์ค์ ๋ค ##--------------------------------------------------------------------------- [mysqld] core-file # core dump ํ์ผ์ ์์ฑํ๋๋ก ํ๊ธฐ ์ํ ์ค์ user = junyss # MariaDB ์์ง์ owner (user id) = DB๋ฅผ ์คํ์ํฌ OS ๊ณ์ port = 3306 # DB ํฌํธ socket = /junyss/example/mariadb/mysqld.sock # ์์ผํ์ผ ๊ฒฝ๋ก(๋ก์ปฌ์๋ฒ ์ ์์ ์ฌ์ฉ), ๋ฆฌ๋ชจํธ ์๋ฒ์๋ ip์ port๋ฅผ ์ด์ฉํด์ TCP/IP ํ๋กํ ์ฝ๋ก ์ ๊ทผ pid-file = /junyss/example/mariadb/mysqld.pid # MariaDB ์๋ฒ๊ฐ ์์ ์ ํ๋ก์ธ์ค ID๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ ๊ฒฝ๋ก (์ ๋์ค ํน์ ๋ฆฌ๋ ์ค์์๋ง ์ฌ์ฉ) basedir = /engn/mysvc/mariadb-<MaridDB Version> # MariaDB ์์ง ๊ฒฝ๋ก datadir = /data/mysvc/MARIASVC # DB์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก tmpdir = /data/mysvc/tmpdir_MARIASVC # ๋์คํฌ์ ์์ํ ์ด๋ธ์ด ์์ฑ๋ ๋ ์ฌ์ฉ๋ ๊ฒฝ๋ก #secure_file_priv = /tmp # LOAD_FILE() ํจ์ ๋ฐ LOAD DATA ์ SELECT ... INTO OUTFILE ๋ช ๋ น๋ฌธ์ด ํน์ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์์๋ง ๋์์ ํ๋๋ก ํ์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Logging ์ค์ ##--------------------------------------------------------------------------- log-warnings = 3 # 0 ๋นํ์ฑํ # 1 ์ด์: ์ฟผ๋ฆฌ๋ฌธ ๋จ์์ ๊ฒฝ๊ณ ๋ด์ฉ๊น์ง ์๋ฌ๋ก๊ทธ์ ๊ธฐ๋ก log_output = FILE,TABLE # ๋ก๊ทธ ๊ธฐ๋ก ์ ํ (ํ์ผ๊ณผ ํ ์ด๋ธ์ ๊ธฐ๋ก) log-error = /junyss/example/mariadb/log/error/mysqld.err # ์๋ฌ ๋ก๊ทธํ์ผ ๊ฒฝ๋ก general_log = OFF # ์ ๋๋ด ๋ก๊ทธ ๋นํ์ฑํ # DB์์ ์ผ์ด๋๋ ๋ชจ๋ ์์ ์ ๋ํ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ฒ ๋๋ฏ๋ก ํ์ํ ๋๋ง ON์ผ๋ก ์ค์ ํด์ ์ฌ์ฉ general_log_file = /junyss/example/mariadb/general/mysvc01-general.log # ์ ๋๋ด ๋ก๊ทธํ์ผ ๊ฒฝ๋ก slow_query_log = ON # ๋๋ฆฐ ์ฟผ๋ฆฌ ๊ธฐ๋ก ํ์ฑํ long_query_time = 0.5 # ๋๋ฆฐ ์ฟผ๋ฆฌ์ ๊ธฐ์ค ์๊ฐ(์ด) log-slow-verbosity = 'query_plan,innodb' log_queries_not_using_indexes = OFF # ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฟผ๋ฆฌ ๊ธฐ๋ก ์ฌ๋ถ slow_query_log_file = /junyss/example/mariadb/slow/mysvc01-slow.log # ๋๋ฆฐ ์ฟผ๋ฆฌ ๋ก๊ทธํ์ผ ๊ฒฝ๋ก ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## DB ๊ธฐ๋ณธ ์ค์ ##--------------------------------------------------------------------------- skip-name-resolve # ์ญDNS ๊ฒ์ ๋นํ์ฑํ (IP ๊ธฐ๋ฐ์ผ๋ก ์ ์์ ํ๊ฒ ๋๋ฉด hostname lookup ๊ณผ์ ์๋ต) default_storage_engine='InnoDB' # ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง ์ค์ lower_case_table_names = 1 # ํ ์ด๋ธ๋ช ์ ์๋ฌธ์๋ก ์ฒ๋ฆฌ sysdate-is-now # SYSDATE ๊ตฌ๋ฌธ์ NOW์ ๋์ผํ๊ฒ ์ฒ๋ฆฌ sql_mode="TRADITIONAL,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI_QUOTES" # sql_mode ์ค๋ช : SQL๋ฌธ ์ฌ์ฉ ์ ํ = ์ฟผ๋ฆฌ ์ ๊ฒ ์์ค # TRADITIONAL = STRICT_TRANS_TABLES,STRICT_ALL_TABLES = ์๋ชป๋ ๊ฐ์ด ์ปฌ๋ผ์ ์ ๋ ฅ๋๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ ๋ ์๋ฌ๋ฅผ ๋ฐํํจ # ,NO_ZERO_IN_DATE,NO_ZERO_DATE = ๋ ์งํ์ ์ 0000-00-00 ์ ๋ ฅ ๋ชป ํ๊ฒ ํจ # ,ERROR_FOR_DIVISION_BY_ZERO = 0์ผ๋ก ๋๋ ๋๋ ์ค๋ฅ ๋ฐ์์ํด # ,NO_AUTO_CREATE_USER = ๊ถํ ๋ถ์ฌ ๋ฌธ์ฅ์ด ์คํ๋๋ค๊ณ ํด์ ์๋์ผ๋ก ์ ์ ๋ฅผ ์์ฑํ์ง ์๊ฒ ํจ # ,NO_ENGINE_SUBSTITUTION = ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ ์๋ ๋์ฒด๋ฅผ ๋ฐฉ์ง # IGNORE_SPACE : ํ๋ก์์ ๋ ํจ์๋ช ๊ณผ ๊ดํธ ์ฌ์ด์ ๊ณต๋ฐฑ ๋ฌด์ # ONLY_FULL_GROUP_BY : ๊ทธ๋ฃนํ ์์ ์ ํ ๋ GROUP BY ์ ์ ๊ทธ๋ฃนํ ํค ์ปฌ๋ผ๋ค์ด ๋ค ์์ด์ผ๋ง ํจ # ANSI_QUOTES : ํ๋ฐ์ดํ๋ง ๋ฌธ์์ด ๊ฐ ํ์๋ก ์ฌ์ฉ, ์๋ฐ์ดํ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ฅผ ํ๊ธฐ์ ์ฌ์ฉํ ์ ์์ # PAD_CHAR_TO_FULL_LENGTH : MariaDB/MySQL์ ๊ธฐ๋ณธ์ ์ผ๋ก CHAR ํ์ ๋ VARCHAR ์ฒ๋ผ ๋ฌธ์์ด ๋ค ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋๋ฐ, ๊ณต๋ฐฑ์ ์ ๊ฑฐํ์ง ์๊ณ ์ฑ์ฐ๊ฒ ํ๋ ค๋ฉด ์ค์ ํจ #feedback = ON # MariaDB๋ก ์๋ฌ ๋ด์ฉ ๋ณด๋ด๊ธฐ event_scheduler = ON # ์ด๋ฒคํธ์ค์ผ์ค๋ฌ(cron, Oracle์ Job๊ณผ ๊ฐ์ ์ญํ ) ํ์ฑํ performance_schema = ON # performance_schema ํ์ฑํ #performance_schema_max_digest_length=10240 # digest์ ์ต๋ ๊ธธ์ด (digest:์ ํํ์ํจ ์ฟผ๋ฆฌ๋ฌธ, ์์๋ถ๋ถ ๋ฑ์ ํจํดํ์ํจ๋ค.) plugin-load = server_audit ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ๋ฌธ์์ด ์ค์ ##--------------------------------------------------------------------------- skip-character-set-client-handshake # ํด๋ผ์ด์ธํธ์์ ๋ณด๋ด์ง๋ ๋ฌธ์์ ์ ๋ณด๋ฅผ ๋ฌด์ํ๊ณ ์๋ฒ์ ๋ฌธ์์ ์ฌ์ฉ character_set_server = utf8mb4 collation_server = utf8mb4_bin init_connect='SET collation_connection = utf8mb4_bin' init_connect='SET NAMES utf8mb4' ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Transaction ์ค์ ##--------------------------------------------------------------------------- autocommit = ON # autocommit ํ์ฑํ ์ฌ๋ถ transaction_isolation = "READ-COMMITTED" # replication์ ํ ๋๋ "๋ ์ฝ๋ ๊ธฐ๋ฐ ๋ณต์ "๋ฅผ ์ฌ์ฉํ๋๋ก ํจ # transaction_isolation ์ค๋ช # . READ UNCOMMITTED # ๋ค๋ฅธ ํธ๋์ญ์ ์ด Commit ์ ์ํ๋ฅผ ๋ณผ ์ ์์ # Binary Log๊ฐ ์๋์ผ๋ก Row Based๋ก ๊ธฐ๋ก๋จ (Statement์ค์ ๋ถ๊ฐ, Mixed ์ค์ ์ ์๋ ๋ณํ) # . READ-COMMITTED # Commit๋ ๋ด์ญ์ ์ฝ์ ์ ์๋ ์ํ๋ก, ํธ๋์ญ์ ์ด ๋ค๋ฅด๋๋ผ๋ ํน์ ํ ํธ๋์ญ์ ์ด Commit์ ์ํํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ Readํ ์ ์์ # Binary Log๊ฐ ์๋์ผ๋ก Row Based๋ก ๊ธฐ๋ก๋จ (Statement์ค์ ๋ถ๊ฐ, Mixed ์ค์ ์ ์๋ ๋ณํ) # . REPEATABLE READ (๊ธฐ๋ณธ) # MySQL InnoDB ์คํ ๋ฆฌ์ง ์์ง์ Default Isolation Level # Select ์ ํ์ฌ ๋ฐ์ดํฐ ๋ฒ์ ์ Snapshot์ ๋ง๋ค๊ณ , ๊ทธ Snapshot์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํ # ๋ฐ์ดํฐ์ ๊ดํด์ ์๋ฌต์ ์ผ๋ก Lock๊ณผ ๋น์ทํ ํจ๊ณผ๊ฐ ๋ํ๋จ. ์ฆ, Select ์์ ์ด ์ข ๋ฃ๋ ๋๊น์ง ํด๋น ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ๋ถ๊ฐ # ๋์ผ ํธ๋์ญ์ ๋ด์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ๊ธฐ ์ํด์๋ ํธ๋์ญ์ ์ ๋ค์ ์์ํด์ผ ํจ # . SERIALIZABLE # ๊ฐ์ฅ ๋์ Isolation Level๋ก ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง SELECT ๋ฌธ์ฅ์ด ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฐ์ดํฐ์ Shared Lock์ด ๊ฑธ๋ฆผ # ๋ค๋ฅธ ํธ๋์ญ์ ์์๋ ํด๋น ์์ญ์ ๊ดํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฟ๋ง ์๋๋ผ ์ ๋ ฅ๋ ๋ถ๊ฐ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ๋ณด์ ์ค์ ##--------------------------------------------------------------------------- #skip-external-locking # ์ธ๋ถ(TCP/IP) ์ ๊ธ ๋นํ์ฑํ enable-secure-auth # ์๋ฒ๋ก ๊ตฌ๋ฒ์ (4.1๋ฒ์ ์ดํ) ํฌ๋ฉง์ผ๋ก ๋ ํจ์ค์๋ ์ ๋ฌ ๋นํ์ฑํ symbolic-links = OFF # ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋นํ์ฑํ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Connection ์ค์ ##--------------------------------------------------------------------------- thread_handling = one-thread-per-connection # ์ฐ๋ ๋ํ(Thread Pool) ์ฌ์ฉ ์ฌ๋ถ # ์ฐ๋ ๋ํ์ ์ฌ์ฉํ๋ ค๋ฉด pool-of-threads ์ผ๋ก ์ค์ max_connections = 250 # ํ์ฉ ๊ฐ๋ฅํ ์ต๋ ๋์ ์ ์์, ๊ฐ๊ฐ์ ์ปค๋ฅ์ ์ ์ต์ thread_stack์ ์ฌ์ด์ฆ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ max_connect_errors = 1000 # ๊ณ์์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ฐ์์ํค๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ช๋ฒ์งธ ์ฌ์๋ํ blockํ ์ง ์ง์ # ํ๋ฒ block๋๋ฉด, ์๋ฒ๋ฅผ ์ฌ์์ํ๊ฑฐ๋ flush host๋ช ๋ น์ ์คํํ๊ธฐ ์ ๊น์ง ์ ์ ๋ถ๊ฐ back_log = 100 # max_connections ์ด์์ connection์ด ๋๋์ผ๋ก ๋ชฐ๋ฆด ๋ ํ์ ๋๊ธฐ๊ฐ๋ฅํ ์ปค๋ฅ์ ์ ๊ฐฏ์ thread_cache_size = 100 # ์ฌ ์ฌ์ฉ์ ์ํด ๋ณด๊ดํ ์ฐ๋๋ ์, thread_created๊ฐ ๋์ ๊ฒฝ์ฐ ์ฆ๊ฐ๋จ # THREADS_CONNECTED ์ํ๊ฐ์ ํผํฌ๋ณด๋ค ์ฝ๊ฐ ๋ฎ๊ฒ ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅํจ wait_timeout = 28800 # ์ ์ํ ํ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์ฌ ๋๊น์ง ๋๊ธฐํ๋ ์๊ฐ(์ด) = noninteractive ์ปค๋ฅ์ ๋ซ๊ธฐ๊น์ง์ ์๊ฐ lock_wait_timeout = 28800 # metadata lock์ ํ๋ํ๊ธฐ ์ํด ๋๊ธฐํ๋ ์๊ฐ(์ด), ๊ธฐ๋ณธ์ 1๋ ์ interactive_timeout = 3600 # "mysql>"๊ณผ ๊ฐ์ ์ฝ์์ด๋ ํฐ๋ฏธ๋ ์์์ ํด๋ผ์ด์ธํธ์ ์ ์์ ์๊ฐ(์ด), ๊ธฐ๋ณธ 8์๊ฐ์ด์ง๋ง 1์๊ฐ ์ค์ ๊ถ์ฅ connect_timeout = 10 # mysqld ๋ฐ๋ชฌ์ด ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์ ์์์ฒญ์ ๋ฐ๋ ๊ฒฝ์ฐ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด) #net_retry_count = 10 # ํต์ ์ด ์๋ชป๋์ด ์คํจํ ๋, ๋ช ๋ฒ๊น์ง ์ฌ์๋ํ ์ง net_read_timeout = 60 # ์ปค๋ฅ์ ์ผ๋ก๋ถํฐ ์ฝ๊ธฐ๊ฐ ์ ๋๋ค๊ณ ํ๋จํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด) net_write_timeout = 60 # ์ปค๋ฅ์ ์ผ๋ก ์ฐ๊ธฐ๊ฐ ์ ๋๋ค๊ณ ํ๋จํ๊ธฐ ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด) open_files_limit = 3000 # mysql์ด ์คํํ ์ ์๋ file(์ ํํ๋ file descripter)๊ฐ์ # ๊ฐ๋ฅํ๋ฉด 5000์ผ๋ก ์ค์ ํ๋๋ฐ OS limit์ ๋ฐ๋ผ ์ฌ์กฐ์ ๋ ์ ์๋ค # ์ค์ ๋ก๋ ์ด ๊ฐ์ ์ํฅ์ ๋ฐ์ง ์๊ณ , OS์ nofile(open files) ์ ํ์ด ์ ์ฉ๋จ table_open_cache = 4000 # DB์ ์ฒด์์ ์คํํ ์ ์๋ ํ ์ด๋ธ ๊ฐฏ์ table-definition-cache = 4000 # ์บ์ฑํด ๋์ (.frm ํ์ผ์์ ์ถ์ถํ)ํ ์ด๋ธ ์ ์ ๊ฐฏ์, ํ ์ด๋ธ์ด ๋ง์ผ๋ฉด ํฌ๊ฒ ์ค์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Thread Pool ์ค์ - thread_handling = pool-of-threads ์ผ ๋๋ง ์๋ฏธ ์์ ##--------------------------------------------------------------------------- # thread_pool_size = 4 # ์ฐ๋ ๋ ๊ทธ๋ฃน ๊ฐฏ์, ๊ธฐ๋ณธ์ CPU ๊ฐฏ์์ ๊ฐ์ # (sleep์ด๋ wait ์ํ์ธ ์ฐ๋ ๋ ์ ์ธํ๊ณ ) CPU๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์๋ ์ฐ๋ ๋ ๊ฐฏ์ # ๋ฆฌ๋ ์ค๋ ์ ๋์ค ๊ณ์ด์ผ ๋๋ง ์ฌ์ฉ๋๋ ์ค์ # thread_pool_max_threads = 500 # ์ฐ๋ ๋ํ์ ๋ค์ด๊ฐ ์ ์๋ ์ต๋ ์ฐ๋ ๋ ๊ฐฏ์ # thread_pool_idle_timeout = 60 # idle ์ํ์ธ ์ฐ๋ ๋๋ฅผ ์ ๋ฆฌํ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์๊ฐ(์ด) # thread_pool_stall_limit = 500 # ์ฐ๋ ๋ ๊ต์ฐฉ ์ํ ๊ฒ์ฌ ๊ฐ๊ฒฉ(๋ฐ๋ฆฌ์ด) # ์ฐ๋ ๋ ๊ฐฏ์๊ฐ thread_pool_max_threads์ ๋๋ฌํ๋ฉด ์ฐ๋ ๋๋ ๋ ์ด์ ์์ฑ๋์ง ์๋๋ค. # thread_pool_oversubscribe = 3 # internal ํ๋ผ๋ฏธํฐ๋ก ์์๋ก ์์ ํ์ง ์๋ ๊ฒ์ด ์ข์ # thread_pool_size * thread_pool_oversubscribe = DB์์ ๋์์ active๋์ด CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ฐ๋ ๋ ๊ฐฏ์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Connection ๋ฉ๋ชจ๋ฆฌ ์ค์ ##--------------------------------------------------------------------------- sort_buffer_size = 256K # (์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋) ์ ๋ ฌ์ ํ์ํ ๋ฒํผ์ ํฌ๊ธฐ, ORDER BY ๋๋ GROUP BY ์ฐ์ฐ ์๋์ ๊ด๋ จ join_buffer_size = 256K # ์กฐ์ธ์ด ํ ์ด๋ธ์ ํ์ค์บ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฒํผํฌ๊ธฐ, ๋๋ฆฌ๋ธ ํ ์ด๋ธ์ด FULL SCANํ ๋ ์ฌ์ฉ๋จ read_buffer_size = 256K # ํ ์ด๋ธ ์ค์บ์ ํ์ํ ๋ฒํผํฌ๊ธฐ read_rnd_buffer_size = 256K # ๋์คํฌ ๊ฒ์์ ํผํ๊ธฐ์ํ ๋๋ค ์ฝ๊ธฐ ๋ฒํผํฌ๊ธฐ, ์ ๋ ฌ ๋์์ด ์ปค์ two pass ์๊ณ ๋ฆฌ์ฆ์ ์ธ ๋๋ง ์ฌ์ฉ #thread_stack = 256K # ์ฐ๋ ๋ ํ๋์ ์คํ ์ฌ์ด์ฆ (๊ธฐ๋ณธ 64bit ์์คํ ์ ๊ธฐ๋ณธ 256KB) net_buffer_length = 16K # ํด๋ผ์ด์ธํธ์ ๋ณด๋ด๋ ์ด๊ธฐ ๋ฉ์์ง์ ๋ฐ์ดํธ ์ max_allowed_packet = 16M # ํ ํจํท์ ์ต๋ ํฌ๊ธฐ group_concat_max_len = 32M # GROUP_CONCAT() ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ด์ฉํ ์ ์๋ ์ต๋ ํฌ๊ธฐ max_heap_table_size = 32M # MEMORY ํ ์ด๋ธ์ ์ต๋ ํฌ๊ธฐ tmp_table_size = 1M # ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์์ ํ ์ด๋ธ์ ์ต๋ ํฌ๊ธฐ, ์ด ๊ฐ์ ์ด๊ณผํ๋ฉด ๋์คํฌ์ ์์ ํ ์ด๋ธ์ ์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ์ฟผ๋ฆฌ ์บ์ ์ค์ ##--------------------------------------------------------------------------- query_cache_size = 32M # ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๊ธฐ ์ํด ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ (DB์ ์ฒด) query_cache_limit = 2M # ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์ด ๊ฐ๋ณด๋ค ํฌ๋ฉด ์บ์ฑ ์ ํจ (๊ธฐ๋ณธ์ 1M) query_cache_type = DEMAND # ์ฟผ๋ฆฌ์์ ํํธ๋ก ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ค์ ํ ๊ฒฝ์ฐ์๋ง ์ฟผ๋ฆฌ ์บ์ ์ฌ์ฉ # 0 or OFF : ์ฟผ๋ฆฌ ์บ์ ์ฌ์ฉ ์ ํจ, ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ ์ฐ๋ ค๋ฉด query_cache_size๋ 0์ผ๋ก ์ค์ ํด์ผ ํจ # 1 or ON : SQL_NO_CACHE๋ฅผ ์ค์ ํ์ง ์์ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํจ # 2 or DEMAND : SQL_CACHE๋ก ์ค์ ํ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ง ์บ์ฑํจ ##--------------------------------------------------------------------------- # Author: ์ฃผ๋์ฐ # MariaDB ์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ # innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + key_buffer_size + query_cache_size # + max_connections * ( read_buffer_size + read_rnd_buffer_size + sort_buffer_size + join_buffer_size + thread_stack + binlog_cache_size) ##--------------------------------------------------------------------------- ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## InnoDB ์ค์ ##--------------------------------------------------------------------------- #innodb_page_size = 16K #innodb_use_sys_malloc = ON # OS์์ ์ ๊ณต๋๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ธฐ๋ฅ ์ฌ์ฉ ์ฌ๋ถ, ON: InnoDB์์ OS ์์์ ์ฌ์ฉ # InnoDB์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ธฐ๋ฅ๊ณผ OS์์ ์ ๊ณต๋๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฅ ์ค ๋ ํจ์จ์ด ๋์ ์ชฝ์ ์ ํํ ์ ์์ innodb_buffer_pool_size = 512M # InnoDB ์์ง์ผ๋ก ๋ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์บ์ํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ํฌ๊ธฐ # ์ด๊ธฐ ์์คํ ์ ์ฒด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ 40% ์์ค์ผ๋ก ์ค์ ํ๊ณ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์ฆ๊ฐ innodb_buffer_pool_instances = 2 # ๋ฒํผํ์ ๊ฐฏ์, ์ ์ ํ ๊ฐฏ์๋ก ๋๋๋ฉด ๋ฎคํ ์ค(mutex) ๊ฒฝํฉ์ด ์ค์ด๋ค์ด DB ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ฌ์ค # ๊ฐ๊ฐ์ ๋ฒํผํ์ ๊ฐ๊ฐ์ ํ๋ฌ์ฌ ๋ฆฌ์คํธ ๋ฎคํ ์ค(mutex)๋ฅผ ๊ฐ์ง (์๋ง LRU๋ฆฌ์คํธ๋ ๊ฐ์ง ๋ฏ) # ๊ฐ ๋ฒํผํ์ InnoDB ์์ง์ด ์๋์ผ๋ก ์ ์ ํ ๋ฐฐ๋ถํด์ ์ฌ์ฉํจ #innodb_additional_mem_pool_size = 16M # DEPRECATED๋จ, ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ์ ๋ณด์ ๋ด๋ถ ๋ฐ์ดํ ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ ํฌ๊ธฐ innodb_data_file_path=ibdata1:32M;ibdata2:32M:autoextend # ์์คํ ํ ์ด๋ธ์คํ์ด์ค - ํ์ผ๋ช :์ด๊ธฐํฌ๊ธฐ:์๋์ฆ๊ฐ:์ต๋ํฌ๊ธฐ innodb_file_per_table = 1 # ํ ์ด๋ธ ๋จ์๋ก ํ ์ด๋ธ์คํ์ด์ค ํ ๋น, ํ์ฑ์ ํ ์ด๋ธ๋ณ๋ก .frm, .ibd ๊ฐ๊ฐ ์์ฑ innodb_data_home_dir = /data/mysvc/MARIASVC # ํ ์ด๋ธ ์์ฑ ๊ธฐ๋ณธ ๊ฒฝ๋ก #innodb_autoextend_increment = 100 # ํ ์ด๋ธ์คํ์ด์ค ์๋ ํ์ ์ ํฌ๊ธฐ innodb_log_buffer_size = 4M # ๋ก๊ทธ(redo) ๋ฒํผ ํฌ๊ธฐ # ํด์๋ก ๋์คํฌ ์ฌ์ฉ๋์ด ์ค์ด์ ์ฑ๋ฅ์ด ํฅ์๋์ง๋ง ์์คํ ๋ค์ด์ ์์ค๋๋ ํธ๋์ญ์ ์๋ ์ฆ๊ฐ๋จ # ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ๋ก๊ทธ๋ฒํผ๋ฅผ ๋ก๊ทธํ์ผ๋ก ์ฐ๊ธฐ ์ํ ๋ถํ๊ฐ ๋ง์ด ๋ฐ์ํ ์๋ ์์ innodb_log_group_home_dir = /data001/mysvc01/MARIASVC # ๋ก๊ทธ(redo) ๊ฒฝ๋ก innodb_log_files_in_group = 3 # ๋ก๊ทธ(redo) ํ์ผ ๊ฐฏ์ innodb_log_file_size = 64M # ๋ก๊ทธ(redo) ํ์ผ ํฌ๊ธฐ # ์ผ๋ฐ์ ์ผ๋ก (innodb_buffer_pool_size/innodb_log_files_in_group)๋ฅผ ์ ์ ๊ฐ์ผ๋ก ๋ณธ๋ค. innodb-support-xa = OFF # ํธ๋ ์ ์ two-phase commit ์ง์, ๋์คํฌ ํ๋ฌ์ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅํญ์ # ๋ถ์ฐ๋ฐ์ดํฐ ๊ธฐ๋ฅ (2-PhaseCommit) innodb_buffer_pool_dump_at_shutdown = 1 # DB shutdownํ ๋ innodb_log_buffer์ ์๋ ๋ด์ฉ์ dump ํ์ผ๋ก ๋ด๋ฆผ innodb_buffer_pool_filename = innodb_buffer_pool_dump # DB shutdownํ ๋ innodb_log_buffer์ ์๋ ๋ด์ฉ์ ๋ด์ dump ํ์ผ๋ช innodb_buffer_pool_load_at_startup = 1 # DB startupํ ๋ dumpํ์ผ๋ก ๋ฐ์ ๋จ๋ ๋ด์ฉ์ innodb_log_buffer์ ์ฌ๋ฆผ innodb_thread_concurrency = 4 # InnoDB๊ฐ ๋์ ์ฌ์ฉ๊ฐ๋ฅํ ์ต๋ ์์คํ ์ฐ๋๋ ์ # CPU์ 2~4๋ฐฐ ๊ถ์ฅ, 0์ผ๋ก ์ค์ ํ๋ฉด ๋์์ฑ์ด ๋นํ์ฑํ ๋จ #innodb_thread_sleep_delay=0 # InnoDB queue์ ๋ค์ด๊ฐ๊ธฐ์ ์ ์ผ๋ง๋ sleepํ ๊ฒ์ธ๊ฐ # innodb_thread_concurency์ ๋๋ฌํ๋ฉด ์๋ก์ด ์ฐ๋ ๋๋ innodb_thread_sleep_delay ๋์ Sleep ํจ # innodb_thread_concurency = 0 ์ด๋ฉด ์ด ๊ฐ์ ๋ฌด์๋จ #innodb_adaptive_max_sleep_delay = 150000 # 0 ์ด์์ ๊ฐ์ผ๋ก ์ง์ ํ๋ฉด, InnoDB๊ฐ innodb_thread_sleep_delay๋ฅผ ์๋์ผ๋ก ์กฐ์ #innodb_concurrency_tickets = 500 # ํ๋ฒ ์ค์ผ์ค๋ง๋ ์ฐ๋ ๋๋ ์ค์ ๋ ํฐ์ผ๊ฐ์๋งํผ ์์ ๋กญ๊ฒ InnoDB๋ฅผ ์ฌ์ฉํ ์ ์๋ค # ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ innodb_thread_concurrency์ ๋๋ฌํ๋ฉด ํ๋์ ์ฐ๋ ๋๋ง ํ์ ๋ค์ด๊ฐ ์ ์์ # ํ๋์ ์ฐ๋ ๋๊ฐ InnoDB์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด, innodb_concurrency_tickets์ ๊ฐ๊ณผ ์ผ์นํ๋ “์์ ํฐ์ผ”์ ์ซ์๊ฐ ์ฃผ์ด์ง๊ณ , # ์ฐ๋ ๋๊ฐ ์์ ์ ํฐ์ผ์ ์ฌ์ฉํ๊ธฐ ์ ๊น์ง๋ ์์ ๋กญ๊ฒ InnoDB์ ๋ค์ด๊ฐ๊ณ ๋์ฌ ์๊ฐ ์๋ค. # ์ด๋ฐ ํ์๋, ์ฐ๋ ๋๋ ๋ค์๊ธ ์ผ๊ด์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ณ InnoDB์ ๋ค์ ๋ค์ด๊ฐ๋ ค๊ณ ์๋ํ๊ฒ ๋๋ค # InnoDB๋ IO request๋ฅผ background threads์ ๊ฐ๋ฅํํ ๋๋ฑํ๊ฒ ๋ถ๋ฐฐํ๊ณ , ๋์ผํ extent์ ๋ํ read requests๋ ๋์ผํ thread์๊ฒ ํ ๋นํจ innodb_read_io_threads = 4 # InnoDB ์ฝ๊ธฐ ์์ ์ ์ํ I/O ์ฐ๋ ๋์ ์, ์ฃผ๋ชฉ์ : read-ahead requests # SHOW ENGINE INNODB STATUS ์์ pending read requests๊ฐ 64 x innodb_read_io_threads์ด์์ด๋ผ๋ฉด, # innodb_read_io_threads๋ฅผ ๋ ํ ๋นํ๋ ๊ฒ์ ๊ณ ๋ ค innodb_write_io_threads = 4 # InnoDB ์ฐ๊ธฐ ์์ ์ ์ํ I/O ์ฐ๋ ๋์ ์ # read-ahead ๋? # ํ๋์ extent(64๊ฐ pages group)์ ๋ชจ๋ buffer pool์ prefetchํ๋ ์์ . (asynchronous request์) # ์ด๋ค ํ์ด์ง๋ ๊ณง ์ฝํ์ง๊ฑฐ๋ผ๋ ๊ฐ์ ํ์ ๋ชจ๋ ๋ฒํผ์ ์ฌ๋ฆฌ๋ ๊ฒ # ์๊ณ ๋ฆฌ์ฆ) # linear read-ahead technique: ๋ฒํผํ ์์ ์์ฐจ์ ์ผ๋ก ์ฝํ์ง ํ์ด์ง ๊ฐ์๋ก ํ๋จ # ๋ง์ฝ ํ๋์ extent๋ด์์ ์์ฐจ์ ์ผ๋ก ์ฝํ์ง ํ์ด์ง ๊ฐ์๊ฐ innodb_read_ahead_threshold ์ด์์ด๋ฉด ๋ค์ extent์ ์ฒด ํ์ด์ง๋ฅผ read-ahead # random read-ahead technique: ๋ฒํผํ ์์ ์กด์ฌํ๋ ํ์ด์ง ๊ฐ์๋ก ํ๋จ(์์ฐจ์ ์ธ์ง ์ฌ๋ถ์ ๋ฌด๊ดํจ) # ๋ง์ฝ ํ extent๋ด์ 13๊ฐ์ ์ฐ์๋ ํ์ด์ง๊ฐ ๋ฒํผํ์ ์กด์ฌํ๋ค๋ฉด, ํด๋น extent์ ๋๋จธ์ง pages๋ค์ read-aheadํ๋ค innodb_lock_wait_timeout = 1200 # ํธ๋์ญ์ ๋ฝ(record lock)์ ๋๊ธฐํ๋ ์๊ฐ(์ด) #innodb_flush_neighbors = 1 # InnoDB ๋ฒํผํ์์ ํ์ด์ง ํ๋ฌ์๋ฅผ ํ ๋(=๋์คํฌ๋ก ๊ธฐ๋กํ ๋), ์ธ์ ํ ๋ํฐ ํ์ด์ง๋ (๋จ์ผ I/O๋ก) ํ๋ฌ์ํ ์ง ๊ฒฐ์ ํ๋ ๋ณ์ # ๋๋ค์ก์ธ์ค ์ฐ๊ธฐ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ HDD์์๋ ์ข์ผ๋, SSD์์๋ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํจ # 0: ํด์ , 1: ๊ฐ์ extent์์ ์ฐ์๋ ๋ํฐ ํ์ด์ง๋ฅผ ๊ฐ์ด ํ๋ฌ์ํจ, 2: ๊ฐ์ extent์์ ๋ชจ๋ ๋ํฐ ํ์ด์ง๋ฅผ ํ๋ฌ์ํจ #innodb_io_capacity = 100 # ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ฌ์ฑ ์๋ ์ ์ด๋ฅผ ์ํ ๋ณ์, ํฐ ๊ฐ์ ์ง์ ํ๋ฉด I/O ๋์ญํญ์ ์ ์ ํ๋ฏ๋ก ํ๊ฒฝ์ ๋ง์ถฐ์ ์ค์ ํ ๊ฒ # InnoDB ๋ฉ์ธ ์ฐ๋ ๋๊ฐ I/O ์์ ์ ํ ์ ์๋ capa, ์์คํ ์ I/O ์์ค์ ์์กด์ ์ # ์ผ๋ฐ์ ์ผ๋ก 7200 RPMs ํ๋ ๋๋ผ์ด๋ธ์ธ ๊ฒฝ์ฐ 100์ผ๋ก ์ค์ # RAID ๊ตฌ์ฑ์ด๋ SSD ์ฌ์ฉ ๋ฑ์ ๋ฐ๋ผ์ ๋ ๋์ ๊ฐ์ผ๋ก ์ค์ # Raid1: 200. Raid10: 200 x write arrays. SSD: 5000. FusionIO: 20000 innodb_flush_log_at_trx_commit = 0 # InnoDB์์ ์ปค๋ฐ๋ ๋๋ง๋ค ๋ก๊ทธ(redo)๋ฅผ ๋์คํฌ์ ํ๋ฌ์ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ต์ # fsync() ํจ์๋ฅผ ํธ์ถํ๋ ๋น๋์ ๊ดํ ์ต์ # 0 : ์ปค๋ฐ๋ ๋๋ง๋ค ๋์คํฌ ํ๋ฌ์๋ฅผ ํ์ง๋ ์์, OS์์ ์ ์ ํ ์์ (์ผ๋ฐ์ ์ผ๋ก 4~5์ด ๊ฐ๊ฒฉ)๋ง๋ค ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋จ # ์ ๋ชป ๋๋ฉด 4~5์ด๊ฐ์ ๋ฐ์ดํฐ๋ ์ ์ค๋ ์๋ ์์ # 1 : ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ๋๋ง๋ค ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋๊ณ ๋์คํฌ ํ๋ฌ์๊ฐ ์คํ (๊ฐ์ฅ ์์ , ๊ฐ์ฅ ๋๋ฆผ) # 2 : ์ปค๋ฐ๋๋ฉด ๊ฐ์ ๋ก ๋ก๊ทธ ๋ฒํผ๋ฅผ ๋ก๊ทธ ํ์ผ์ ์ฐ์ง๋ง, 1์ด๊ฐ ์ง๋๊ธฐ ์ ์๋ ๋์คํฌ์ ์ ์ฅ๋์ง ์์ innodb_flush_method = O_DIRECT # InnoDB๊ฐ dafa files, log files๋ก data๋ฅผ flush(๋์คํฌ์ ๊ธฐ๋กํ๊ณ ๋๊ธฐํํ๋ ์์ )ํ๋ ๋ฐฉ๋ฒ # ------------------+----------+----------+-----------+-----------------+----- # Method | log file | log file | data file | data file flush | ์ค๋ช # Method | open | fulsh | open | data file flush | ์ค๋ช # ------------------+----------+----------+-----------+-----------------+----- # fsync | normal | fsync() | normal | fsync() | ๊ธฐ๋ณธ # O_DSYNC | O_SYNC | O_SYNC | normal | fsync() | synchronized(๋๊ธฐ) I/O๋ก์, write์์ ์ hardware๋จ๊น์ง fsyncํจ # O_DIRECT | normal | fsync() | O_DIRECT | fsync() | OS caching์ ํ์ง ์๊ณ direct I/O๋ก innodb_buffer_pool์์ file๋ก I/Oํจ # O_DIRECT_NO_FSYNC | normal | fsync() | O_DIRECT | skip fsync() | O_DIRECT์ ๋์ผํ๋ฐ data file ๋๊ธฐํ๋ฅผ ์ํ fsync ํธ์ถ์ ์๋ตํจ # ------------------+----------+----------+-----------+-----------------+----- # fsync = ๋ฐ์ดํฐ์ ๋ฉํ์ ๋ณด๋ฅผ ํจ๊ป ๋ณ๊ฒฝํ๋ ๋ฐฉ์ (ํ์ผ๋ฉํ์ ๋ณด๋ ํ์ผ๋ณ๊ฒฝ์ผ์,์์ ์ ๋ฑ์ ์๋ฏธํจ, fdatasync "๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝ, ๋ฉํ๋ฐ์ดํฐ๋ ๋ฌด์") # O_DIRECT = pache cache, buffer cache๋ directlyํ๊ฒ write bypassํ์ง๋ง, inode cache, directory cache, metadata๋ ๋ฐ๋ก fsync()๋ฅผ ํธ์ถํด์ flush ํด์ค์ผ ํจ # (์บ์๋ฉ๋ชจ๋ฆฌ ์ฅ์ฐฉ๋)RAID ์ปจํธ๋กค๋ฌ๊ฐ ์๊ฑฐ๋ SAN์ ์ฌ์ฉํ ๋๋ O_DIRECT๋ฅผ ์ฌ์ฉ ํ์ง ์๋ ๊ฒ์ด ์ข์ # double buffering(InnoDB buffer pool๊ณผ OS file system cache์ ๋๋ฒ ์บ์ฌ)์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅํฅ์์ ๊ธฐ๋ํ ์ ์๋ค. # O_DIRECT_NO_FSYNC = ๋ช๋ช file system์์๋ O_DIRECT๊ฐ fsync()์์ด๋ metadata๊น์ง synchronize๋๋ ๊ฑธ ๋ณด์ฅํจ. ๊ทธ๋์ InnoDB๊ฐ O_DIRECT_NO_FSYNC๋ฅผ ์ถ๊ฐํจ # ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ = 1๋จ๊ณ "์ด์์ฒด๋ก์ ๋ฒํผ๋ก ๊ธฐ๋ก" + 2๋จ๊ณ "๋ฒํผ์ ๋ด์ฉ์ ๋์คํฌ๋ก ๋ณต์ฌ" # - ๋๊ธฐ(Sync) I/O = 1๋จ๊ณ์ 2๋จ๊ณ๋ฅผ ํจ๊ป ์คํ # - ๋น๋๊ธฐ(Async) I/O = 1๋จ๊ณ์ 2๋จ๊ณ๋ฅผ ๋ค๋ฅธ ์์ ์ ์คํ # - direct I/O = 1๋จ๊ณ ๋ฌด์, 2๋จ๊ณ "๋ฒํผ์ ๋ด์ฉ์ ๋์คํฌ๋ก ๋ณต์ฌ"๋ง ์คํ innodb_adaptive_hash_index = ON # Adaptive Hase Index # 1. workload์ ์ถฉ๋ถํ buffer pool memory์ ์ ์ ํ ์กฐํฉํ์์, ํธ๋์ญ์ ํน์ฑ์ด๋ ์ ๋ขฐ์ฑ์ ์๋ฐฐ๋์ง ์๋ ์ ์์, InnoDB๋ฅผ in-memory DB์ฒ๋ผ ๋์ํ๊ฒ ํจ # 2. ๋์ # 1) MySQL์ search ํจํด์ ๊ณ ๋ คํ์ฌ index prefix(์ธ๋ฑ์ค ํค์ ๊ฐ ์๋ถ๋ถ)๋ก hash index๋ฅผ ๋ง๋ ๋ค # 2) ์์ฃผ access๋๋ ์ธ๋ฑ์ค ํ์ด์ง์ ๋ํด์๋ง ๋ถ๋ถ์ ์ผ๋ก ์์ฑ๋ ์๋ ์๋ค. # 3) InnoDB๋ index search ํจํด์ ๋ชจ๋ํฐ๋งํ๋ ๋ฉ์ปค๋์ฆ์ ๊ฐ์ง๊ณ ์์ด์ ํด๋น ์ฟผ๋ฆฌ๊ฐ hash index๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ต์ด๋ผ๊ณ ํ๋จ๋๋ฉด, ์๋์ผ๋ก hash index๋ฅผ ์์ฑํ๋ค # 4) ๋ง์ฝ ํ ์ด๋ธ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ์ ์๋ ์ฌ์ด์ฆ์ธ ๊ฒฝ์ฐ, hash index๋ ์ฟผ๋ฆฌ ์๋๋ฅผ ํฅ์์ํจ๋ค. # ์ธ๋ฑ์ค๋ฅผ pointer์ ๊ฐ์ด ๋์ํ๊ฒ ํด์ ์ํ๋ ๋ก์ฐ๋ฅผ ๋ฐ๋ก ๋ค์ด๋ ํธํ๊ฒ ์ฐพ์์ ์๋ค. # 5) ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ํด์๋ฅผ ํตํด์ ์ง์ ์ ๊ทผํ ์ ์๊ธฐ์, Mutex Lock์ผ๋ก ์ธํ ์ง์ฐ์ ํ์ฐํ๊ฒ ์ค์ด๋ฆ # 6) heavy workloadํ์์๋(๋์ ๋๋ ๋ฐฐ์น ์์ ๋ฑ), adaptive has index๋ฅผ ์ ๊ทผํ ๋ ํ๋ํ๋ read/write lock์ด contention์ ์์ธ์ด ๋๊ธฐ๋ ํ๋ค # 7) LIKE % ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ์๋ Adaptive Hase Index๊ฐ ๋ณ ์ด๋์ด ์ ๋๋ค # 3. ๋ชจ๋ํฐ๋ง # 1) ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ๋ Innodb_Buffer_Pool_Size์ 1/64๋งํผ์ผ๋ก ์ด๊ธฐํ(์ต์๊ฐ ๊ทธ๋ ๊ณ ์ต๋๋ ์ ์ ์์) # ์ง๋์น๊ฒ ์ปค์ง์ง ์๋๋ก ์ํ์ ์ฃผ๊ธฐ์ ํ์ธ ํ์ (SHOW GLOBAL STATUS LIKE 'Innodb%adaptive%';) # 2) SHOW ENGINE INNODB STATUS ์์ SEMAPHORE ์น์ ์ RW-latch๋ฅผ ๋๊ธฐํ๋ thread๊ฐ ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด, disableํ๋ ๊ฒ์ด ๋ ์ข์ ์๋ ์๋ค. # 3) ํ ์ด๋ธ DROP์ ์ต๋ํ ํธ๋ํฝ์ด ์๋ ์๋ฒฝ์, Adaptive Hash Index๋ฅผ ์๊ฐ OFF/ON์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ณ , ํ ์ด๋ธ์ DROPํ๋ ๊ฒ์ด ์ข๋ค. innodb_adaptive_hash_index_partitions = 2 # adaptive_hash_index๋ฅผ ๋ช ๊ฐ๋ก ๋๋ ์ธ์ง ๊ฒฐ์ ํ๋ ๋ณ์ # ๊ธฐ๋ณธ์ 1 ์ด๋ฉฐ, 1์ผ ๋๋ ๋จ์ผ Mutex๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ DROPํ๊ฒ ๋๋ฉด adaptive_hash_index์์ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ฉด์ # adaptive_hash_index ๋์ ๋ณด๋ ์ฟผ๋ฆฌ๋ค๊น์ง ์ํฅ์ ๋ฐ์ ์ ์์ # ๋ณ์๊ฐ์ ํฌ๊ฒ ์ค์ ํ๋ฉด Mutex๊ฐ ์ฌ๋ฌ ๊ฐ๊ฐ ๋๋ฉด์ ํ ์ด๋ธ์ DROPํ ๋ adaptive_hash_index์์ Mutex ๊ฒฝํฉ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์์ # InnoDB ๋ด๋ถ์ ์ผ๋ก๋ ํ ์ด๋ธ DROP์ Sleep์์ด ์ฃฝ์ผ๋ผ๊ณ Hash Index์์ ๊ด๋ จ ๋ ธ๋๋ฅผ ๋ชจ๋ ์ญ์ ํ ํ ํ ์ด๋ธ์ด ์ ๊ฑฐ # ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก๋ CPU ๊ฐ์ ์ ๋๋ฉด ์ ๋นํ ๋ฏ ํจ #innodb_change_buffering = all # change buffering ์ค์ # change buffering = insert buffering + delete buffering + purge buffering # all : ๊ธฐ๋ณธ: buffer inserts, delete-marking operations, and purges. # none : Do not buffer any operations. # inserts : Buffer insert operations. # deletes : Buffer delete-marking operations. # changes : Buffer both inserts and delete-marking. # purges : Buffer the physical deletion operations that happen in the background. # Innodb๋ ์ธ๋ฑ์ค leaf node๋ฅผ ์ ๋ฐ์ดํธํ์ง ์๊ณ buffer๋ง ํด๋ , ๋ฒํผ์ ์์๋ก ์ ์ฅํด ๋๊ณ ๋์ค์ ์ฌ์ ๊ฐ ๋ ๋ ์ค์ ์ธ๋ฑ์ค์ ๋ณํฉํจ # secondary index์ leaf node๋ฅผ updateํ๋ ค๋ฉด, ๋์คํฌ๋ก๋ถํฐ index page๋ฅผ ์ฝ์ด์ ๋ณ๊ฒฝํด์ผํ๋๋ฐ ์ด๋ ๋ถ์์ ์ผ๋ก ์ถ๊ฐ IO๊ฐ ํ์ํ ์์ ์ด๊ธฐ ๋๋ฌธ # ์ ์ฅ: change buffer๋ system tablespace์ ์์นํจ # ์กฐ๊ฑด: non-uniqueํ ์ธ๋ฑ์ค์ ๋ํ ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ, ๋ณ๊ฒฝ์์ ์ ํด๋นํ๋ page๊ฐ buffer pool์ ์กด์ฌํ์ง ์์๋๋ง change buffer์ ๋ณ๊ฒฝ์ ์ ์ฅ # merge ์์ ) # background thread์ ์ํ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณํฉ # ํด๋น page๊ฐ ๋ค๋ฅธ read operation์ ์ํด์ buffer pool๋ก ๋ถ๋ ค์ฝํ์ก์ ๋ #innodb_change_buffer_max_size=25 # ๋ฒํผํ์์ change_buffer๊ฐ ์ฐจ์งํ ๋น์จ #innodb_old_blocks_pct = 37 # LRU ๋ฆฌ์คํธ ์์ญ์ ๋ฒ์(ํผ์ผํธ) #innodb_old_blocks_time = 1000 # LRU ๋ฆฌ์คํธ์์ MRU ๋ฆฌ์คํธ๋ก ์ฎ๊ธฐ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์๊ฐ(๋ฐ๋ฆฌ์ด) # MRU: Most Recently used list, LRU: Last Recently used list # ๋ฒํผํ์ ํ์ด์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฆฌ์คํธ = MRU ๋ฆฌ์คํธ + LRU ๋ฆฌ์คํธ innodb_autoinc_lock_mode = 1 # auto_increment ์นผ๋ผ์ ๋ค์ด๊ฐ ๊ฐ์ ์ํ lock ์ค์ # 0 : insert ํ ๋ ๋ง๋ค auto increment lock ์ฌ์ฉ, insert ... select ... ์ฒ๋ผ ๋๋ ๋ฐ์ดํฐ ์ ๋ ฅํ ๋๋ lock ๋๊ธฐ๊ฐ ๊ธธ์ด์ง # 1 : insert ... select ... ์ฒ๋ผ ๋๋ ๋ฐ์ดํฐ ์ ๋ ฅํ ๋ ๋ฏธ๋ฆฌ ์ผ์ ๋์ ์๋ ์ฆ๊ฐ๊ฐ์ ๋ง๋ค์ด ์ฌ์ฉ # ๋ฏธ๋ฆฌ ๋ง๋ ์ผ์ ๋์ ์๋ ์ฆ๊ฐ๊ฐ์ด ๋ค ์ฌ์ฉ๋์ง ์์ผ๋ฉด ๋๋จธ์ง๋ ๋ฒ๋ฆผ # 2: auto increment lock์ ์ฌ์ฉํ์ง ์๊ณ mutex ์ฌ์ฉ, auto_increment ๊ฐ์ด ์ ๋ํฌํจ์ ๋ณด์ฅํ์ง๋ง ์์๋ ๋ณด์ฅํ์ง ๋ชป ํจ #innodb_max_dirty_pages_pct=75 # ๋ฒํผํ์ ๋จ์ ์์ ์ ์๋ ๋ํฐ ํ์ด์ง์ ๋น์จ (์ด ๋น์จ์ด ๋์ด๊ฐ๋ฉด ์ฒดํฌํฌ์ธํธ๊ฐ ์ํ๋จ) # ๋ํฐํ์ด์ง(dirty page) = SQL ์กฐ์์ผ๋ก ๋ณ๊ฒฝ๋์ง๋ง ์์ง ๋์คํฌ์ ์ฐ์ฌ์ง์ง ์์ ๋ฐ์ดํฐ ํ์ด์ง #innodb_adaptive_flushing=ON # InnoDB ์์ง์ด ๋ฆฌ๋ ๋ก๊ทธ์ ๋ฐ์๋์ ๋ชจ๋ํฐ๋ง ํ๋ฉด์ ๋ฒํผ ํ์ ๋ํฐํ์ด์ง๋ฅผ ๋์คํฌ๋ก ์ฐ๋ ์์ ์๋๋ฅผ ์กฐ์ ํ๊ฒ ํจ # ON ์ด ์๋๋ฉด ๋ํฐํ์ด์ง์ ๋น์จ์ด innodb_max_dirty_pages_pct๋ฅผ ๋์ด์๋ ์๊ฐ ๊ณต๊ฒฉ์ ์ธ ๋์คํฌ ์ฐ๊ธฐ ์ผ์ด๋ ์ ์์ #innodb_use_native_aio=ON # ๋ฆฌ๋ ์ค์ ์๋์ฐ ํ๋ซํผ์ ํํด ๋ค์ดํฐ๋ธ ๋น๋๊ธฐ I/O ๋ฐฉ์์ด ์ ๊ณต๋จ (I/O์์ฒญ ๋์์ฑ ์ฆ๋ ํจ๊ณผ) # libaio ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์๊ณ , ์ด ๊ฐ์ "ON"์ผ๋ก ์ค์ ํด์ผ ์ฌ์ฉ ๊ฐ๋ฅํจ innodb_doublewrite = 1 # doublewrite buffer์ data file์ ์ด์ค ์ฐ๊ธฐ ํ์ฑํ (๊ธฐ๋ณธ: ํ์ฑ) # ๋ชฉ์ : ์์คํ crash, ์ ์๊ณต๊ธ์ค๋จ ๋ฑ ์ฅ์ ์ ๋ณด๋ค ์์ ํ ๋ฆฌ์ปค๋ฒ๋ฆฌ # OS์ ๊ธฐ๋ณธIO ๋จ์(๋ณดํต 4K)์ DB์ ๊ธฐ๋ณธIO๋จ์(๋ณดํต 16K)๊ฐ ๋ค๋ฆ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ page currupt๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ # (16K๊ฐ OS๋ฅผ ํตํด ๋ค ์จ์ง๊ธฐ ์ ์ ์์คํ crash๊ฐ ๊ฐ ๋๋, ์์ ํ๊ฒ ๋ณต๊ตฌํ ์ ์๋๋ก ๋์์ค) # InnoDB๋ full pages๋ฅผ ๋ก๊น ํ์ง๋ ์์ผ๋ฏ๋ก ํ์ํจ # InnoDB๋ log file์ page number, ๋ณ๊ฒฝ๋ด์ฉ, log sequence ์ ๋ณด๋ฅผ ๊ธฐ๋กํจ # Doublewrite Buffer ๋? # 1. ๊ธฐ๋ณธ์ ์ผ๋ก system tablespace์ ์์นํจ # 2. Flush ์ด๋ฒคํธ ๋ฐ์์ Doublewrite Buffer๋ฅผ ๋จผ์ ์ฐ๊ณ , ๊ทธ ๋ค์์ ๋์ ํ์ด์ง์ ๋ด์ฉ์ ๋ณ๊ฒฝํจ # (๋์ ํ์ด์ง์ ๋ณ๊ฒฝ ์์ ์ fsync()๋ฅผ callํด์ ์งํ๋จ) # 3. Doublewrite Buffer์ ๊ธฐ๋ก๋๋ ๋ด์ฉ์ ํด๋น ํ์ด์ง ์ ๋ณด์ operation ์ ๋ณด์ # 4. ์ฌ๋ฌ ๊ฐ์ dirty page๋ฅผ ๊ฐ๊ฐ์ ๋ฐ์ดํฐํ์ผ์ ํ๋ฌ์ฌํ๋ ค๋ฉด ๋๋คI/O๊ฐ ๋ฐ์ํ์ฌ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก # dirty page๋ฅผ ๋ชจ์์ ์์คํ ํ ์ด๋ธ์คํ์ด์ค ๋ด ํ๋์ ์ฐ์์ ์ธ extent์ ์ฐ๊ณ ๋จ์ผ I/O๋ก ์ฒ๋ฆฌ # 5. fsync() ํ์ ์ค์ - ๋งค page๋ง๋ค fsync()๋ฅผ ์ฝํ๋๊ฒ ์๋๋ผ, multiple page๋ฅผ ํ๋ฒ์ ์ฐ๊ณ fsync() # 6. ์ผ๋ฐ์ ์ผ๋ก doublewrite๋ฅผ ํ์ฑํ์ ์ํด์ ๋ฐ์ํ๋ ์ฑ๋ฅ ์ ํ๋ 5% ์ ๋๋ก ๋ณธ๋ค. #innodb_sync_spin_loops = 30 # ์ฐ๋ ๋๊ฐ ์ง์ฐ๋๊ธฐ ์ ์ (suspended) ํ์ด ์ฃผ๊ธฐ ์ํด InnoDB ๋ฎคํ ์ค(mutex)๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฐ๋ ๋์ ๋๊ธฐ ์๊ฐ # spin loop: CPU๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฝ์ด ํด์ ๋๋์ง ๊ฒ์ฌํ๋ ๊ฒ # ๋์ผํ ์ฟผ๋ฆฌ๊ฐ ๋์๋ค๋ฐ์ ์ผ๋ก ์ ์ ๋์ด ์ฌ๋ฌ ์ค๋ ๋์์ ๋ฉ๋ชจ๋ฆฌ๋ด์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ๊ทผํ์ฌ ๋ฎคํ ์ค ๊ฒฝํฉ์ด ๋ฐ์, # CPU ๋ถํ๊ฐ ๋์์ง๋ ๊ฒฝ์ฐ์๋ ์ด ๊ฐ์ ์ค์ฌ๊ฐ๋ฉด ๋ถํ๊ฐ ์ค์ด๋ค ์๋ ์์ (10์ ๋๊น์ง๋ ๊ด์ฐฎ์ ๋ฏ) #innodb_table_locks = 1 # LOCK TABLES์ AUTOCOMMIT=0๊ฒฝ์ฐ์, InnoDB๋ก ํ์ฌ๊ธ ๋ด๋ถ์ ์ผ๋ก ํ ์ด๋ธ์ ์ ๊ธ #innodb_max_purge_lag = 0 # ํผ์ง ์ฐ์ฐ (purge operation)์ด ๋๊น (lagging)๋ ๋ INSERT, UPDATE ๋ฐ DELETE ์ฐ์ฐ์ ์ง์ฐ ์ํค๋ ๋ฐฉ๋ฒ์ ์ ์ด # ๋ํดํธ๊ฐ 0์ผ์ ์ง์ฐ ์์ #innodb_commit_concurrency = 0 # ๋์์ commit ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ์ฐ๋ ๋์ ์ซ์. ๊ฐ์ด 0์ด ๋๋ฉด ๋์์ฑ ์ ์ด(concurrency control)๊ฐ ๋นํ์ฑํ #innodb_purge_threads = 1 # purge ์์ ์ ์คํํ ์ฐ๋ ๋์ ์ (๊ธฐ๋ณธ1~์ต๋32) # InnoDB์ purge ์์ # ์์ ) ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์์ ์ ํ ์ข ๋ฅ, ๋ง์คํฐ ์ฐ๋ ๋์ ์ํด ๋์๋จ, purgeํ๋ ๋์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ค์ ๋๊ธฐํด์ผ ํจ # MySQL 5.5์ดํ) ๊ฐ๋ณ์ ์ฐ๋ ๋์์ ์ํ๋๋ฉด์ ๋ ๋์ ๋์์ฑ ๋ณด์ฅ innodb_file_format = barracuda # InnoDB ํ์ผ ํฌ๋ฉง: ํ ์ด๋ธ์์ถ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด barracuda ์ฌ์ฉ innodb_file_format_max = barracuda innodb_large_prefix = ON # ์ธ๋ฑ์ค ํค ์นผ๋ผ์ prefix๋ฅผ 767 bytes ์ด์์ผ๋ก ์ค์ (์ต๋ 3072 bytes๊น์ง ์ค์ ๊ฐ๋ฅ) innodb_open_files = 4000 # DB์ ์ฒด์์ ๋์์ ์ด์ด ๋์ ์ ์๋ InnoDB ํ ์ด๋ธ์ .ibd ํ์ผ์ ์ #innodb_stats_persistent = 1 (ON) # ํต๊ณ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก mysql.innodb_table_stats, mysql.innodb_index_stats ํ ์ด๋ธ์ ์๊ตฌํ ์ ์ฅ #innodb_stats_auto_recalc = 1 (ON) # ์ฃผ๊ธฐ์ ์ผ๋ก ํต๊ณ ์ ๋ณด๋ฅผ ๊ฐฑ์ #innodb_stats_persistent_sample_pages = 20 # mysql.innodb_table_stats, mysql.innodb_index_stats ํ ์ด๋ธ์ ์๊ตฌํ ์ ์ฅํ ํต๊ณ์ ๋ณด ์์ง์ ์ฌ์ฉํ ์ํ ํ์ด์ง ์ #innodb_stats_sample_pages = 8 # ํต๊ณ์ ๋ณด ์์ง์ ์ฌ์ฉํ ์ํ ํ์ด์ง ์ #innodb_stats_on_metadata = OFF # ๋ค์ ๋ช ๋ น๋ค์ด ์คํ๋ ๋ ํต๊ณ ์ ๋ณด ๊ฐฑ์ ํ์ฑํ # SHOW TABLE STATUS, SHOW INDEX, INFORMATION_SCHEMA.TABLES ์กฐํ, INFORMATION_SCHEMA.STATISTICS ์กฐํ innodb_show_verbose_locks = 1 # "SHOW ENGINE INNODB STATUS"์ ๋ฝ์ด ์กํ ๋ ์ฝ๋ ํ์ innodb_print_all_deadlocks = ON # ์๋ฌ ๋ก๊ทธ์ InnoDB ๋ฐ๋๋ฝ ์ ๋ณด ๊ธฐ๋ก ํ์ฑํ #innodb_status_output = ON; # ์๋ฌ ๋ก๊ทธ์ "SHOW ENGINE INNODB STATUS" ๊ฒฐ๊ณผ ํฌํจ ์ค์ innodb_status_output_locks = ON # InnoDB Status๋ฅผ ๋ณด๋ ๋ถ๋ถ("SHOW ENGINE INNODB STATUS" ํน์ ์๋ฌ๋ก๊ทธ)์ lock ์ ๋ณด๋ ํจ๊ป ํ์๋๋๋ก ํจ #innodb_force_recovery = 0 # ํฌ๋์ ๋ณต๊ตฌ ๋ชจ๋ ์ค๋ช : ํฐ ๊ฐ์ ์์ ๊ฐ์ ๋ด์ฉ์ ํฌํจํจ # 1 (SRV_FORCE_IGNORE_CORRUPT) ์๋ฒ๊ฐ ๊นจ์ง ํ์ด์ง๋ฅผ ๋ฐ๊ฒฌํ๋ค๊ณ ํ๋๋ผ๋ ๊ณ์ ๊ตฌ๋ํ๋๋ก ๋ง๋ฆ # 2 (SRV_FORCE_NO_BACKGROUND) ๋ฉ์ธ ์ฐ๋ ๋๊ฐ ๊ตฌ๋๋์ง ๋ชป ํ๋๋ก ํจ # 3 (SRV_FORCE_NO_TRX_UNDO) ๋ณต๊ตฌ ๋ค์์ ํธ๋์ ์ ๋กค๋ฐฑ์ ์คํํ์ง ์์ # 4 (SRV_FORCE_NO_IBUF_MERGE) ์ฝ์ ๋ฒํผ ๋ณํฉ ์ฐ์ฐ (insert buffer merge operations)๊น์ง ๊ธ์ง # 5 (SRV_FORCE_NO_UNDO_LOG_SCAN) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ํ ๋ UNDO log๋ฅผ ๊ฒ์ฌํ์ง ์์ # 6 (SRV_FORCE_NO_LOG_REDO) ๋ณต๊ตฌ ์ฐ๊ฒฐ์์ ๋ก๊ทธ ๋กค-ํฌ์๋ (roll-forward)๋ฅผ ์คํํ์ง ์์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## MyISAM ์คํ ๋ฆฌ์ง ์์ง ๊ด๋ จ ์ค์ ## InnoDB๋ฅผ ์ฌ์ฉํ์ง ์๊ณ MyISAM๋ง ์ฌ์ฉํ๋ค๋ฉด key_buffer_size๋ฅผ ํฌ๊ฒ ์ค์ ##--------------------------------------------------------------------------- key_buffer_size = 16M # MyISAM ํ ์ด๋ธ์ด ๊ฑฐ์ ์๊ณ , ๋ฐ์ดํฐ๋ ๋งค์ฐ ์ ์ผ๋ฏ๋ก ์์ฃผ ์๊ฒ ์ค์ bulk_insert_buffer_size = 1M myisam-recover-options = BACKUP,FORCE # MyISAM ํ ์ด๋ธ์ ์ด ๋ ์๋ ๋ณต๊ตฌ ์ต์ myisam_sort_buffer_size = 1M # ์ธ๋ฑ์ค ์ ๋ ฌ์ ํ ๋น๋๋ ๋ฒํผ์ ํฌ๊ธฐ myisam_max_sort_file_size = 64M # ์ธ๋ฑ์ค ์ฌ ์์ฑ์ ์ฌ์ฉํ ์์ ํ์ผ์ ์ต๋ ํฌ๊ธฐ #myisam_repair_threads = 1 # ์ ๋ ฌ ๋ณต๊ตฌ์ ์ฌ์ฉ๋ ์ฐ๋ ๋ ๊ฐฏ์ #ft_min_word_len # MyISAM ํน์ InnoDB ํ ์ด๋ธ FULLTEXT ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ๋ ํฌํจ๋ ๋จ์ด์ ์ต์ ๊ธธ์ด (mgroonga์๋ ๊ด๋ จ ์๋ ์ค์ ) # ์ด ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด "REPAIR TABLE ํ ์ด๋ธ์ด๋ฆ QUICK" ์ผ๋ก ์ฌ ๊ตฌ์ถํด์ผํจ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Aria ์คํ ๋ฆฌ์ง ์์ง ๊ด๋ จ ์ค์ ## internal temporary table์ด ์์ฑ๋ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Aria ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ๋ฏ๋ก ์ง๋์น๊ฒ ์๊ฒ ์ค์ ํ์ง ๋ง ๊ฒ ## ์: aria_pagecache_buffer_size = 1M ##--------------------------------------------------------------------------- aria_pagecache_buffer_size = 32M aria_sort_buffer_size = 32K aria_log_file_size = 64M ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ํต๊ณ ๋ฐ Optimizing ๊ด๋ จ ์ค์ ##--------------------------------------------------------------------------- use_stat_tables = NEVER # ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ ์ ๋ณด์ ํตํฉ ํต๊ณ ์ ๋ณด๋ฅผ ์ด์ฉํ๋ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ # NEVER: ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ์ ๋ณด๋ง ์์ง # COMPLEMENTARY : ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ์ ๋ณด๋ฅผ ์ฐ์ ์ฌ์ฉํ๊ณ ์ ๋ณด๊ฐ ๋ถ์กฑํ๋ฉด ํตํฉ ํต๊ณ ์ ๋ณด ์ฌ์ฉ # PREFERABLY: ํตํฉ ํต๊ณ์ ๋ณด๋ฅผ ์ฐ์ ์ฌ์ฉ ์ฌ์ฉํ๊ณ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์คํ ๋ฆฌ์ง ์์ง ํต๊ณ ์ ๋ณด ์ฌ์ฉ # ํตํฉ ํต๊ณ์ ๋ณด๋? mysql.table_stat, mysql.column_stat, mysql.index_stat histogram_size = 20 # ํ์คํ ๊ทธ๋จ์ ์ ์ฅํ ๊ณต๊ฐ ํฌ๊ธฐ(bytes๋จ์), ํ์คํ ๊ทธ๋จ ์ ๋ณด๋ mysql.column_stat ์ ์ฅ # 0 ~ 255 ๊น์ง ์ค์ ๊ฐ๋ฅ, 0์ด๋ฉด ํ์คํ ๊ทธ๋จ ์์ง ์ ํจ # MariaDB๋ Height-Balanced Histogram ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ, ๋ฒํท์ ์ ์ฅ๋ ์ต๋๊ฐ์ 1byte ํ ๋นํด์ ์ ์ฅ histogram_type = SINGLE_PREC_HB # # SINGLE_PREC_HB : histogram_size ๋งํผ ๋ฒํท ์์ฑ # DOUBLE_PREC_HB : histogram_size/2 ๋งํผ ๋ฒํท ์์ฑ (๋ฒํท๋น 2byte๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ ํ์ฑ์ ํ๋ํ๊ธฐ ๋๋ฌธ) #optimizer_prune_level = 1 # ์กฐ์ธ ์์ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ (1: Greedy ๋ฐฉ์, 2: Exhaustive ๋ฐฉ์) optimizer_search_depth = 20 # Greedy ๋ฐฉ์์์ ์ฟผ๋ฆฌ์ ์๋ ํ ์ด๋ธ ์ค ๋ช๊ฐ ํ ์ด๋ธ์ ์กฐ์ธ ์์ ์ต์ ํ๋ฅผ ์ฐพ์ ์ง ๊ฒฐ์ (๊ธฐ๋ณธ 62) optimizer_use_condition_selectivity = 4 # ์ตํฐ๋ง์ด์ ์ ํ๋(1~5) # 1: MariaDB 5.5 ๋ฒ์ ์์ ์ฌ์ฉํ๋ ์ ํ๋ ์์ธก ๋ฐฉ์์ ์ ์ง(๋ํดํธ ๊ฐ) # 2: ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์๋ง ์ ํ๋ ํ๋จ # 3: ๋ชจ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์ ์ ํ๋ ํ๋จ(ํ์คํ ๊ทธ๋จ ์ฌ์ฉ ์ํจ) # 4: ๋ชจ๋ ์นผ๋ผ์ ์กฐ๊ฑด์ ๋ํด์ ์ ํ๋ ํ๋จ(ํ์คํ ๊ทธ๋จ ์ฌ์ฉ) # 5: 4์ ์ถ๊ฐ์ ์ผ๋ก ๋ฒ์ ๊ฒ์์ด ์๋ ์กฐ๊ฑด์ ๋ํด์๋ ์ํ๋ง ์ ๋ณด๋ฅผ ์ด์ฉํด ์ ํ๋๋ฅผ ํ๋จ userstat = ON # Enable INFORMATION_SCHEMA.%_STATISTICS tables ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## Binary Logs ##--------------------------------------------------------------------------- server_id = 1 # Binary Log ์ค๋ช # 1. ์จ์ง๋ ์์ # 1) ํธ๋์ญ์ ์ ์ง์ํ๋ ์คํ ๋ฆฌ์ง ์์ง(์: InnoDB) # commit ๋ ํ lock์ด ํด์ง ๋์ง ์์ ์ํ์์ ์ฟผ๋ฆฌ๋ฅผ ๋ก๊น # commit ์ ์๋ ์ฟผ๋ฆฌ ์ ๋ณด๊ฐ cache๋๊ณ commit ๋ ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ์ ๋ณด๊ฐ ๋ก๊น ๋จ # 2) ํธ๋์ญ์ ์ ์ง์ํ๋ ์๋ ์คํ ๋ฆฌ์ง ์์ง(์: MyISAM) # ์ฟผ๋ฆฌ ์คํ ์งํ ๋ฐ๋ก ๋ก๊น ๋จ # ํธ๋์ญ์ ์์ ํธ๋์ญ์ ์ ์ง์ํ์ง ์๋ ํ ์ด๋ธ์ด ์์ด๋ฉด, ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋๋ ๊ทธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ ๋กค๋ฐฑ ์ ๋จ # 2. ํ์ฑํ ๋ฐฉ๋ฒ # log_bin ์ค์ log_bin = /data/mysvc/binary_MARIASVC/mysvc-bin # binary log ๊ฒฝ๋ก #binlog_cache_size = 256K # ์ฐ๋ ๋ ๋ณ๋ก binary logging๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํ ์บ์ ์ฌ์ด์ฆ๋ก ํธ๋์ญ์ ์ง์ ๊ตฌ๋ฌธ๋ง์ ์ํด ์ฌ์ฉ๋จ # ํฐ ๋ค์ค๋ฌธ ํธ๋์ญ์ ์ ๋ฒ๋ฒํ ์ฌ์ฉํ๋ค๋ฉด ์ด ์ฌ์ด์ฆ๋ฅผ ํฌ๊ฒ ์ก์์ ํผํฌ๋จผ์ค๋ฅผ ๊ฐ์ ํ ์ ์์ # ์ต๋ ์ฌ์ด์ฆ: max_binlog_cache_size๋ก ์ค์ ๊ฐ๋ฅ #binlog_stmt_cache_size = 32K # ์ฐ๋ ๋ ๋ณ๋ก binary logging๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํ ์บ์ ์ฌ์ด์ฆ๋ก ํธ๋์ญ์ ์ง์ํ์ง ์๋ ๊ตฌ๋ฌธ๋ง์ ์ํด ์ฌ์ฉ๋จ # ์ต๋ ์ฌ์ด์ฆ: max_binlog_stmt_cache_size๋ก ์ค์ ๊ฐ๋ฅ #binlog_checksum = NONE # NONE: binary log์ ์ด๋ฒคํธ๊ฐ ์ ๋๋ก ์์ฑ๋๋์ง ๊ฐ๊ฐ์ ์ด๋ฒคํธ ๊ธธ์ด๋ฅผ ์ฒดํฌํด์ ํ์ธ max_binlog_size = 256M # binary log file ์ต๋ ํฌ๊ธฐ binlog_format = ROW # binary log์ ๊ธฐ๋กํ ๋ฐ์ดํฐ ์ ํ # transaction_isolation์ด "READ-COMMITTED" ์ด์์ด๋ฉด "MIXED" ์ด์์ผ๋ก ์ค์ ํด์ผ ํจ # STATEMENT: ๋ช ๋ น๋ฌธ ๊ธฐ๋ก # MIXED : ๋ช๋ช ์ผ๊ด์ฑ์ ๋ณด์ฅํ์ง ๋ชป ํ๋ ๊ฒฝ์ฐ์๋ ROW ํฌ๋ฉง์ผ๋ก, ๊ทธ ์ธ์๋ STATEMENT ํฌ๋ฉง์ผ๋ก ๊ธฐ๋ก # ROW: ์ค์ ๋ ์ฝ๋ ๊ธฐ๋ก sync_binlog = 0 # DB์ binary log ๋๊ธฐํ ๋น๋ ์ค์ # 0: binary log๋ฅผ ๊ธฐ๋กํ์ง๋ง ์ง์ ์ ์ผ๋ก ํ๋ฌ์(๋๊ธฐํ)๋ฅผ ์คํํ์ง ์๊ณ , OS์ ๋งก๊น (๋ฆฌ๋ ์ค ๊ณ์ด์ 3~5์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋ ํ๋ฌ์ํจ) # 1: binary log์ ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋์คํฌ ๋๊ธฐํ ์ํ # binary log ์์ค์ ์์ง๋ง ์ฆ์ ๋์คํฌ I/O๋ก ๋๋ ค์ง ์ ์์ # 1 ์ด์์ ๊ฐ: ์ค์ ๋ ํ์๋งํผ binary log ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ ๋๋ง๋ค DB๊ฐ binary log ํ์ผ์ ๋๊ธฐํ๋ฅผ ์คํ # ์ค์ ๋ ๊ฐ์ด ํด์๋ก ์์ค๋ ์ ์๋ binary log์ ์์ด ๋ง์์ง๊ณ binary log์ ์ฐ๊ธฐ ์ฑ๋ฅ์ ์ข์์ง expire_logs_days = 1 # binary log ๋ณด๊ด๊ธฐ๊ฐ(์ผ), ์ด ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์๋ ์ญ์ log_bin_trust_function_creators = 1 # Routine ์์ฑ์ ์ ๋ขฐ, replication ํ๊ฒฝ์์๋ ์ด ์ค์ ์ ํด์ผ๋ง Routine ์์ฑ์ด ๊ฐ๋ฅํจ #binlog-annotate-row-events = ON # ์ฃผ์๋ binary log์ ๋จ๋๋ก ์ฒ๋ฆฌ #sql_log_bin = 0 # mysqld์ ์ ์ฉ๋๋ ์์คํ ๋ณ์๋ ์๋๊ณ , ์ฐ๋ ๋๋ ๋ฒจ์์ ์ค์ ํ ์ ์๋ ๊ฐ์ # ํด๋น ์ฐ๋ ๋์์ binary log๊ฐ ์ ๋จ๊ฒ ํ๊ณ ์ถ์ ๋๋ 0์ผ๋ก ์ค์ ๊ฐ๋ฅ, SUPER ๊ถํ ํ์ํจ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ์ฌ๋ ์ด๋ธ(Slave) ์ค์ - replication ํ๊ฒฝ์์ slave์ผ ๋๋ง ์๋ฏธ ์์ ##--------------------------------------------------------------------------- #relay_log = /junyss/example/mariadb/relay # ๋ฆด๋ ์ด ๋ก๊ทธ ๊ฒฝ๋ก #relay_log_purge = TRUE #read_only # ์ผ๊ธฐ ์ ์ฉ DB๋ก ์ค์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ์ฌ๋ ์ด๋ธ(Slave)์ด๋ฉด์ ๋ง์คํฐ(Master)์ธ ๊ฒฝ์ฐ ##--------------------------------------------------------------------------- #log-slave-updates # ํ์ฌ ๋ณต์ ๋๋ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ์ ์ฅ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## mysqld_safe ๋ฐ๋ชฌ์๋ง ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [mysqld_safe] log-error=/junyss/example/mariadb/log/error/mysqld.err # ์๋ฌ๋ก๊ทธ ํ์ผ๊ฒฝ๋ก pid-file = /junyss/example/mariadb/mysqld.pid # ํ๋ก์ธ์ค ID ํ์ผ๊ฒฝ๋ก socket = /junyss/example/mariadb/mysqld.sock # ์์ผํ์ผ ๊ฒฝ๋ก nice = 0 ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## mysqldump ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [mysqldump] max-allowed-packet = 1G default-character-set = 'utf8mb4' quick # ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ , direct๋ก ๋คํ๋ฐ๊ธฐ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## myisamchk ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [myisamchk] key-buffer-size = 10M sort-buffer-size = 10M read-buffer-size = 8M write-buffer-size = 8M ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## mysql ํด๋ผ์ด์ธํธ ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [mysql] default-character-set = 'utf8mb4' no-auto-rehash # ์๋ ์์ฑ ๊ธฐ๋ฅ ๋นํ์ฑํ local-infile = ON # local file์ ์ด์ฉํ LOAD DATA ์์ ์ด ๊ฐ๋ฅํ๊ฒ ํจ enable-secure-auth # ์๋ฒ๋ก ๊ตฌ๋ฒ์ (4.1๋ฒ์ ์ดํ) ํฌ๋ฉง์ผ๋ก ๋ ํจ์ค์๋ ์ ๋ฌ ๋นํ์ฑํ prompt=(\U){\h}[\d]\_\R:\m:\\s>\_ # SQL ํ๋กฌํํธ ์ค์ pager=less -n -i -F -X -E # ๋ฐ์ดํฐ ์ถ๋ ฅ์ ํ์ด์ง์ฒ๋ฆฌ show-warnings # ๊ฒฝ๊ณ ๋ฐ์์ ๋ฉ์ธ์ง ์๋ ์ถ๋ ฅ #safe-updates # ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋๋ ์ญ์ ์ where์ ์ ํ์๋ก ๊ฐ๋๋ก ์ฒ๋ฆฌ #i-am-a-dummy ##--------------------------------------------------------------------------- ## xtrabackup (innobackupex) ํด์ ์ด์ฉํ DB ์ ์์์๋ง ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [xtrabackup] default-character-set = 'utf8' # clientlib 5.1๋ก xtrabackup binary๊ฐ build๋ ๊ฒฝ์ฐ, ํด๋น lib์๋ utf8mb4๊ฐ ์์ด์ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ # ์ค๋ฅ๋ด์ฉ: "Can't initialize character set utf8mb4" # lib 5.5๋ก xtrabackup์ ๋ค์ ์ปดํ์ผํ๋ฉด ๋ฌธ์ ๊ฐ ์์ง๋ง workaround๋ก ์์ ๊ฐ์ ์ต์ ์ ์ค์ ํด๋ ๋จ # ์ ์ค์ ์ ํน๋ณํ ์๋ฏธ๋ ์์ผ๋ฉฐ lib 5.1์๋ utf8์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ ##--------------------------------------------------------------------------- ## Author: ์ฃผ๋์ฐ ## ๋ชจ๋ ํด๋ผ์ด์ธํธ ํด์ ์ด์ฉํ DB ์ ์์์ ์ ์ฉ๋๋ ์ค์ ##--------------------------------------------------------------------------- [client] port = 3306 socket = /junyss/example/mariadb/mysqld.sock default-character-set=utf8mb4โโ
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด MariaDB ์ฉ ํ๊ฒฝ ๋ณ์ File์ ์ก์ํด ์ฃผ์์ด์.
์์ ๊ฐ์ด docker-compose File์ ํตํด Container๋ฅผ ๊ธฐ๋ํด ์ฃผ์์ด์.
Docker Container ์์ผ๋ก ์ง์
ํด์ ์ ์ค์น ๋์๋์ง ํ์ธํด ๋ณผ๊ฒ์.
๐ฝ MariaDB
๐ฆ ์ด๊ธฐ ๊ตฌ์ฑ ๋ฐ ํ์ธ
์ด์ MariaDB์ ์ ์ํด์ ์ ์ ์ค์น ์ฌ๋ถ์ ์ธ๋ถ์์ ์ ์ํ ์ ์๋ ๊ณ์ ์ ๋ง๋ค๊ณ , DB Tool์ ์ด์ฉํด์ ์ ์ํด ๋ณผ๊ฒ์.
์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ด์ ์ธ๋ถ์์ ๋ถ์ด์ ์์
ํ ์ ์๋ ๊ด๋ฆฌ์ ๊ณ์ ์ ํ๋ ๋ง๋ค์ด ์ค๊ฒ์. ์์ ๊ฐ์ด ๋ง๋ค๋ฉด ์ธ๋ถ์์ ์ ์์ด ๊ฐ๋ฅํฉ๋๋ค.
์์ ๊ฐ์ด ์ธ๋ถ ์ ์ ๊ฐ๋ฅํ ๊ด๋ฆฌ์ ๊ณ์ ์ด ์์ฑ๋์์ด์.
ํด๋น ๊ณ์ ์๊ฒ Data Base์ ๊ดํ์ฌ ๋ชจ๋ ๊ถํ์ ์ฃผ์์ด์.
DB Tool๋ก ์ ์ ํ
์คํธ๋ฅผ ํด๋ณด๋ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ฐธ๊ณ ๋ก Port๊ฐ 1000์ธ ์ด์ ๋ Docker๋ฅผ ๋ง๋ค ๋, Port Mapping์ ํด์คฌ๊ธฐ ๋๋ฌธ์ด์์.
๐ง ์ฐธ๊ณ ์๋ฃ
'System ์์ ์ค > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Ubuntu] Docker gitlab ์ค์น ๋ฐ Mail ๊ธฐ๋ฅ ํ์ฑํ (2) | 2023.08.02 |
---|---|
[๊ฐ์ํ - Container] Docker Container๋ฅผ ์ด์ฉํ Ubuntu Container (systemctl ๋ช ๋ น์ด ๋๊ฒ ๋ง๋ค๊ธฐ) ์ค๋นํ๊ธฐ (0) | 2023.07.14 |
[Docker] ์คํ์ค์ธ Container Port Forwarding ๋ค์ ํ๊ธฐ (0) | 2023.07.08 |
[Docker]Rocky Linux Docker ๋ฐ Docker-compose ์ค์น (0) | 2023.07.08 |
[Docker] ์ ์ฅ์ ๋ณ๊ฒฝ (0) | 2023.07.07 |