Mariadb 10.4.13 Source install on CentOS 8
Mariadb 10.4.13 을 CentOS 8 에 source install 을 진행해 보았습니다.
Enviroment
OS : CentOS 8.1
Mariadb : 10.4.13
1. Default Enviroment Setting
$sudo dnf install tar wget $sudo mkdir -p /usr/local/IDC/Src $sudo mkdir -p /usr/local/IDC/Download $sudo mkdir -p /usr/local/IDC/Service $sudo mkdir -p /usr/local/IDC/Data
일반적인 설치는 centos 8 부터 적용된 dnf 를 사용하며 각 폴더의 용도는 다음과 같습니다.
Download – Source File 위치
Src – Source compile prefix 위치 ( 서비스명 + 버전명 표시 )
Service – Symbolic Src 위치 ( 서비스명 표시 )
2. Install Mariadb Default Environment Setting
$sudo dnf install cmake gcc-c++ guntls-devel ncurses-devel libxml2-devel libaio-devel libevent bison make $sudo groupadd --system mariadb $sudo useradd --system -g mariadb -d /usr/local/IDC/Data/mariadb -s /sbin/nologin -C "Maria Database" mariadb
3. Download Mariadb 10.4.13 & Install
$sudo cd /usr/local/IDC/Download $sudo wget https://downloads.mariadb.org/interstitial/mariadb-10.4.13/source/mariadb-10.4.13.tar.gz $sudo tar xfpvz mariadb-10.4.13.tar.gz $sudo cd mariadb-10.4.13 $sudo cmake \ -DWITH_READLINE=1 \ -DWITH_SSL=bundled \ -DWITH_ZLIB=system \ -DWITH_JEMALLOC=no \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_ARIA_STORAGE_ENGINE=1 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_FEDERATEDX_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_SAFEMALLOC=1 \ -DWITH_QUERY_CACHE_INFO=1 \ -DWITH_QUERY_RESPONSE_TIME=1 \ -DINSTALL_SYSCONFDIR=/usr/local/IDC/Src/mariadb-10.4.13/etc \ -DINSTALL_SYSCONF2DIR=/usr/local/IDC/Src/mariadb-10.4.13/etc/my.cnf.d \ -DCMAKE_INSTALL_PREFIX=/usr/local/IDC/Src/mariadb-10.4.13 \ -DMYSQL_DATADIR=/usr/local/IDC/Data/mariadb \ -DMYSQL_UNIX_ADDR=/usr/local/IDC/Src/mariadb-10.4.13/socket/mysql.socket $sudo make -j$(nproc) $sudo make install $sudo mkdir -p /usr/local/IDC/Src/mariadb-10.4.13/tmp $sudo mkdir -p /usr/local/IDC/Src/mariadb-10.4.13/logs
4. Symbloic directory & mysql / mysqldump
$sudo cd /usr/local/IDC/Service $sudo ln -s /usr/local/IDC/Src/mariadb-10.4.13 /usr/local/IDC/Service/mariadb $sudo ln -s /usr/local/IDC/Service/mariadb/bin/mysql /usr/bin/ $sudo ln -s /usr/local/IDC/Service/mariadb/bin/mysqldump /usr/bin/
5. Change my.cnf
$sudo vi /usr/local/IDC/Service/mariadb/etc/my.cnf
# 32G Ram Setting [client] port = 3306 socket = /usr/local/IDC/Service/mariadb/mysql.sock [mysqld] user = mariadb port = 3306 extra_port = 13306 extra_max_connections = 5 bind-address = 0.0.0.0 socket = /usr/local/IDC/Service/mariadb/mysql.sock pid-file = /usr/local/IDC/Service/mariadb/mysqld.pid tmpdir = /usr/local/IDC/Service/mariadb/tmp log_warnings = 2 log-error = /usr/local/IDC/Service/mariadb/logs/mysqld.log slow_query_log = 1 long_query_time = 3 slow_query_log_file = /usr/local/IDC/Service/mariadb/logs/mysqld-slow.log # replication setting server-id = 1 log-bin = mariadb-bin log-bin-index = mariadb-bin.index expire_logs_days = 7 max_binlog_size = 1024M binlog_format = row gtid_strict_mode = 1 event_scheduler = ON sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES log-bin-trust-function-creators = 1 max_allowed_packet = 16M default_storage_engine = InnoDB character-set-server = utf8 collation_server = utf8_general_ci character-set-client-handshake = FALSE skip-character-set-client-handshake init_connect = set names utf8 init_connect = set collation_connection=utf8_general_ci skip-name-resolve back_log = 1500 max_connections = 2500 max_user_connections = 0 thread_cache_size = 64 wait_timeout = 120 interactive_timeout = 350 thread_pool_size = 4 thread_handling = pool-of-threads thread_pool_max_threads = 1024 thread_pool_idle_timeout = 120 tmp_table_size = 256M table_open_cache = 70000 myisam_sort_buffer_size = 64M max_heap_table_size = 64M innodb_data_home_dir = /usr/local/IDC/Data/mariadb/ innodb_log_group_home_dir = /usr/local/IDC/Data/mariadb/ innodb_data_file_path = ibdata1:5G;ibdata2:5G;ibdata3:5G;ibdata4:5G:autoextend # files innodb_file_per_table innodb_log_file_size = 832M innodb_log_files_in_group = 2 innodb_open_files = 4000 innodb_undo_tablespaces = 4 # buffers key_buffer_size = 32M innodb_buffer_pool_dump_at_shutdown = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_size = 20G innodb_buffer_pool_instances = 16 innodb_log_buffer_size = 64M # tune innodb_doublewrite = 1 # Try number of CPU's*2 for thread_concurrency innodb_thread_concurrency = 20 innodb_flush_log_at_trx_commit = 1 innodb_flush_method = O_DIRECT_NO_FSYNC innodb_max_dirty_pages_pct = 30 innodb_max_dirty_pages_pct_lwm = 3 innodb_lru_scan_depth = 2048 join_buffer_size = 4M sort_buffer_size = 5M read_buffer_size = 4M read_rnd_buffer_size = 16M innodb_use_native_aio = 1 innodb_stats_persistent = 1 innodb_adaptive_flushing = 1 innodb_flush_neighbors = 0 innodb_read_io_threads = 16 innodb_write_io_threads = 16 innodb_io_capacity = 1500 innodb_io_capacity_max = 2500 innodb_purge_threads = 4 innodb_adaptive_hash_index = 0 max_prepared_stmt_count = 500000 innodb_monitor_enable = '%' performance_schema = ON [mysql] no_auto_rehash default-character-set=utf8 [myisamchk] aria_pagecache_buffer_size = 64M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout [mysqldump] quick max_allowed_packet = 16M [mysqld_safe] open_files_limit = 8000 user = mariadb
6. Reset database file by my.cnf & Setting privilege
$sudo cd /usr/local/IDC/Service/mariadb/scripts $sudo chown -R mariadb.mariadb /usr/local/IDC/Src/mariadb-10.4.13 $sudo chown -R mariadb.mariadb /usr/local/IDC/Data/mariadb $sudo ./mysql_install_db --user=mariadb --basedir=/usr/local/IDC/Src/mariadb-10.4.13/ --datadir=/usr/local/IDC/Data/mariadb
7. Create mariadb systemd
$sudo vi /etc/systemd/system/mariadb.service
[Unit] Description=MariaDB Database Server After=syslog.target After=network.target [Service] KillMode=process KillSignal=SIGTERM SendSIGKILL=no User=mariadb Group=mariadb LimitNOFILE=infinity LimitNPROC=4096 LimitCORE=infinity PermissionsStartOnly=true PrivateTmp=true OOMScoreAdjust=-1000 ExecStartPre=sync ExecStartPre=sysctl -q -w vm.drop_caches=3 ExecStart=/usr/local/IDC/Service/mariadb/bin/mysqld --defaults-file=/usr/local/IDC/Service/mariadb/etc/my.cnf --plugin-dir=/usr/local/IDC/Service/mariadb/lib/plugin --pid-file=/usr/local/IDC/Service/mariadb/mysqld.pid Restart=always RestartSec=1 TimeoutSec=300 [Install] WantedBy=multi-user.target
8. Mariadb Secure installation
$sudo systemctl enable mariadb.service $sudo systemctl start mariadb.service $sudo /usr/local/IDC/Service/mariadb/bin/mariadb-secure-installation -S /usr/local/IDC/Service/mariadb/mysql.sock