MariaDB Veritabanı Sunucusunun Kurulumu, Güvenliği ve Performans Ayarlaması Nasıl Yapılır


Veritabanı sunucusu günümüz uygulamaları için gerekli olan ağ altyapısının kritik bir bileşenidir. Verileri depolama, alma, güncelleme ve silme (gerektiğinde) yeteneği olmadan, web ve masaüstü uygulamalarının kullanışlılığı ve kapsamı çok sınırlı hale gelir.

Ayrıca, bir veritabanı sunucusunun nasıl kurulacağını, yönetileceğini ve yapılandırılacağını bilmek (beklendiği gibi çalışması için) her sistem yöneticisinin sahip olması gereken önemli bir beceridir.

Bu yazımızda MariaDB veritabanı sunucusunun nasıl kurulacağını ve güvenliğinin nasıl sağlanacağını kısaca gözden geçireceğiz ve ardından nasıl yapılandırılacağını açıklayacağız.

MariaDB Sunucusunun Kurulumu ve Güvenliğinin Sağlanması

CentOS 7.x'te MariaDB, hala Ubuntu'da (MariaDB ile birlikte) bulunabilen MySQL'in yerini aldı. Aynı durum openSUSE için de geçerlidir.

Kısaca anlatmak gerekirse, bu eğitimde yalnızca MariaDB'yi kullanacağız, ancak farklı adlara ve geliştirme felsefelerine sahip olmanın yanı sıra, her iki İlişkisel Veri Tabanı Yönetim Sisteminin (RDBMS) de geçerli olduğunu lütfen unutmayın. güçlü> kısaca) neredeyse aynıdır.

Bu, istemci tarafı komutlarının hem MySQL hem de MariaDB'de aynı olduğu ve yapılandırma dosyalarının adlandırıldığı ve aynı yerlerde bulunduğu anlamına gelir.

MariaDB'yi yüklemek için şunları yapın:

--------------- 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

Ubuntu'da RDBMS kök kullanıcısı için bir şifre girmeniz isteneceğini unutmayın.

Yukarıdaki paketler yüklendikten sonra, veritabanı hizmetinin çalıştığından ve önyüklemede başlamak üzere etkinleştirildiğinden emin olun (CentOS ve openSUSE'de bu işlemi manuel olarak gerçekleştirmeniz gerekecektir) , oysa Ubuntu'da kurulum işlemi bu işi zaten sizin yerinize halledecektir):

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

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

Daha sonra mysql_secure_installation betiğini çalıştırın. Bu süreç şunları yapmanızı sağlayacaktır:

  1. RDBMS kök kullanıcısı için şifreyi ayarlayın/sıfırlayın
  2. anonim oturum açma işlemlerini kaldırın (böylece yalnızca geçerli bir hesaba sahip kullanıcıların RDBMS'de oturum açmasına olanak tanır)
  3. localhost dışındaki makineler için root erişimini devre dışı bırakın
  4. test veritabanını kaldırın (herkesin erişebileceği)
  5. 1'den 4'e kadar olan değişikliklerle ilgili değişiklikleri etkinleştirin.

Bu sürecin daha ayrıntılı bir açıklaması için RHEL/CentOS/Fedora ve Debian/Ubuntu'da MariaDB Veritabanını Kurma bölümündeki Kurulum sonrası bölümüne başvurabilirsiniz.

MariaDB Sunucusunu Yapılandırma

Varsayılan yapılandırma seçenekleri aşağıdaki dosyalardan verilen sırayla okunur: /etc/mysql/my.cnf, /etc/my.cnf ve ~ /.my.cnf.

Çoğu zaman yalnızca /etc/my.cnf mevcuttur. Sunucu genelindeki ayarları bu dosyada ayarlayacağız (bu ayarlar, her kullanıcı için ~/.my.cnf dosyasında aynı ayarlarla geçersiz kılınabilir).

my.cnf hakkında belirtmemiz gereken ilk şey, ayarların, her kategori adının köşeli parantez içine alındığı kategoriler (veya gruplar) halinde düzenlenmiş olmasıdır.

Sunucu sistemi yapılandırmaları [mysqld] bölümünde verilmiştir; burada genellikle aşağıdaki tabloda yalnızca ilk iki ayarı bulacaksınız. Geri kalanı diğer sık kullanılan seçeneklerdir (belirtildiği yerde, varsayılan değeri kendi seçeceğimiz özel bir değerle değiştireceğiz):

Setting and description

Varsayılan değer

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 (bu, varsayılan olarak devre dışı olduğu anlamına gelir)

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 (varsayılan olarak devre dışıdır)

CentOS'ta, SELinux'a MariaDB'nin standart olmayan bir bağlantı noktasını (20500) dinlemesine izin vermesini söylememiz gerekecek. ) hizmeti yeniden başlatmadan önce:

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

Ardından MariaDB hizmetini yeniden başlatın.

MariaDB Performansını Ayarlama

Yapılandırmayı özel ihtiyaçlarımıza göre kontrol etmemize ve ayarlamamıza yardımcı olması için mysqltuner'i (veritabanı sunucumuzun performansını iyileştirmek ve kararlılığını artırmak için öneriler sağlayacak bir komut dosyası) yükleyebiliriz:

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

Ardından dizini tarball'dan çıkarılan klasöre değiştirin (sizin durumunuzda tam sürüm farklı olabilir):

cd major-MySQLTuner-perl-7dabf27

ve çalıştırın (yönetici MariaDB hesabınızın kimlik bilgilerini girmeniz istenecektir)

./mysqltuner.pl

Komut dosyasının çıktısı başlı başına çok ilginç, ancak ayarlanacak değişkenlerin önerilen değerle listelendiği aşağıya atlayalım:

query_cache_type ayarı, sorgu önbelleğinin devre dışı mı (0) yoksa etkin (1) mi olduğunu gösterir. Bu durumda mysqltuner bize onu devre dışı bırakmamızı tavsiye ediyor.

Peki neden şimdi devre dışı bırakmamız öneriliyor? Bunun nedeni, sorgu önbelleğinin çoğunlukla yüksek okuma/düşük yazma senaryolarında kullanışlı olmasıdır (veritabanı sunucusunu yeni kurduğumuz için bu bizim durumumuz değil).

UYARI: Bir üretim sunucusunun yapılandırmasında değişiklik yapmadan önce, mysqltuner tarafından verilen bir önerinin olumsuz etki yaratmayacağından emin olmak için uzman bir veritabanı yöneticisine danışmanız önemle tavsiye edilir. mevcut bir ortamda.

Özet

Bu yazımızda MariaDB veritabanı sunucusunu kurup güvenliğini sağladıktan sonra nasıl yapılandıracağımızı anlattık. Yukarıdaki tabloda listelenen yapılandırma değişkenleri, sunucuyu kullanıma hazırlarken veya daha sonra ayarlarken dikkate almak isteyebileceğiniz yalnızca birkaç ayardır. Değişiklik yapmadan önce daima resmi MariaDB belgelerine bakın veya MariaDB Performans ayarlama ipuçlarımıza bakın:

Kaçırmayın: 15 Faydalı MariaDB Performans Ayarlama ve Optimizasyon İpucu

Her zaman olduğu gibi, bu makaleyle ilgili herhangi bir sorunuz veya yorumunuz varsa bize bildirmekten çekinmeyin. Kullanmayı sevdiğiniz başka sunucu ayarları var mı? Aşağıdaki yorum formunu kullanarak topluluğun geri kalanıyla paylaşmaktan çekinmeyin.