Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

ติดตั้งและเพิ่มประสิทธิภาพ MariaDB บน CentOS 7

คู่มือติดตั้ง MariaDB เวอร์ชันล่าสุด (10.4+) บน CentOS 7, การตั้งค่าความปลอดภัย, ไฟล์ตั้งค่า my.cnf และการปรับแต่งประสิทธิภาพด้วย Tuning Scripts

1. ติดตั้ง MariaDB จาก Repository Official

yum install nano -y
nano /etc/yum.repos.d/mariadb.repo
# ใส่:
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

yum --disablerepo=AppStream install MariaDB-server MariaDB-client -y
systemctl start mariadb
systemctl enable mariadb

2. Secure Installation

/usr/bin/mysql_secure_installation
# ตั้ง Root Password, ลบ Anonymous Users, Disallow Remote Root, Remove Test DB, Reload Privileges

Firewall: iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT; iptables-save > /etc/sysconfig/iptables

3. ไฟล์ตั้งค่า my.cnf (/etc/my.cnf) – ตัวอย่างสำหรับ General Purpose

[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
max_allowed_packet = 128M
sql_mode = ""
log-error = /var/log/mysql-error.log

# Cache
query_cache_size = 16M
table_open_cache = 4096
thread_cache_size = 16
key_buffer_size = 8M
thread_stack = 256K
join_buffer_size = 2M
sort_buffer_size = 2M

# Temp Tables
tmpdir = /tmp
max_heap_table_size = 32M
tmp_table_size = 32M

# InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 32M  # ตั้ง 70-80% RAM หาก Server ให้บริการ DB หลัก
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_use_native_aio = 0
transaction-isolation = READ-COMMITTED
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect = "SET NAMES utf8 COLLATE utf8_unicode_ci"
skip-name-resolve

[mysqldump]
quick
quote-names
max_allowed_packet = 128M
default-character-set = utf8

[mysql]

[isamchk]
key_buffer = 16M

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

พารามิเตอร์สำคัญ:

  • innodb_buffer_pool_size – สำคัญที่สุด สำหรับ InnoDB ตั้ง 70-80% RAM
  • innodb_flush_log_at_trx_commit – 2 = สมดุลระหว่างความเร็วและความปลอดภัย (1 = ปลอดภัยสุด, 0 = เร็วสุด)
  • skip-name-resolve – ปิด DNS Lookup เร็วขึ้น
  • max_connections – ปรับตามจำนวน Connection พร้อมกัน

4. Performance Tuning ด้วย Tuning-Primer.sh

yum install bc net-tools -y
wget https://launchpadlibrarian.net/78745738/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh

Script จะวิเคราะห์และแนะนำการปรับพารามิเตอร์ (Highlight สีแดง = ควรแก้) ควรรันหลัง Server ทำงานจริง ≥ 48 ชั่วโมง

5. Slow Query Log

เพิ่มใน [mysqld]:

slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/log/slow-query.log
log_queries_not_using_indexes = 1

สร้างไฟล์ Log และ Restart: touch /var/log/slow-query.log; systemctl restart mariadb

ดู Log: tail -f /var/log/slow-query.log

6. คำสั่ง MariaDB Shell พื้นฐาน

mysql -u root -p                    # Local
mysql -u root -p -h 192.168.1.20   # Remote
CREATE DATABASE db1;
SHOW DATABASES;
USE db1;
SHOW TABLES;
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass';
GRANT ALL PRIVILEGES ON db1.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
SHOW PROCESSLIST;
SHOW VARIABLES LIKE 'max_error_count';
SET GLOBAL max_error_count = 256;

ตรวจสอบ Config หลังแก้ไข: systemctl status mariadb -l