sql >> データベース >  >> RDS >> MariaDB

MariaDBデータベースサーバーのインストール、セキュリティ保護、パフォーマンスチューニングの方法

    データベースサーバーは、今日のアプリケーションに必要なネットワークインフラストラクチャの重要なコンポーネントです。 (必要に応じて)データを保存、取得、更新、削除する機能がないと、Webアプリとデスクトップアプリの有用性と範囲は非常に制限されます。

    さらに、データベースサーバーをインストール、管理、および構成する方法を(期待どおりに動作するように)知ることは、すべてのシステム管理者が持つ必要のある重要なスキルです。

    この記事では、MariaDBデータベースサーバーをインストールして保護する方法を簡単に確認してから、その構成方法について説明します。

    MariaDBサーバーのインストールと保護

    CentOS 7.x 、MariaDBはMySQLに取って代わりました。MySQLはまだ Ubuntuにあります (MariaDBと一緒に)。同じことがopenSUSEにも当てはまります 。

    簡潔にするために、 MariaDBのみを使用します このチュートリアルでは、名前と開発哲学が異なることに加えて、リレーショナルデータベース管理システムの両方に注意してください。 (RDBMS 略して)ほぼ同じです。

    これは、クライアント側のコマンドが両方の MySQLで同じであることを意味します およびMariaDB 、および構成ファイルは同じ場所に名前が付けられ、配置されています。

    MariaDBをインストールするには、次のようにします。

    --------------- 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では注意してください 、RDBMSrootユーザーのパスワードを入力するように求められます。

    上記のパッケージをインストールしたら、データベースサービスが実行され、起動時に起動するようにアクティブ化されていることを確認します( CentOS ) およびopenSUSE この操作は手動で実行する必要がありますが、 Ubuntu では インストールプロセスはすでにそれを処理しているでしょう):

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

    次に、mysql_secure_installationを実行します 脚本。このプロセスにより、次のことが可能になります。

    1. RDBMSルートユーザーのパスワードを設定/リセットします
    2. 匿名ログインを削除します(したがって、有効なアカウントを持つユーザーのみがRDBMSにログインできるようにします)
    3. ローカルホスト以外のマシンのルートアクセスを無効にする
    4. テストデータベース(誰でもアクセスできます)を削除します
    5. 1から4に関連する変更をアクティブにします。

    このプロセスの詳細については、RHEL / CentOS/FedoraおよびDebian/UbuntuへのMariaDBデータベースのインストールのインストール後のセクションを参照してください。

    MariaDBサーバーの構成

    デフォルトの構成オプションは、次のファイルから指定された順序で読み取られます:/etc/mysql/my.cnf/etc/my.cnf 、および~/.my.cnf

    ほとんどの場合、/etc/my.cnfのみ 存在します。サーバー全体の設定を設定するのはこのファイルです(~/.my.cnfの同じ設定で上書きできます) ユーザーごとに)。

    my.cnfについて最初に注意する必要があること 設定はカテゴリ(またはグループ)に編成され、各カテゴリ名は角かっこで囲まれています。

    サーバーシステムの構成は、[mysqld]に記載されています。 セクション。通常、以下の表の最初の2つの設定のみが表示されます。残りは他の頻繁に使用されるオプションです(示されている場合は、選択したカスタム値でデフォルト値を変更します):

    設定と説明 デフォルト値
    datadir データファイルが保存されているディレクトリです。 datadir =/ var / lib / mysql
    socketは、ローカルクライアント接続に使用されるソケットファイルの名前と場所を示します。ソケットファイルは、アプリケーション間で情報を渡すために使用されるリソースであることに注意してください。 socket =/var/lib/mysql/mysql.sock
    bind_addressは、データベースサーバーがTCP/IP接続をリッスンするアドレスです。サーバーが複数のIPアドレスをリッスンする必要がある場合は、この設定を省略します(0.0.0.0は、この特定のホストに割り当てられたすべてのIPアドレスをリッスンすることを意味します)。

    これを変更して、メインアドレス(192.168.0.13)でのみリッスンするようにサービスに指示します:

    bind_address =192.168.0.13

    bind_address =0.0.0.0
    portは、データベースサーバーがリッスンするポートを表します。

    デフォルト値(3306)を20500に置き換えます(ただし、他にそのポートを使用していないことを確認する必要があります):
    port =20500

    隠すことによるセキュリティは適切ではないと主張する人もいますが、デフォルトのアプリケーションポートをより高いものに変更することは、ポートスキャンを阻止するための基本的な方法ですが効果的です。

    port =3306
    innodb_buffer_pool_sizeは、Innodb(MariaDBのデフォルト)を使用するときに頻繁にアクセスされるデータとインデックスに割り当てられるメモリのバッファープール(バイト単位)です。またはストレージエンジンとしてのXtraDB。

    デフォルト値を256MBに置き換えます:

    innodb_buffer_pool_size =256M

    innodb_buffer_pool_size =134217728
    skip_name_resolveは、着信接続でホスト名が解決されるかどうかを示します。 1に設定すると、このガイドで行うように、IPアドレスのみになります。

    アクセス許可を決定するためにホスト名が必要な場合を除いて、値を1に設定して(接続とクエリを高速化するために)この変数を無効にすることをお勧めします。

    skip_name_resolve =1

    skip_name_resolve =0
    query_cache_sizeは、ディスク内のクエリキャッシュで使用可能なサイズ(バイト単位)を表します。SELECTクエリの結果は、同じクエリ(同じデータベースで、同じプロトコルと同じ文字セットを使用して実行されます。

    1)繰り返しクエリの数、および2)それらの繰り返しクエリが返すと予想されるレコードのおおよその数に基づいて、ニーズに一致するクエリキャッシュサイズを選択する必要があります。当面、この値を100MBに設定します。

    query_cache_size =100M

    query_cache_size =0(これはデフォルトで無効になっていることを意味します)
    max_connectionsは、サーバーへの同時クライアント接続の最大数です。この値を30に設定します。
    max_connections=30各接続はスレッドを使用するため、メモリを消費します。 max_connectionsを設定するときは、この事実を考慮に入れてください。
    max_connections =151
    thread_cache_sizeは、クライアントが以前に使用していたスレッドを切断して解放した後、サーバーが再利用のために割り当てるスレッドの数を示します。この状況では、新しいスレッドをインスタンス化するよりも、スレッドを再利用する方が(パフォーマンス的に)安価です。

    繰り返しますが、これはあなたが期待している接続の数に依存します。この値をmax_connectionsの半分の数に安全に設定できます:

    thread_cache_size =15

    thread_cache_size =0(デフォルトでは無効)

    CentOS SELinuxに通知する必要があります MariaDBを許可する 非標準ポート( 20500 )でリッスンする )サービスを再開する前に:

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

    次に、MariaDBサービスを再起動します。

    MariaDBパフォーマンスの調整

    特定のニーズに応じて構成を確認および調整するために、 mysqltunerをインストールできます。 (データベースサーバーのパフォーマンスを改善し、その安定性を高めるための提案を提供するスクリプト):

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

    次に、ディレクトリをtarballから抽出したフォルダに変更します(正確なバージョンは場合によって異なる場合があります):

    # cd major-MySQLTuner-perl-7dabf27
    

    実行します(管理用MariaDBアカウントのクレデンシャルを入力するように求められます)

    # ./mysqltuner.pl
    

    スクリプトの出力自体は非常に興味深いものですが、調整する変数が推奨値とともにリストされている下部にスキップしましょう。

    query_cache_type 設定は、クエリキャッシュが無効になっているかどうかを示します(0) または有効(1) 。この場合、 mysqltuner 無効にするようにアドバイスしています。

    では、なぜ今それを非アクティブ化するようにアドバイスされているのでしょうか?その理由は、クエリキャッシュは、主に高読み取り/低書き込みのシナリオで役立つためです(データベースサーバーをインストールしたばかりなので、これは私たちの場合ではありません)。

    警告 :本番サーバーの構成を変更する前に、専門のデータベース管理者に相談して、mysqltunerによる推奨事項が既存の設定に悪影響を及ぼさないようにすることを強くお勧めします。

    概要

    この記事では、MariaDBデータベースサーバーをインストールして保護した後に構成する方法について説明しました。上記の表にリストされている構成変数は、サーバーを使用する準備をするとき、または後でサーバーを調整するときに考慮することができるいくつかの設定にすぎません。変更を加える前に、必ず公式のMariaDBドキュメントを参照するか、MariaDBパフォーマンスチューニングのヒントを参照してください。

    Don ' tミス: 15の便利なMariaDBパフォーマンスチューニングと最適化のヒント

    いつものように、この記事について質問やコメントがあれば、遠慮なくお知らせください。他に使用したいサーバー設定はありますか?以下のコメントフォームを使用して、コミュニティの他のメンバーと自由に共有してください。

    Linux認定システム管理者になる
    1. 以前のnull以外の値を効率的に選択するにはどうすればよいですか?

    2. 親と無限の子を返すステートメントを選択します

    3. SQLite-データベースを削除する

    4. PostgreSQLの「INSERTにはターゲット列よりも多くの式があります」を修正しました