GNU/Linux >> Linux の 問題 >  >> Linux

UbuntuオペレーティングシステムでMySQLサーバーを構成する

この記事では、Ubuntu®オペレーティングシステムでの基本的なMySQL®サーバーのセットアップについて説明しました。ルートパスワードの設定方法、データベースの作成方法、およびデータベースのユーザーの追加方法について説明しました。このアーティクルは、MySQLの構成をもう少し詳しく調べて、構成を調整し、問題が発生した場合に備えて準備できるようにします。

構成ファイルを検索する

デフォルトでは、MySQL®構成ファイルは次の場所にあります。

/etc/mysql

ただし、それらが存在しない場合は、mysqldを使用できます。 構成を検索します。次のコマンドを実行します:

$ /usr/sbin/mysqld --help --verbose

長い応答の最初の部分では、サーバーを起動したときにサーバーに送信できるオプションについて説明します。 2番目の部分は、サーバーのコンパイル中に設定された構成を表示します。

出力の先頭近くで、次の例のように見える2行を見つけます。

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

サーバーは、構成ファイルが見つかるまでそのリストを調べます。

my.cnf構成ファイル

/etc/mysql/my.cnfを開いて確認します ファイル。

で始まるコメント行 、さまざまな設定の使用を文書化します。ログファイル、データベースファイル、およびその他の詳細の場所に関する詳細が表示されます。

構成グループ

構成ファイルには、 [client] のように、角かっこで囲まれた1つの単語を含む行が含まれています または[mysqld] これらのセクションは構成グループです。これらは、重要な構成要素を、構成ファイルを読み取るプログラムからより見やすくします。

サーバー構成セクションは、技術的にはツールのコレクションです。これにはサーバーが含まれます(mysqld )、クライアント(mysql )、およびその他のツール。これらのプログラムはmy.cnfにあります 彼らがどのように振る舞うべきかを見るために。

クライアント構成セクションは、mysqlを制御します クライアント、およびmysqld セクションはサーバー構成を制御します。

ログファイル

ログファイルは、プログラムのトラブルシューティングを開始するのに最適な場所です。デフォルトでは、MySQLはログファイルを次のディレクトリに保存します:

/var/log/mysql

sudoを使用する必要がある場合があります そのディレクトリ内のファイルのリストを取得します。

デフォルトのディレクトリにMySQL®ログが見つからない場合は、MySQLの構成を確認してください。 my.cnfを表示する ファイルを作成し、log_errorを探します 次のような行:

log_error = /var/log/mysql/error.log

そのような行が表示されない場合は、 mysqldで作成してください MySQL®が独自のエラーログを使用できるようにするためのセクション。例の場所を使用して、 / var / log / mysqlを作成します まだ存在しない場合はディレクトリ。次に、MySQLを再起動して変更を加えます。

mysqlを制御して、ユーザーが選択したログディレクトリに書き込めることを確認します。 処理する。プロセスを実行するユーザーは、ユーザー構成で定義されます my.cnfのmysqldの値 。

ネットワーク設定

クライアントの両方の下に「ポート」設定がある場合があります およびサーバー 構成セクション。 サーバーの下のポート セクションは、サーバーがリッスンするポートを制御します。デフォルトのポートは3306です ただし、変更することはできます。

クライアントのポート セクションは、デフォルトで接続するポートをクライアントに指示します。通常、両方のポート設定を一致させる必要があります。

デフォルト設定を使用している場合、構成ファイルにポートエントリは表示されません。ポートを変更する場合は、適切なカテゴリに次の行を追加します。

[client]
port = 3306

[mysqld]
port = 3306

探すべき他のネットワーク設定はbind-addressです 価値。これは通常、ローカルホストのアドレス 127.0.0.1に設定されます。 。サーバーはローカルホストにバインドすることで、ローカルコンピューターの外部からローカルホストに接続できないようにします。

アプリケーションとは別のコンピューターでMySQLサーバーを実行している場合は、ローカルホストではなく、リモートでアクセス可能なアドレスにバインドする必要があります。パブリックIPアドレスと一致するようにbind-address設定を変更します。セキュリティ上の理由から、ネットワークではバックエンドIPアドレスを使用する必要があります。

バインドアドレスが表示されない場合 エントリの場合は、1つを mysqldに入れる必要があります サーバーへのアクセスを制御するのに役立つカテゴリ:

[mysqld]
$ bind-address = 127.0.0.1

データベースユーザーを設定するときはクライアントのホスト名を考慮し、iptablesを実行する場合はファイアウォールアクセスを提供することを忘れないでください 。

mysqldおよびmysqld_safe

舞台裏では、MySQLサーバーにはmysqldという2つのバージョンがあります。 およびmysqld_safe 。どちらも同じ構成セクションを読み取ります。ただし、mysqld_safe トラブルシューティングからの回復を容易にするために、より多くの安全機能を有効にして起動します。

両方のmysqld およびmysqld_safe mysqldの構成エントリを読み取ります セクション。 mysqld_safeを含める場合 セクション、次に mysqld_safe のみ それらの値を使用します。

デフォルトでは、MySQLサービスはmysqld_safeを起動します 、これは適切です。

mysqladmin

mysqladmin ツールを使用すると、この記事では取り上げていないコマンドラインからいくつかの管理機能を実行できます。特に、サーバーのステータスの確認やデータベースの作成と削除などの機能を実行するスクリプトを作成する必要がある場合は、後でツールをさらに詳しく調べて、ツールで何ができるかを確認できます。

バックアップ

通常のコンピュータ全体のバックアップとは別に、データベースをバックアップするには次のオプションがあります。 主な2つのオプションは、データベースファイルをコピーするか、mysqldumpを使用することです。 。

ファイルのコピー

デフォルトでは、MySQLはデータディレクトリ / var / lib / mysqlにデータベースごとにディレクトリを作成します 。

データディレクトリを見つけたら、しばらく待ってからコピーを作成してください。データベースサーバーがアクティブになると、新しい値がテーブルに書き込まれます。バックアップが破損する可能性を回避するために、このプロセスを中断しないでください。

データベースファイルをクリーンにコピーするには、コピーする前にMySQLサーバーを完全にシャットダウンする必要があります。

データベースを読み取り専用としてロックできます コピーの期間中。終了したら、ロックを解除します。そうすれば、ファイルをバックアップしている間も、アプリケーションはデータを読み取ることができます。

データベースを読み取り専用にロックします コマンドラインから次のコマンドを実行する:

$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"

完了したら、次のコマンドを実行してデータベースのロックを解除します。

$  mysql -u root -p -e "UNLOCK TABLES;"

MySQLクライアントオプション、-e 、MySQL®シェルに入力したかのようにクエリを引用符で囲んで実行するようにクライアントに指示します。

これらのコマンドをスクリプトで記述している場合は、-pの直後にパスワードを引用符で囲むことができます。 次の例のように、2つの間にスペースはありません:

$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"

パスワードのセキュリティ上の理由から、読み取りアクセスを制限するために、そのファイルにアクセス許可を設定してください。

mysqldump

データベースをバックアップする別のアプローチは、mysqldumpを使用することです。 道具。データベースファイルを直接コピーするのではなく、mysqldump データベースを表すテキストファイルを生成します。デフォルトでは、テキストファイルにはデータベースを再作成するためのSQLステートメントのリストが含まれていますが、 .CSVなどの別の形式でデータベースをエクスポートすることもできます。 または.XMLmysqldumpのマニュアルページを読むことができます すべてのオプションを表示します。

mysqldumpによって生成されたステートメント 標準出力に直接移動します。コマンドラインで次のコマンドを実行することにより、出力をリダイレクトするように指定できます。

$ mysqldump -u root -p demodb > dbbackup.sql

このコマンドは、mysqldumpに通知します demodbを再作成します SQLステートメントのデータベースとそれらをファイルに書き込むdbbackup.sql 。ユーザー名とパスワードのオプションはMySQLクライアントと同じように機能するため、-pの直後にパスワードを含めることができます。 スクリプトで。

mysqldumpから復元

mysqldumpの復元 データベースはダンプの作成方法と似ていますが、mysqlを使用します mysqldumpの代わりに 、次の復元コマンドに示すように:

$ mysql -u root -p demodb < dbbackup.sql

また、<にも注意してください 山かっこは方向を変えます。これにより、コマンドが出力のリダイレクトから既存のファイルからの入力の抽出に切り替わります。その入力はmysqlに送信されます コマンドを実行して、データベースを再作成するように指示します。

デフォルトでは、生成されたSQLステートメントは既存のデータベーステーブルに追加され、それらを上書きしません。既存のデータベースにバックアップを復元する場合は、最初にデータベーステーブルを削除するか、データベース自体を削除して再作成する必要があります。 $ --add-drop-tableを使用して、その動作を変更できます。 mysqldumpを作成するコマンドのオプション 。これにより、mysqldumpが発生します 書き込むバックアップファイルにコマンドを追加して、テーブルを再作成する前にテーブルを削除します。

データベースエンジン

データベースエンジン は、舞台裏で機能し、ファイルへのデータの書き込みとファイルからのデータの読み取りを行うプロセスです。特定のデータベースエンジン用に最適化されたアプリケーションを実行する場合にのみ、これについて知る必要があります。

テーブルを必要とするアプリケーションは、テーブルをオンデマンドで作成し、エンジンタイプを自動的に作成します。データベースのテーブルが使用するエンジンを確認するには、MySQLシェルで次のコマンドを実行し、 demodbを変更します。 データベースの名前に。:

$ SHOW TABLE STATUS FROM demodb;
エンジンを選択してください

理想的には、エンジンを選択する必要はありません。 MySQLにあまり詳しくない場合は、アプリケーションがデフォルトでMySQLを選択できるようにします。アプリケーションを作成している場合は、オプションに慣れるまでデフォルトのエンジンを使用してください。

データベース管理者(DBA)の指示がある場合は、それに従ってください。

MySQLで最も頻繁に使用される2つのデータベースエンジンはMyISAMです。 およびInnoDB 。 MySQLバージョン5.1以前のデフォルトのデータベースエンジンはMyISAMです。 、InnoDB MySQLバージョン5.5以降のデフォルトのデータベースエンジンです。

MyISAM

MyISAM しばらくの間、MySQLのデフォルトでしたが、2つのメインエンジンの中で最も互換性のある選択肢です。特定のタイプの検索は、MyISAMでより優れたパフォーマンスを発揮します。 InnoDBより 。 2つのうち古い方ですが、特定のアプリケーションタイプに最適な選択肢である可能性があります。

InnoDB

注: DBAは、最高のInnoDBを実現するのに役立ちます InnoDBによるパフォーマンス 環境とアクセスパターンに多くの調整が必要です。デフォルトの構成は、日常のソフトウェア開発での使用に最適です。

InnoDB MyISAMよりもフォールトトレラントです クラッシュとリカバリを処理し、データベースの破損のリスクを大幅に軽減します。

アプリケーションにInnoDBが必要で、MySQL 5.1以前を使用している場合は、 my.cnfにまだ設定がない可能性があります。 構成ファイル。これは、メモリをあまり消費しないサーバーで実行している場合に問題になる可能性があります。

次の設定により、256メガバイトのRAMを搭載した共有サーバーでInnoDBを使い始めることができます。

innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table

それらを[mysqld]に追加します 構成ファイルのセクション。繰り返しますが、これらは大まかなガイドにすぎません。彼らはあなたを始めることができますが、彼らは最適化されていません。パフォーマンスを向上させるために、時間の経過とともに段階的に変更するDBAまたは実験に相談してください。

関連記事
  • UbuntuオペレーティングシステムにMySQL®サーバーをインストールします
  • MySQL®rootパスワードをリセットします

Linux
  1. ApacheWebサーバーを構成する方法

  2. LinuxUbuntuオペレーティングシステムのSSHポートを変更します

  3. UbuntuオペレーティングシステムにIMAPforPHP7.1をインストールします

  1. UbuntuオペレーティングシステムにMySQLサーバーをインストールします

  2. UbuntuオペレーティングシステムでApache仮想ホストを設定する

  3. MySQL スレーブ データベースの構成方法

  1. UbuntuオペレーティングシステムでApacheを構成する

  2. DebianおよびUbuntuオペレーティングシステムでsudoアクセスを許可する

  3. Ubuntu サーバー:Ubuntu の違い