テクノロジー データベース 非公開: Ubuntu および CentOS に MariaDB をインストールして構成する方法

Ubuntu および CentOS に MariaDB をインストールして構成する方法

オープンソースの人気のある MySQL リレーショナル データベース管理システム (RDBMS) である MariaDB をインストールして構成する方法を学びましょう。

これはコミュニティで開発されており、商用サポートのオプションもあります。 MariaDB は、いくつかの逸脱はありますが、MySQL との高い互換性を維持することを目的としています。

この記事では、Ubuntu 20.x および CentOS 7.x/8.x での MariaDB のインストールと構成について説明し、最後にそのパフォーマンスを保護し向上させるためのいくつかのベスト プラクティスを確認します。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

Ubuntu 上の MariaDB

Ubuntu 20.x では、MariaDB はデフォルトのリポジトリから直接利用できます。このタスクには apt を使用します。

まず、次の方法で apt リポジトリ データを更新します。

 $ sudo apt update

リポジトリ データが更新されたら、次を実行します。

 $ sudo apt install mariadb-server

これにより、MariaDB と必要なパッケージがインストールされます。前のコマンドの実行中にプロンプ​​トが表示される場合は、「Y」で確定します。

 Do you want to continue? [Y/n] Y
Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

CentOS 7.x 上の MariaDB

CentOS 7.x の場合、デフォルトの CentOS リポジトリから利用可能な MariaDB バージョンは 5.x です。 MariaDB の利用可能な最新バージョンをインストールします。

このためには、最初に追加の yum リポジトリを設定する必要があります。 MariaDB は、 mariadb_repo_setup スクリプトを簡単に使用する方法を提供します。リポジトリのセットアップを取得するには、CentOS 7.x システムで次のコマンドを実行します。

 $ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

このスクリプトは、MariaDB の最新バージョンを自動的にインストールするために必要な yum リポジトリをセットアップします。この記事の執筆時点では 10.x です。

または、手動の方法を使用する場合は、次のように新しいリポジトリ ファイルを作成して、手動の yum リポジトリを構成できます。

 $ sudo vi /etc/yum.repos.d/MariaDB.repo

次に、次の詳細をリポジトリ ファイルに追加して保存します。

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

MariaDB をインストールするには、以下のコマンドを実行します。

 $ sudo yum install MariaDB-server

インストール中に表示されるプロンプトに「y」を入力して確認します。

 Is this ok [y/d/N]: y

これで、MariaDB サーバーと依存パッケージのインストールが完了しました。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

CentOS 8.x 上の MariaDB

CentOS 8.x の場合、デフォルト リポジトリから利用可能なバージョンは 10.3 以降です。 DNF コマンドを使用して MariaDB を直接インストールできます。

 sudo dnf install mariadb-server

それ以外の場合は、利用可能な最新バージョンを入手するには、CentOS 7.x について前のセクションで説明した手動の方法に従うことができ、これで問題なく動作するはずです。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

MariaDB の起動

Ubuntu マシンでは、インストール直後に MariaDB サービスが実行されますが、CentOS の場合は、関連するサービスを手動で有効にして開始する必要があります。

いずれの場合も、Ubuntu と CentOS の場合は、以下のコマンドを実行して MariaDB サービスを開始し、起動時に有効にし、それを確認します。

 $ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

出力:

 $ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$
Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

MariaDB の保護

MariaDB のインストール後の最初のステップとして、root パスワードを設定し、リモート root ログインを無効にし、テスト データベースと匿名ユーザーを削除して、最後に権限をリロードすることで、その展開を保護する必要があります。

以下のコマンドを実行して MariaDB を強化します。

 $ sudo mysql_secure_installation

逸脱する特定の要件がない限り、デフォルトのプロンプトに従って推奨アクションを実行できます。

出力:

 $ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

ここではシステムの認証を使用します。MariaDB はすでに安全であるため、別個の root パスワードを設定しません。必要に応じて、いつでも別の root パスワードを設定することもできます。

セットアップの検証

MariaDB の設定を確認するには、次のコマンドを実行します ( mysql_secure_installation の実行中に設定したパスワードを指定するか、その時点でスキップした場合はシステムの root 認証情報を使用します)。

 $ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

以下に示すように、root の代わりに新しい管理者アカウントを設定できます ( password の値を、 admin アカウントに設定する予定の値に変更します)。

 $ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

新しい admin ユーザーによるアクセスを確認します (前の手順で設定した password を入力します)。

 $ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

OSの最適化

MariaDB セットアップをインストールして保護した後、最適なパフォーマンスを得るために OS とデータベースをチューニングするための措置を講じる必要があります。このチューニングは、システム構成、使用タイプ、ユーザー数、その他の多くの要因によって異なります。

OS の観点から見ると、MariaDB 用にいくつかのシステム パラメーターを構成できます。これについてはこれから説明します。

Linux カーネル設定 – IO スケジューラ

MariaDB に推奨される IO スケジューラーは noop deadline です。確認するには cat /sys/block/${DEVICE}/queue/scheduler を使用してください

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

一時的な変更は、次のコマンドを発行することで実行でき、その効果は (ある場合) システム パフォーマンスに即座に反映されます。

 $ sudo echo noop > /sys/block/sda/queue/scheduler

これを永続的にするには、以下に示すように /etc/default/grub にある GRUB の設定ファイルで設定し、GRUB を再構築し、システムを再起動する必要があります。

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

リソース制限 – 開いているファイルの制限

Linux では通常、各プロセスが開くことができるファイル記述子の数が制限されています。アクティブな DB システムの場合、この制限は簡単に超える可能性があり、パフォーマンスに影響を与える可能性があります。多くの Linux システムでは、この制限のデフォルトは 1024 です。さらに、ソフト制限とハード制限のオプションもあります。

制限を増やすには、 /etc/security/limits.conf に次の行を追加します。

 mysql soft nofile 65535
mysql hard nofile 65535

mysql ユーザーが新しい制限を確認して使用できるようにするには、システムの再起動が必要になります。これは次のようにして確認できます。

 $ ulimit -Sn
65535
$ ulimit -Hn
65535

リソース制限 – コアファイルサイズ

前の例で示したように、Linux ではコア ファイルのサイズが制限されます。これにもソフト制限とハード制限があり、デフォルトではソフト制限は 0 に設定されており、事実上コア ファイルの生成が無効になります。コア ファイルの生成 ( コア ダンプの生成に必要な他の構成 ) を許可するには、/etc/security/limits.conf でこの値を次のように増やすことができます。

 mysql soft core unlimited
mysql hard core unlimited

システムの再起動後、 mysql ユーザーは次のように ulimit コマンドを使用して新しい値を確認できます。

 $ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

スワッピーの構成

Linux のスワッピー値は、システムがメモリからシステム上に構成されたスワップ領域にページをスワップする可能性を決定します。通常、デフォルト値は 60 に設定されており、次から確認できます。

 sysctl vm.swappiness

その値の範囲は 0 ~ 100 で、値が低いほどスワップの可能性が低いことを意味します。 MariaDB のみを実行しているデータベース サーバーでは、スワップの使用をできるだけ避けるために、この値を 0 に減らす必要があります。ここで、スワッピー値を 0 に設定する場合は、他のシステム設計要素を考慮して慎重に行う必要があることに注意してください。メモリ使用量や I/O 負荷が高い場合、カーネルによってメモリ不足 (OOM) プロセスが強制終了される可能性があります。

データベースのワークロードや MariaDB データベースには低いスワッピー設定が推奨されるため、スワッピーの値を 1 に設定することをお勧めします。 /etc/sysctl.conf に以下の行を追加して、この変更を永続的にすることができます。

 vm.swappiness = 1

変更はシステムの再起動後に有効になりますが、 sysctl コマンドを使用して事前に実行することもできます。

 sysctl -w vm.swappiness=1

ファイルシステムの最適化

MariaDB の場合、最良の Linux ファイルシステムは一般的に ext4 XFS 、および Btrfs とみなされており、これらはすべてメインライン Linux カーネルに含まれており、広くサポートされています。これらのファイルシステムは、ほとんどの Linux ディストリビューションで利用できます。各ファイルシステムには独自のプロパティと機能があり、適切なレビューの後、要件に基づいて選択できます。

さらに、データベース サーバー上のファイル アクセス時間を記録する必要はほとんどありません。パフォーマンスを向上させるためにこれを無効にすることができます。関連するファイルシステムを noatime オプションでマウントすることも、 /etc/fstab ファイルのマウント オプションに追加して永続化することもできます。

DBの最適化

MariaDB の機能内部には、要件やニーズに基づいてカスタマイズできるいくつかの調整可能項目があります。

ここではそのうちのいくつかについて説明します。

MariaDB は主に my.cnf ファイルによって構成されます。

Ubuntu では、 my.cnf 次の場所にあります。

 /etc/mysql/my.cnf

CentOS では、次の場所にあります。

 /etc/my.cnf

構成ファイル内でチューニングに使用できる変数に関する詳細なドキュメントは、 ここ から参照できます。

また、MariaDB で使用されるエンジンの種類、つまり MyISAM InnoDB or XtraDB にも大きく依存します。どちらにも独自の長所と短所があり、どちらを選択するかはデータベースとアプリケーションの要件によって決まります。

innodb_buffer_pool_size メモリの約 80% に設定する必要があります。これにより、作業セットの 80% がメモリ内に確保されます。

その他の重要な調整可能なパラメータには次のようなものがあります。

 innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

InnoDB または XtraDB 変数のチューニングの詳細については 、ここを 参照してください。 MariaDB で使用可能なすべてのチューニング オプションについては、この ガイド を参照してください。

ご興味がございましたら、これらのリソースを参照して SQL と NoSQL を学習してください。

結論

MariaDB は、リレーション DBMS に関して人気のある選択肢の 1 つです。多様なコミュニティを持つオープンソースであることは、それをさらに強化します。

さらに詳しく学ぶには、基本的な SQL、移行、MariaDB 管理、高可用性、パフォーマンス チューニング、ストレージ エンジン、プログラミング、カスタマイズなどのトピックが含まれる ドキュメント を参照してください。クラスターを使用しない場合は、バイナリ ロギングを無効にすることもできます。

「 Ubuntu および CentOS に MariaDB をインストールして構成する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

外部ディスクにUbuntuをインストールして、基本Windows、たまにUbuntuとして使う
How to install mariadb ubuntu 23.04

オープンソースの人気のある MySQL リレーショナル データベース管理システム (RDBMS) である MariaDB をインストールして構成する方法を学びましょう。

これはコミュニティで開発されており、商用サポートのオプションもあります。 MariaDB は、いくつかの逸脱はありますが、MySQL との高い互換性を維持することを目的としています。

この記事では、Ubuntu 20.x および CentOS 7.x/8.x での MariaDB のインストールと構成について説明し、最後にそのパフォーマンスを保護し向上させるためのいくつかのベスト プラクティスを確認します。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

Ubuntu 上の MariaDB

Ubuntu 20.x では、MariaDB はデフォルトのリポジトリから直接利用できます。このタスクには apt を使用します。

まず、次の方法で apt リポジトリ データを更新します。

 $ sudo apt update

リポジトリ データが更新されたら、次を実行します。

 $ sudo apt install mariadb-server

これにより、MariaDB と必要なパッケージがインストールされます。前のコマンドの実行中にプロンプ​​トが表示される場合は、「Y」で確定します。

 Do you want to continue? [Y/n] Y
Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

CentOS 7.x 上の MariaDB

CentOS 7.x の場合、デフォルトの CentOS リポジトリから利用可能な MariaDB バージョンは 5.x です。 MariaDB の利用可能な最新バージョンをインストールします。

このためには、最初に追加の yum リポジトリを設定する必要があります。 MariaDB は、 mariadb_repo_setup スクリプトを簡単に使用する方法を提供します。リポジトリのセットアップを取得するには、CentOS 7.x システムで次のコマンドを実行します。

 $ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

このスクリプトは、MariaDB の最新バージョンを自動的にインストールするために必要な yum リポジトリをセットアップします。この記事の執筆時点では 10.x です。

または、手動の方法を使用する場合は、次のように新しいリポジトリ ファイルを作成して、手動の yum リポジトリを構成できます。

 $ sudo vi /etc/yum.repos.d/MariaDB.repo

次に、次の詳細をリポジトリ ファイルに追加して保存します。

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

MariaDB をインストールするには、以下のコマンドを実行します。

 $ sudo yum install MariaDB-server

インストール中に表示されるプロンプトに「y」を入力して確認します。

 Is this ok [y/d/N]: y

これで、MariaDB サーバーと依存パッケージのインストールが完了しました。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

CentOS 8.x 上の MariaDB

CentOS 8.x の場合、デフォルト リポジトリから利用可能なバージョンは 10.3 以降です。 DNF コマンドを使用して MariaDB を直接インストールできます。

 sudo dnf install mariadb-server

それ以外の場合は、利用可能な最新バージョンを入手するには、CentOS 7.x について前のセクションで説明した手動の方法に従うことができ、これで問題なく動作するはずです。

Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

MariaDB の起動

Ubuntu マシンでは、インストール直後に MariaDB サービスが実行されますが、CentOS の場合は、関連するサービスを手動で有効にして開始する必要があります。

いずれの場合も、Ubuntu と CentOS の場合は、以下のコマンドを実行して MariaDB サービスを開始し、起動時に有効にし、それを確認します。

 $ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

出力:

 $ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$
Ubuntu および CentOS に MariaDB をインストールして構成する方法
Ubuntu および CentOS に MariaDB をインストールして構成する方法

MariaDB の保護

MariaDB のインストール後の最初のステップとして、root パスワードを設定し、リモート root ログインを無効にし、テスト データベースと匿名ユーザーを削除して、最後に権限をリロードすることで、その展開を保護する必要があります。

以下のコマンドを実行して MariaDB を強化します。

 $ sudo mysql_secure_installation

逸脱する特定の要件がない限り、デフォルトのプロンプトに従って推奨アクションを実行できます。

出力:

 $ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

ここではシステムの認証を使用します。MariaDB はすでに安全であるため、別個の root パスワードを設定しません。必要に応じて、いつでも別の root パスワードを設定することもできます。

セットアップの検証

MariaDB の設定を確認するには、次のコマンドを実行します ( mysql_secure_installation の実行中に設定したパスワードを指定するか、その時点でスキップした場合はシステムの root 認証情報を使用します)。

 $ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

以下に示すように、root の代わりに新しい管理者アカウントを設定できます ( password の値を、 admin アカウントに設定する予定の値に変更します)。

 $ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

新しい admin ユーザーによるアクセスを確認します (前の手順で設定した password を入力します)。

 $ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

OSの最適化

MariaDB セットアップをインストールして保護した後、最適なパフォーマンスを得るために OS とデータベースをチューニングするための措置を講じる必要があります。このチューニングは、システム構成、使用タイプ、ユーザー数、その他の多くの要因によって異なります。

OS の観点から見ると、MariaDB 用にいくつかのシステム パラメーターを構成できます。これについてはこれから説明します。

Linux カーネル設定 – IO スケジューラ

MariaDB に推奨される IO スケジューラーは noop deadline です。確認するには cat /sys/block/${DEVICE}/queue/scheduler を使用してください

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

一時的な変更は、次のコマンドを発行することで実行でき、その効果は (ある場合) システム パフォーマンスに即座に反映されます。

 $ sudo echo noop > /sys/block/sda/queue/scheduler

これを永続的にするには、以下に示すように /etc/default/grub にある GRUB の設定ファイルで設定し、GRUB を再構築し、システムを再起動する必要があります。

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

リソース制限 – 開いているファイルの制限

Linux では通常、各プロセスが開くことができるファイル記述子の数が制限されています。アクティブな DB システムの場合、この制限は簡単に超える可能性があり、パフォーマンスに影響を与える可能性があります。多くの Linux システムでは、この制限のデフォルトは 1024 です。さらに、ソフト制限とハード制限のオプションもあります。

制限を増やすには、 /etc/security/limits.conf に次の行を追加します。

 mysql soft nofile 65535
mysql hard nofile 65535

mysql ユーザーが新しい制限を確認して使用できるようにするには、システムの再起動が必要になります。これは次のようにして確認できます。

 $ ulimit -Sn
65535
$ ulimit -Hn
65535

リソース制限 – コアファイルサイズ

前の例で示したように、Linux ではコア ファイルのサイズが制限されます。これにもソフト制限とハード制限があり、デフォルトではソフト制限は 0 に設定されており、事実上コア ファイルの生成が無効になります。コア ファイルの生成 ( コア ダンプの生成に必要な他の構成 ) を許可するには、/etc/security/limits.conf でこの値を次のように増やすことができます。

 mysql soft core unlimited
mysql hard core unlimited

システムの再起動後、 mysql ユーザーは次のように ulimit コマンドを使用して新しい値を確認できます。

 $ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

スワッピーの構成

Linux のスワッピー値は、システムがメモリからシステム上に構成されたスワップ領域にページをスワップする可能性を決定します。通常、デフォルト値は 60 に設定されており、次から確認できます。

 sysctl vm.swappiness

その値の範囲は 0 ~ 100 で、値が低いほどスワップの可能性が低いことを意味します。 MariaDB のみを実行しているデータベース サーバーでは、スワップの使用をできるだけ避けるために、この値を 0 に減らす必要があります。ここで、スワッピー値を 0 に設定する場合は、他のシステム設計要素を考慮して慎重に行う必要があることに注意してください。メモリ使用量や I/O 負荷が高い場合、カーネルによってメモリ不足 (OOM) プロセスが強制終了される可能性があります。

データベースのワークロードや MariaDB データベースには低いスワッピー設定が推奨されるため、スワッピーの値を 1 に設定することをお勧めします。 /etc/sysctl.conf に以下の行を追加して、この変更を永続的にすることができます。

 vm.swappiness = 1

変更はシステムの再起動後に有効になりますが、 sysctl コマンドを使用して事前に実行することもできます。

 sysctl -w vm.swappiness=1

ファイルシステムの最適化

MariaDB の場合、最良の Linux ファイルシステムは一般的に ext4 XFS 、および Btrfs とみなされており、これらはすべてメインライン Linux カーネルに含まれており、広くサポートされています。これらのファイルシステムは、ほとんどの Linux ディストリビューションで利用できます。各ファイルシステムには独自のプロパティと機能があり、適切なレビューの後、要件に基づいて選択できます。

さらに、データベース サーバー上のファイル アクセス時間を記録する必要はほとんどありません。パフォーマンスを向上させるためにこれを無効にすることができます。関連するファイルシステムを noatime オプションでマウントすることも、 /etc/fstab ファイルのマウント オプションに追加して永続化することもできます。

DBの最適化

MariaDB の機能内部には、要件やニーズに基づいてカスタマイズできるいくつかの調整可能項目があります。

ここではそのうちのいくつかについて説明します。

MariaDB は主に my.cnf ファイルによって構成されます。

Ubuntu では、 my.cnf 次の場所にあります。

 /etc/mysql/my.cnf

CentOS では、次の場所にあります。

 /etc/my.cnf

構成ファイル内でチューニングに使用できる変数に関する詳細なドキュメントは、 ここ から参照できます。

また、MariaDB で使用されるエンジンの種類、つまり MyISAM InnoDB or XtraDB にも大きく依存します。どちらにも独自の長所と短所があり、どちらを選択するかはデータベースとアプリケーションの要件によって決まります。

innodb_buffer_pool_size メモリの約 80% に設定する必要があります。これにより、作業セットの 80% がメモリ内に確保されます。

その他の重要な調整可能なパラメータには次のようなものがあります。

 innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

InnoDB または XtraDB 変数のチューニングの詳細については 、ここを 参照してください。 MariaDB で使用可能なすべてのチューニング オプションについては、この ガイド を参照してください。

ご興味がございましたら、これらのリソースを参照して SQL と NoSQL を学習してください。

結論

MariaDB は、リレーション DBMS に関して人気のある選択肢の 1 つです。多様なコミュニティを持つオープンソースであることは、それをさらに強化します。

さらに詳しく学ぶには、基本的な SQL、移行、MariaDB 管理、高可用性、パフォーマンス チューニング、ストレージ エンジン、プログラミング、カスタマイズなどのトピックが含まれる ドキュメント を参照してください。クラスターを使用しない場合は、バイナリ ロギングを無効にすることもできます。

「 Ubuntu および CentOS に MariaDB をインストールして構成する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

外部ディスクにUbuntuをインストールして、基本Windows、たまにUbuntuとして使う
How to install mariadb ubuntu 23.04