Cara Menginstal, Mengamankan, dan Menyetel Kinerja Server Database MariaDB


Server database adalah komponen penting dari infrastruktur jaringan yang diperlukan untuk aplikasi saat ini. Tanpa kemampuan untuk menyimpan, mengambil, memperbarui, dan menghapus data (bila diperlukan), kegunaan dan cakupan aplikasi web dan desktop menjadi sangat terbatas.

Selain itu, mengetahui cara menginstal, mengelola, dan mengkonfigurasi server database (sehingga dapat beroperasi sesuai harapan) merupakan keterampilan penting yang harus dimiliki setiap administrator sistem.

Pada artikel ini kami akan mengulas secara singkat cara menginstal dan mengamankan server database MariaDB dan kemudian kami akan menjelaskan cara mengkonfigurasinya.

Memasang dan Mengamankan Server MariaDB

Di CentOS 7.x, MariaDB menggantikan MySQL, yang masih dapat ditemukan di Ubuntu (bersama dengan MariaDB). Hal yang sama juga berlaku untuk openSUSE.

Untuk singkatnya, kami hanya akan menggunakan MariaDB dalam tutorial ini, namun perlu diingat bahwa selain memiliki nama dan filosofi pengembangan yang berbeda, kedua Sistem Manajemen Basis Data Relasional (RDBMS singkatnya) hampir identik.

Artinya, perintah sisi klien sama di MySQL dan MariaDB, serta file konfigurasi diberi nama dan lokasi di tempat yang sama.

Untuk menginstal MariaDB, lakukan:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
zypper update && zypper install mariadb mariadb-tools # openSUSE

Perhatikan bahwa, di Ubuntu, Anda akan diminta memasukkan kata sandi untuk pengguna root RDBMS.

Setelah paket di atas terinstal, pastikan layanan database berjalan dan telah diaktifkan untuk memulai saat boot (di CentOS dan openSUSE Anda perlu melakukan operasi ini secara manual , sedangkan di Ubuntu proses instalasi sudah menanganinya untuk Anda):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
systemctl start mysql && systemctl enable mysql

Kemudian jalankan skrip mysql_secure_installation. Proses ini akan memungkinkan Anda untuk:

  1. atur/reset kata sandi untuk pengguna root RDBMS
  2. menghapus login anonim (sehingga hanya memungkinkan pengguna dengan akun valid untuk login ke RDBMS)
  3. nonaktifkan akses root untuk mesin selain localhost
  4. hapus database pengujian (yang dapat diakses siapa saja)
  5. aktifkan perubahan yang terkait dengan 1 hingga 4.

Untuk penjelasan lebih rinci tentang proses ini, Anda dapat merujuk ke bagian Pasca instalasi di Instal Database MariaDB di RHEL/CentOS/Fedora dan Debian/Ubuntu.

Mengonfigurasi Server MariaDB

Opsi konfigurasi default dibaca dari file berikut dalam urutan tertentu: /etc/mysql/my.cnf, /etc/my.cnf, dan ~ /.my.cnf.

Paling sering, hanya /etc/my.cnf yang ada. Pada file inilah kita akan mengatur pengaturan seluruh server (yang dapat diganti dengan pengaturan yang sama di ~/.my.cnf untuk setiap pengguna).

Hal pertama yang perlu kita perhatikan tentang my.cnf adalah pengaturannya diatur ke dalam kategori (atau grup) di mana setiap nama kategori diapit tanda kurung siku.

Konfigurasi sistem server diberikan di bagian [mysqld], yang biasanya Anda hanya akan menemukan dua pengaturan pertama pada tabel di bawah. Sisanya adalah opsi lain yang sering digunakan (jika ditunjukkan, kami akan mengubah nilai default dengan nilai khusus yang kami pilih):

Setting and description

Nilai default

datadir is the directory where the data files are stored.

datadir=/var/lib/mysql

socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications.

socket=/var/lib/mysql/mysql.sock

bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).

We will change this to instruct the service to listen only on its main address (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0

port represents the port where the database server will be listening.

We will replace the default value(3306) with 20500 (but we need to make sure nothing else is using that port):
port=20500

While some people will argue that security through obscurity is not good practice, changing the default application ports for higher ones is a rudimentary -yet effective- method to discourage port scans.

port=3306

innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.

We will replace the default value with 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728

skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.

Unless you require hostnames to determine permissions, it is advisable to disable this variable (in order to speed up connections and queries) by setting its value to 1:

skip_name_resolve=1

skip_name_resolve=0

query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.

You should choose a query cache size that matches your needs based on 1) the number of repetitive queries, and 2) the approximate number of records those repetitive queries are expected to return. We will set this value to 100 MB for the time being:

query_cache_size=100M

query_cache_size=0 (yang berarti dinonaktifkan secara default)

max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30:
max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections.

max_connections=151

thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.

Again, this depends on the number of connections you are expecting. We can safely set this value to half the number of max_connections:

thread_cache_size=15

thread_cache_size=0 (dinonaktifkan secara default)

Di CentOS, kita perlu memberi tahu SELinux untuk mengizinkan MariaDB mendengarkan pada port non-standar (20500 ) sebelum memulai ulang layanan:

yum install policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 20500

Kemudian restart layanan MariaDB.

Menyesuaikan Kinerja MariaDB

Untuk membantu kami dalam memeriksa dan menyetel konfigurasi sesuai kebutuhan spesifik kami, kami dapat menginstal mysqltuner (sebuah skrip yang akan memberikan saran untuk meningkatkan kinerja server database kami dan meningkatkan stabilitasnya):

wget https://github.com/major/MySQLTuner-perl/tarball/master
tar xzf master

Kemudian ubah direktori ke dalam folder yang diekstrak dari tarball (versi persisnya mungkin berbeda untuk kasus Anda):

cd major-MySQLTuner-perl-7dabf27

dan jalankan (Anda akan diminta memasukkan kredensial akun MariaDB administratif Anda)

./mysqltuner.pl

Output dari skrip itu sendiri sangat menarik, tapi mari kita lompat ke bagian paling bawah di mana variabel yang akan disesuaikan tercantum dengan nilai yang disarankan:

Setelan query_cache_type menunjukkan apakah cache kueri dinonaktifkan (0) atau diaktifkan (1). Dalam hal ini, mysqltuner menyarankan kami untuk menonaktifkannya.

Lalu mengapa kami disarankan untuk menonaktifkannya sekarang? Alasannya adalah bahwa cache kueri sebagian besar berguna dalam skenario pembacaan tinggi/penulisan rendah (yang bukan merupakan kasus kami, karena kami baru saja menginstal server database).

PERINGATAN: Sebelum melakukan perubahan pada konfigurasi server produksi, Anda sangat dianjurkan untuk berkonsultasi dengan administrator database ahli untuk memastikan bahwa rekomendasi yang diberikan oleh mysqltuner tidak akan berdampak negatif pada pengaturan yang ada.

Ringkasan

Pada artikel ini kami telah menjelaskan cara mengkonfigurasi server database MariaDB setelah kami menginstal dan mengamankannya. Variabel konfigurasi yang tercantum dalam tabel di atas hanyalah beberapa pengaturan yang mungkin ingin Anda pertimbangkan saat mempersiapkan server untuk digunakan atau saat menyetelnya nanti. Selalu lihat dokumentasi resmi MariaDB sebelum melakukan perubahan atau lihat tips penyetelan Kinerja MariaDB kami:

Jangan Lewatkan: 15 Tips Penyempurnaan dan Pengoptimalan Kinerja MariaDB yang Berguna

Seperti biasa, jangan ragu untuk memberi tahu kami jika Anda memiliki pertanyaan atau komentar tentang artikel ini. Apakah ada pengaturan server lain yang ingin Anda gunakan? Jangan ragu untuk berbagi dengan komunitas lainnya menggunakan formulir komentar di bawah.