Instalasi dan optimalisasi dasar MariaDB pada CentOS

Pada artikel ini saya akan mempertimbangkan fitur-fitur instalasi, konfigurasi dasar dan optimalisasi server database MariaDB. Tugas saya adalah menginstal c MariaDB dan melakukan konfigurasi dasar pada Linux CentOS 7. Karena ini adalah masalah topikal, saya harap artikel ini akan bermanfaat bagi Anda. Di akhir artikel saya akan memberikan beberapa contoh file konfigurasi, dan Anda dapat menggunakannya untuk memilih parameter untuk server Anda.

Konten:

  • Instal MariaDB di CentOS
  • Perlindungan dan keamanan MariaDB
  • Memeriksa Koneksi ke Server MariaDB
  • Mengatur file konfigurasi MariaDB
  • Optimalisasi Kinerja dan Tuning MariaDB
  • Perintah Dasar untuk Bekerja di Konsol MariaDB

Instal MariaDB di CentOS

Baru-baru ini, MariaDB termasuk dalam repositori basis standar untuk CentOS 7, tetapi repositori ini berisi versi 5.5. Versi ini tidak lagi relevan, memiliki masalah kinerja dan tidak ada pencarian teks lengkap di InnoDB. Pada saat penulisan, versi MariaDB saat ini adalah 10.4, jadi dengan menghubungkan ke server Linux kami melalui ssh, pertama-tama kita hubungkan repositori pengembang mariadb.org dan kemudian mulai menginstal server database.

Saya sudah terbiasa bekerja dengan file melalui editor nano, instal melalui yum:

yum instal nano -y

Dan buka file repositori untuk diedit:

nano /etc/yum.repos.d/mariadb.repo

Dan tambahkan informasi berikut di sana:

[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey = https: //yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1 

Simpan file dan jalankan instalasi:

yum instal MariaDB-server MariaDB-client -y

Instalasi selesai, sekarang Anda perlu menambahkan layanan ke startup dan menjalankan:

systemctl memulai mariadb
systemctl aktifkan mariadb

Periksa status layanan:

status sistemctl mariadb

Layanan Mariadb aktif dan berjalan, sehingga Anda dapat terus mengonfigurasi.

Perlindungan dan keamanan MariaDB

Setelah kami menginstal dan meluncurkan MariaDB, kami dapat melanjutkan ke pengaturan keamanan. Jalankan skrip bawaan:

/ usr / bin / mysql_secure_installation

Skenario ini menjelaskan setiap langkah secara terperinci dan kami tidak akan membahasnya secara terperinci. Pertama, dia akan meminta kata sandi root, tetapi setelah instalasi awal tidak ada dan oleh karena itu kita tekan enter dan pada tahap selanjutnya tetapkan kata sandi yang rumit (tergantung pada seberapa aman server Anda akan). Setelah itu, Anda dapat menekan "enter" hingga akhir eksekusi skrip, pengguna anonim, login root jarak jauh, serta tabel uji akan dihapus dan hak istimewa akan dimuat ulang.

Untuk terhubung ke server mariadb, Anda perlu membuat aturan di firewall Linux menggunakan iptables:

iptables -I INPUT -p tcp --port 3306 -m state --state NEW, ESTABLISHED -j ACCEPT
iptables-save> / etc / sysconfig / iptables

Secara opsional, Anda dapat mengizinkan koneksi keluar ke database MariaDB lainnya.

iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

Memeriksa Koneksi ke Server MariaDB

Pastikan instalasi MariaDB berhasil.

Terhubung ke server database menggunakan alat mysqladmin bawaan:

versi mysqladmin

Perintah akan menghasilkan hasilnya:

mysqladmin Ver 9.1 Distrib 10.4.7-MariaDB, untuk Linux pada x86_64 Hak Cipta (c) 2000, 2018, Oracle, MariaDB Corporation Ab dan lainnya. Server versi 10.4.7-MariaDB Protokol versi 10 Sambungan Localhost melalui soket UNIX Soket UNIX /var/lib/mysql/mysql.sock Waktu Aktif: 11 menit 35 detik Thread: 7 Pertanyaan: 26 Permintaan lambat: 0 Dibuka: 20 Tabel siram: 1 Buka tab

Ini berarti bahwa instalasi MariaDB berhasil, database sudah berjalan dan berjalan..

Anda dapat terhubung ke konsol server maridb untuk secara interaktif menjalankan perintah sql:

mysql -u root -p

Mengatur file konfigurasi MariaDB

Biasanya setelah menginstal MariaDB saya tambahkan ke file konfigurasi /etc/my.cnf konfigurasi standarnya, yang berfungsi pada lebih banyak server dan sejauh ini tidak ada masalah dengan database. Bersihkan my.cnf dan tambahkan berikut ini ke dalamnya:

[mysqld] local-infile = 0 datadir = / var / lib / mysql socket = / var / lib / mysql / mysql.sock simbolic-links = 0 max_allowed_packet = 128M sql_mode = "" log-error = / var / log / mysql -error.log # Cache parameter query_cache_size = 16M table_open_cache = 4096 thread_cache_size = 16 key_buffer_size = 8M thread_stack = 256 ribu join_buffer_size = 2M sort_buffer_size = 2M # parameter untuk tabel sementara tmpdir = / tmp max_heap_table_size = 32M tmp_table_size = 32M # InnoDB parameter innodb_file_per_table innodb_buffer_pool_size = 32M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_use_native_aio = 0 transaksi-isolasi = BACA-COMMITTED karakter-set-server = utf8 collation-server = utf8_unicode_ci init-connect = "SETtranskriptranskriptranskriptranskriptranskriptranskripdikataubuhdakdataakandigunakankata dapatkata ndakdipartipulatranskriptranskriptranskriptranskriptranskriptranskriptranskriptranskriptransksi 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 

Untuk pemahaman umum, kami akan menganalisis parameter utama file konfigurasi my.cnf:

  • datadir - direktori untuk menyimpan file database;
  • tmpdir - direktori untuk menyimpan file sementara;
  • lewati-nama-tekad - menonaktifkan resolusi DNS;
  • max_allowed_packet - ukuran paket maksimum. Jika bidang gumpalan digunakan dalam database, Anda harus menetapkan nilainya ke setidaknya bidang terbesar;
  • max_connections - jumlah koneksi terbuka maksimum, parameter menentukan berapa banyak klien dapat bekerja dengan server database pada saat yang sama;
  • Bagian # Parameter cache - segala sesuatu yang berkaitan dengan cache kueri; nilai pengaturan terlalu tinggi tidak disarankan, karena konsumsi sumber daya oleh server database akan tumbuh;
  • Bagian # Parameter InnoDB - semua yang berhubungan dengan tabel innodb;
  • innodb_buffer_pool_size - cache buffer untuk data dan indeks, jika 1-2 proyek berada di server, atur nilainya menjadi 70-80% dari RAM yang tersedia;
  • innodb_flush_method - untuk Linux, tetapkan nilainya ke O_DIRECT, ini akan menonaktifkan caching di tingkat OS;
  • innodb_flush_log_at_trx_commit - parameter ini mempengaruhi kecepatan tulis tabel innoDB. Ambil parameter ini dengan serius, setel nilai ke 0, Anda mendapatkan lebih banyak kinerja, tetapi risiko kehilangan data meningkat. Saya lebih suka mengatur nilai ke 2, karena saya tidak melihat peningkatan besar dalam pekerjaan server database, dan keamanan di atas semua.

Optimalisasi Kinerja dan Tuning MariaDB

Saya ingin menambahkan bahwa Anda tidak perlu bergantung secara khusus pada file konfigurasi saya, disarankan untuk memilih parameter Anda sendiri untuk setiap server dan untuk setiap proyek. Saya merekomendasikan menggunakan skrip untuk secara otomatis memeriksa konfigurasi MariaDB, yang setelah eksekusi memberikan beberapa rekomendasi untuk mengoptimalkan server.

Pasang skrip Tuning-Primer.sh:

yum instal bc net-tools -y

Unduh skripnya:

wget https://launchpadlibrarian.net/78745738/tuning-primer.sh

Kami memberikan hak:

chmod + x tuning-primer.sh

Kami meluncurkan:

./tuning-primer.sh

Setelah eksekusi, skrip akan memberi Anda semua informasi yang Anda butuhkan untuk membiasakan diri. Poin-poin penting akan disorot dengan warna merah dan Anda harus memperbaikinya sedapat mungkin..

Misalnya, skrip saya segera menunjukkan bahwa jumlah koneksi yang digunakan jauh lebih sedikit daripada yang saya atur:

Parameter ini dapat diubah, baik di file my.cnf dan melalui konsol, saya menguranginya menjadi 10 dan skrip memuji saya:

Dengan bantuan manipulasi semacam itu, Anda dapat mengarahkan ke operasi server database Anda yang ideal.

Saya ingin mencatat bahwa waktu operasi server database yang disarankan adalah setidaknya 48 jam, maka informasinya akan lebih akurat dan berdasarkan ini Anda perlu melakukan penyetelan.

Untuk file konfigurasi saya, Anda dapat menambahkan bagian untuk mengaktifkan log permintaan lambat, ini akan membantu Anda menganalisis pekerjaan proyek Anda. Di bagian "mysqld", tambahkan:

slow_query_log = 1 # aktifkan log kueri lambat long_query_time = 5 # atur waktu dalam detik slow_query_log_file = /var/log/slow-query.log # nama dan jalur ke file log dari kueri lambat

Anda juga perlu membuat file log untuk MariaDB dan memperlambat kesalahan log permintaan:

sentuh /var/log/mysql-error.log
sentuh /var/log/slow-query.log

Kami melakukan restart layanan:

systemctl restart mariadb

Anda dapat melihat log permintaan lambat dengan membuka file /var/log/slow-query.log atau memeriksanya secara real time:

tail -f /var/log/slow-query.log

Dengan demikian, Anda dapat menganalisis permintaan basis data proyek Anda dan berdasarkan audit ini.

Setelah ada perubahan pada pengaturan database, Anda perlu memeriksa kesalahan konfigurasi:

Pastikan setelah semua pekerjaan dengan mengatur database, periksa status untuk kesalahan dengan menjalankan perintah:

status sistemctl mariadb -l

Perintah Dasar untuk Bekerja di Konsol MariaDB

Berikut ini adalah perintah klien utama yang paling sering harus digunakan administrator ketika bekerja di konsol maridb.

Untuk masuk ke konsol MariaDB secara lokal, jalankan:

mysql -u root -p

Untuk menghubungkan dari jauh ke server database MariaDB:

mysql -u root -p -h 10.1.1.20

Perintah yang Berguna:

buat database db1; - buat database bernama db1

tampilkan basis data; - daftar basis data yang dibuat

gunakan db1; - masukkan database dengan nama db1

tampilkan tabel; - tampilkan tabel basis data di mana kita berada

buat pengguna 'test' @ 'localhost' yang diidentifikasi oleh '123456'; - buat tes pengguna dan setel kata sandi 123456 (gunakan kata sandi yang lebih rumit)

berikan semua hak istimewa pada nama_database. * ke 'test' @ 'localhost'; - memberikan hak penuh untuk uji pengguna

hak istimewa; - perbarui semua hak istimewa

tampilkan daftar proses; - lihat koneksi aktif dalam database atau Anda dapat menggunakan perintah:

tampilkan status di mana 'variable_name' = 'Threads_connected';

Juga, dari konsol mysql, Anda dapat melihat atau mengubah parameter, misalnya:

TAMPILKAN VARIABEL SEPERTI 'max_error_count';

Edit:

SET max_error_count = 256;

Sebagai kesimpulan, saya ingin mengatakan bahwa ketika menyiapkan server database, Anda harus bergantung pada proyek yang akan di-host di server ini. Apa yang berlaku untuk proyek kecil, pada dasarnya, mungkin tidak cocok untuk proyek besar. Coba, bereksperimen dan yang paling penting selalu lihat di log. Pada artikel berikutnya, kami akan menunjukkan cara mengatur ketersediaan tinggi dan meningkatkan kinerja aplikasi dengan menggunakan replikasi antar server di MariDB.