Linux
 Computer >> コンピューター >  >> システム >> Linux

MariaDB:インストールとパフォーマンスの最適化

この記事では、Linux CentOS 7でのデータベースサーバーMariaDBのインストール、基本構成、およびパフォーマンスの最適化について検討します。記事の最後に、MariaDB構成ファイルの例をいくつか示し、最適なものを選択できるようにします。データベースサーバーのパラメーター。

MariaDB:インストールとパフォーマンスの最適化

CentOSにMariaDBをインストールする

最近、MariaDBが標準のCentOS 7ベースリポジトリに追加されましたが、リポジトリ内のバージョンは5.5です。このバージョンは最新ではなく、パフォーマンスの問題があり、InnoDBで全文検索を提供していません。現在のバージョンのMariaDBをインストールするには、最初にmariadb.org開発者リポジトリを追加する必要があります。

nanoをインストールします yumを使用するエディター:

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

mariadb.repo構成ファイルを保存し、MariaDBサーバーとクライアントをインストールします。

yum --disablerepo =AppStream install MariaDB-server MariaDB-client -y

インストールが完了しました。次に、mariadbサービスをスタートアップに追加する必要があります:

systemctl start mariadb
systemctl enable mariadb

サービスステータスを確認します:

systemctl status mariadb

MariaDB:インストールとパフォーマンスの最適化

mariadbサービスはアクティブで実行されているため、構成を続行できます。

MariaDBサーバーの保護

MariaDBサーバーをインストールして実行したら、セキュリティ設定に進むことができます。組み込みのスクリプトを実行します:

/usr / bin / mysql_secure_installation

まず、rootパスワードの入力を求めるプロンプトが表示されるので(mariadbの初期インストール後、パスワードは設定されていません)、Enterキーを押して、次のステップで複雑なパスワードを設定します。次に、シナリオの実行が終了するまでEnterキーを押すだけです。匿名ユーザー、リモートルートログインおよびテストテーブルが削除され、特権が更新されます。

mariadbサーバーにリモート接続するには、iptablesを使用してLinuxファイアウォールのルールを作成する必要があります。

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

オプションで、リモートMariaDBデータベースへのアウトバウンド接続を許可できます。

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

MariaDB接続テスト

MariaDBが正常にインストールされていることを確認する必要があります。

組み込みのmysqladminツールを使用してDBサーバーに接続しましょう:

mysqladminバージョン

コマンドは次を返します:

mysqladmin Ver 9.1 Distrib 10.4.7-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.4.7-MariaDB
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 59 min 35 sec
Threads: 10 Questions: 24 Slow queries: 0 Opens: 28 Flush tables: 1 Open tab

これは、MariaDBが正常にインストールされ、データベースが稼働していることを意味します。

mariadbサーバーコンソールに接続して、SQLコマンドをインタラクティブに実行できます。

mysql -u root -p

MariaDB構成ファイル– my.cnf

通常、MariaDBをインストールした後、標準構成を構成ファイル /etc/my.cnfに追加します。 これはほとんどのサーバーで機能し、これまでのところ問題は発生していません。 my.cnfをクリアし、それに次のテキストを追加します:

[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 parameters
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
# Parameters for temporary tables
tmpdir = /tmp
max_heap_table_size = 32M
tmp_table_size = 32M
# InnoDB parameters
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
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

my.cnfのメインパラメータについて詳しく見ていきましょう:

  • datadir DBファイルが保存されているディレクトリです。
  • tmpdir 一時ファイルを保存するディレクトリです。
  • スキップ-名前-解決 DNS名の解決を無効にします;
  • max_allowed_pa​​cket 許可される最大パッケージサイズです。 DBがblobフィールドを使用している場合、その値は最大のフィールドのサイズより小さくすることはできません。
  • max_connections 開いている接続の最大数です。このパラメーターは、mariadbサーバーで同時に動作できるクライアントの数を設定します。
  • #キャッシュパラメータ セクションには、クエリキャッシュに関連するすべてのものが含まれます。 DBサーバーはより多くのリソースを消費するため、高すぎる値を設定することはお勧めしません。
  • #InnoDBパラメーター セクションには、innodbテーブルに関連するすべてのものが含まれています。
  • innodb_buffer_pool_size データとインデックスのキャッシュバッファです。サーバーに1〜2個のプロジェクトがある場合は、値を使用可能なRAMの70〜80%に設定します。
  • innodb_flush_method Linuxの場合は値O_DIRECTを設定すると、OSレベルのキャッシュが無効になります。
  • innodb_flush_log_at_trx_commit このパラメーターは、innoDBテーブルの書き込み速度に影響します。このパラメーターを真剣に受け止めてください。ここで0を設定すると、パフォーマンスは向上しますが、データ損失のリスクが高まります。セキュリティが優先されますが、DBサーバーのパフォーマンスが明らかに向上することはないため、ここでは値2を設定することをお勧めします。

MariaDBのパフォーマンスの最適化と調整

構成ファイルをコピーする必要がないことを付け加えたいと思います。すべてのサーバーとすべてのプロジェクトには独自のパラメーターが必要です。 MariaDBの構成を自動的にチェックし、サーバーの最適化に関する推奨事項を提供するスクリプトを使用することをお勧めします。

mariadbパラメーターを最適化するには、Tuning-Primer.shスクリプトを使用できます。 。まず、追加のツールをインストールします:

yum install bc net-tools -y

最適化スクリプトをダウンロードします:

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

実行権限を.shファイルに割り当てます:

chmod + x Tuning-primer.sh

スクリプトを実行します:

。/tuning-primer.sh

実行後、スクリプトはあなたが知る必要のある有用な情報を表示します。最も重要なものは赤で強調表示されます。これらは修正が推奨されるものです。

たとえば、スクリプトは、接続数が私が設定した数よりはるかに少ないことを示しました。

MariaDB:インストールとパフォーマンスの最適化

このパラメータは、my.cnfファイルとコンソールの両方で変更できます。より低い値(10)を設定し、スクリプトがそれを承認しました:

MariaDB:インストールとパフォーマンスの最適化

これらのチェックを使用すると、mariadbサーバーのパフォーマンスを完璧にすることができます。

推奨されるDBサーバーの連続稼働時間は少なくとも48時間であることに注意してください。そうすれば、情報がより正確になり、サーバーを調整できるようになります。

遅いクエリログをアクティブにするセクションを追加できます。プロジェクトのパフォーマンスを分析するのに役立ちます。 mysqldに以下を追加します セクション:

slow_query_log =1#遅いクエリのログを有効にする
long_query_time =5#時間を秒単位で設定します
slow_query_log_file =/var/log/slow-query.log#遅いクエリログの名前ファイルとそのファイルへのパス
log_queries_not_using_indexes#インデックスを使用しないクエリをログファイルに書き込むかどうか

また、MariaDBのログファイルと遅いクエリログエラーを作成する必要があります:

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

dbサービスを再起動します:

systemctl restart mariadb

/var/log/slow-query.logを開くか、リアルタイムで確認すると、低速クエリログを表示できます:

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

したがって、プロジェクトがDBに送信するクエリを分析し、監査を行うことができます。

DB設定を変更する場合は、構成にエラーがないか確認してください。 my.cnf設定に変更を加えた後、構成にエラーがないか確認する必要があります。

systemctl status mariadb -l <​​/ code>

基本的なMariaDBシェルコマンド

管理者がmariadbコンソールで頻繁に使用する必要のある主なCLIコマンドを以下に示します。

MariaDBコンソールにローカルでログオンするには、次のコマンドを実行します。

mysql -u root -p

MariaDBサーバーにリモート接続するには:

mysql -u root -p -h 192.168.1.20

便利なMariaDB(MySQL)コマンド:

データベースdb1を作成します。 —db1という名前のDBを作成します

データベースを表示; —サーバー上のDBのリストを表示します

use db1; — db1

という名前のDBにログオンします。

テーブルを表示; —現在のデータベース内のすべてのテーブルを一覧表示します

create user'project' @'localhost'identified by'$ sup#erP @ ss1'; —ユーザー(プロジェクト)を作成し、そのパスワードを$ sup#erP @ ss1

に設定します

database_name。*のすべての権限をproject@'localhost';に付与します —ユーザープロジェクトに完全な権限を付与します

フラッシュ権限; —すべての特権を更新します

show processlist; —アクティブなDB接続を表示します。次のコマンドを使用することもできます:

show status where `variable_name` ='Threads_connected';

mysqlコンソールでは、次のようないくつかの変数を表示または変更できます。

SHOW VARIABLES LIKE'max_error_count';

MariaDB:インストールとパフォーマンスの最適化

変更するには:

SET max_error_count =256;

MariaDB:インストールとパフォーマンスの最適化

結論として、DBサーバーを構成するときは、プロジェクトがサーバー上にあることを考慮する必要があります。マイナーなプロジェクトに適用できるものは、大規模なプロジェクトには絶対に適していません。試して、実験して、常にログを表示してください。次の記事では、MariaDBデータベースサーバー間のレプリケーションを使用して高可用性を提供し、アプリのパフォーマンスを向上させる方法を示します。


  1. メルトダウンとスペクター - パフォーマンスと安定性

    数日前、Microsoft が互換性のない特定のウイルス対策プログラムを当分の間ブラックリストに登録することを決定したため、ウイルス対策ソフトウェアがインストールされていなくても、2018 年 1 月の Windows 用の Meltdown パッチをインストールする方法を紹介しましたが、これはアンチウイルスを持っていない人にも影響することを説明する必要はありません.羊のメンタリティからのこのような急進的な逸脱は前代未聞だと思います. パッチがインストールされて実行されるようになったので (私はこれを 6 つのシステムでテストしました)、Microsoft が言ったことを実際に何もチェックせ

  2. Windows 11 を高速化し、パフォーマンスを改善する (7 つの効果的なヒント)

    Microsoft は待望の Windows 11 オペレーティング システムをリリースしました。これにより、まったく新しい設計が実現し、いくつかの機能が改善されました。以前の Windows 10 に比べて高速で、完全に最適化されています。それでも、一部のユーザーは、Windows 11 ではコンピューターの速度が低下すると報告しています。繰り返しになりますが、古いハードウェアまたは能力の低いハードウェアを使用しているユーザーは、Windows 11 のパフォーマンスが低下したり遅れたりすることがあります。 Windows 11 ラップトップを高速化したい場合は、Windows 11 を高速