Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

序文

MySQL に関する私の理解に基づくと、パフォーマンスの最適化作業やマスター スレーブ レプリケーションの多くは、さまざまな期間のさまざまな桁のデータに適応するためにパラメータを調整することであると考えています。

したがって、my.cnf 内のパラメータを完全に理解することは永遠のテーマであり、パラメータ設定を完全に理解することによってのみ、特定の側面でデータベースを調整できるようになります。

数日前に MySQL データベースを引き継ぎました。オペレーティング システムは Ubuntu 16.04.5 LTS、データベース バージョンは 5.7.23-0ubuntu0.16.04.1 (APT によってインストールされた MySQL) です。このオペレーティング システムでの MySQL 構成ファイル my.cnf については、少し違和感を感じる点が数多くあります (これは、以前 RHEL や CentOS などのオペレーティング システム環境で MySQL を保守していた以前の MySQL 環境とは多少異なります)。

そこで、少し調べてまとめてみました。詳細は以下の通りです。

root@mylnx12:~# find / -name "my.cnf"
/etc/alternatives/my.cnf
phpMySQL の mysql.cnf ファイル
/var/lib/dpkg/alternatives/my.cnf
root@mylnx12:~# my.cnf を探します
/etc/alternatives/my.cnf
phpMySQL の mysql.cnf ファイル
/etc/mysql/my.cnf.fallback
/var/lib/dpkg/alternatives/my.cnf
root@mylnx12:~# mysql --help | grep my.cnf
      優先順位、my.cnf、$MYSQL_TCP_PORT、
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
root@mylnx12:~# mysqld --verbose --help | grep -A 1 'デフォルトオプション'
デフォルト オプションは、指定された順序で次のファイルから読み取られます。
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

上記の情報から判断すると、MySQL パラメータ ファイルは /etc/mysql/my.cnf ですが、他の my.cnf ファイルはどうでしょうか?

root@mylnx12:~# ls -lrt /etc/alternatives/my.cnf
lrwxrwxrwx 1 ルート ルート 20 9月 28 16:28 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf

上記の情報から、/etc/alternatives/my.cnf は実際にはパラメータファイル /etc/mysql/mysql.cnf を指すソフトリンクであることがわかります。

root@mylnx12:~# cat /var/lib/dpkg/alternatives/my.cnf
自動車
phpMySQL の mysql.cnf ファイル
 
/etc/mysql/my.cnf.fallback
100
phpMySQL の .cnf ファイル
200

上記の情報だけでは、/var/lib/dpkg/alternatives/my.cnf と他の設定ファイル my.cnf の関係はまだわかりません。次に、パラメータ ファイル /etc/mysql/my.cnf を見てみましょう。次の情報から、「/etc/mysql/my.cnf」はグローバル設定であり、「~/.my.cnf」隠しファイルは個人ユーザー設定であることがわかります。

root@mylnx12:~# cat /etc/mysql/my.cnf
#
# MySQL データベース サーバーの構成ファイル。
#
# これを次のいずれかにコピーできます:
# - グローバルオプションを設定するには「/etc/mysql/my.cnf」を使用します。
# - ユーザー固有のオプションを設定するには「~/.my.cnf」を使用します。
# 
# プログラムがサポートするすべての長いオプションを使用できます。
# 利用可能なオプションの一覧を取得するには、--help でプログラムを実行し、
# --print-defaults を使用すると、実際にどれが理解され使用されるかを確認できます。
#
# 説明については
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
#
# * 重要: このファイルの設定を上書きできる追加の設定!
# ファイルは '.cnf' で終わる必要があります。そうでない場合は無視されます。
#
 
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

ただし、/etc/mysql/my.cnf パラメータ ファイルの下にはパラメータ設定がありません。次の 2 行の設定のみが表示され、これら 2 つのディレクトリ内の構成ファイルがインポートされていることがわかります。

!includedir /etc/mysql/conf.d/

# は、サフィックスが .cnf である場合に、パス /etc/mysql/conf.d/ の下の設定ファイルが含まれることを示します。

!includedir /etc/mysql/mysql.conf.d/

# は、サフィックスが .cnf である場合に、パス /etc/mysql/mysql.conf.d/ の下の設定ファイルが含まれることを示します。

実際、MySQL 関連のすべての設定は、mysqld.cnf (/etc/mysql/mysql.conf.d/mysqld.cnf) の下にあります。関連するパラメータでテストしたところ、動作しました。この種の設定は、確かに初心者にとっては少し不快です。とりあえずのまとめは以上です!

root@mylnx12:~# cd /etc/mysql/mysql.conf.d/
root@mylnx12:/etc/mysql/mysql.conf.d# ls -lrt
合計 8
-rw-r--r-- 1 ルート ルート 21 2月 4 2017 mysqld_safe_syslog.cnf
-rw-r--r-- 1 ルート ルート 3148 10月 6日 23:34 mysqld.cnf
root@mylnx12:/etc/mysql/mysql.conf.d# cat mysqld.cnf
#
# MySQL データベース サーバーの構成ファイル。
#
# これを次のいずれかにコピーできます:
# - グローバルオプションを設定するには「/etc/mysql/my.cnf」を使用します。
# - ユーザー固有のオプションを設定するには「~/.my.cnf」を使用します。
# 
# プログラムがサポートするすべての長いオプションを使用できます。
# 利用可能なオプションの一覧を取得するには、--help でプログラムを実行し、
# --print-defaults を使用すると、実際にどれが理解され使用されるかを確認できます。
#
# 説明については
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
# これはすべてのmysqlクライアントに渡されます
# パスワードは引用符で囲む必要があると報告されています
# 特に「#」文字が含まれている場合...
# ソケットの場所を変更するときは、必ず /etc/mysql/debian.cnf を編集してください。
 
# 特定のプログラムのエントリはこちら
# 以下の値は、少なくとも32MのRAMがあることを前提としています
 
[mysqld_safe]
ソケット = /var/run/mysqld/mysqld.sock
いいね = 0
 
[mysqld]
#
# * 基本設定
#
ユーザー = mysql
pid ファイル = /var/run/mysqld/mysqld.pid
ソケット = /var/run/mysqld/mysqld.sock
ポート = 3306
ベースディレクトリ = /usr
データディレクトリ = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
外部ロックをスキップ
ログビン = mylnx12_bin
サーバーID = 0
文字セットサーバー=utf8mb4
照合サーバー=utf8mb4_general_ci
 
#
# スキップネットワークの代わりに、デフォルトでは、
# 互換性が高く、安全性も低い localhost です。
バインドアドレス = 10.21.6.7
#
# * 微調整
#
キーバッファサイズ = 16M
最大許容パケット = 100M
スレッドスタック = 192K
スレッドキャッシュサイズ = 8
# これは起動スクリプトを置き換え、必要に応じてMyISAMテーブルをチェックします
# 初めて触れたとき
myisam-recover-options = バックアップ
#最大接続数 = 100
#テーブルキャッシュ = 64
#スレッド同時実行数 = 10
#
# * クエリキャッシュ設定
#
クエリキャッシュ制限 = 1M
クエリキャッシュサイズ = 16M
#
# * ログとレプリケーション
#
# 両方の場所は cronjob によってローテーションされます。
# このログ タイプはパフォーマンスを低下させることに注意してください。
# 5.1 以降では実行時にログを有効にすることができます。
#general_log_file = /var/log/mysql/mysql.log
#一般ログ = 1
#
# エラー ログ - エントリは非常に少ないはずです。
#
ログエラー = /var/log/mysql/error.log
#
# ここでは特に長い期間のクエリを確認できます
#log_slow_queries = /var/log/mysql/mysql-slow.log
#長いクエリ時間 = 2
#インデックスを使用しないログクエリ
#
# 以下は、バックアップ ログを簡単に再生したり、レプリケーションに使用したりできます。
# 注意: レプリケーションスレーブを設定する場合は、README.Debianを参照してください。
# その他の設定を変更する必要があるかもしれません。
#サーバーID = 1
#log_bin = /var/log/mysql/mysql-bin.log
有効期限切れログ日数 = 10
最大バイナリログサイズ = 100M
#binlog_do_db = データベース名を含める
#binlog_ignore_db = 含めるデータベース名
#
# * InnoDB
#
# InnoDB はデフォルトで有効になっており、/var/lib/mysql/ に 10 MB のデータファイルがあります。
# InnoDB 関連のオプションの詳細については、マニュアルをお読みください。たくさんあります。
#
# * セキュリティ機能
#
# chroot が必要な場合は、マニュアルも読んでください。
# chroot = /var/lib/mysql/
#
# SSL 証明書を生成するには、OpenSSL GUI「tinyca」をお勧めします。
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
#: ssl-key=/etc/mysql/server-key.pem

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • 権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法
  • 現在使用されている設定ファイル my.cnf を表示する mysql メソッド (推奨)
  • my.cnf を通じて MySQL のデフォルトの文字セットを utf-8 に変更する方法と注意事項
  • MySQL サービスのパフォーマンス最適化 - my.cnf_my.ini 構成手順 (16G メモリ)
  • MySQL 5.7 の /etc/my.cnf パラメータの紹介

<<:  Angularコンポーネントの仲介モードの詳細な説明

>>:  Dockerを使用してLaravel開発環境を構築するための完全な手順

推薦する

MySQL テーブルの追加、削除、変更、クエリの基本チュートリアル

1. 作成する [テーブル名] (フィールド1、フィールド2、...) 値 (値1、値2、...) ...

cocoscreatorプレハブの詳しい説明

目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...

Chromeブラウザ設定の新バージョンではクロスドメイン実装が可能

序文現在、フロントエンドは主に webpack の devServer の構成を通じてクロスドメイン...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...

MySQL 5.7.20 zip インストール チュートリアル

MySQL 5.7.20 zipインストール、具体的な内容は次のとおりです(1)圧縮パッケージを解凍...

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

親ページの更新を制御するために HTML で iframe を実装するためのアイデアとコード

1. 応用シナリオ親ページ a.jspサブページ b.jsp (ページ a に埋め込まれた ifra...

Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

Vue 日付時刻ピッカーコンポーネントの使い方の詳細な説明

この記事の例では、Vue の日付時刻ピッカーコンポーネントの具体的なコードを参考までに紹介します。具...

MySQL データベースの最適化に関する 9 つのヒント

目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

vue-cli 3 で vue-bootstrap-datetimepicker 日付プラグインを使用する方法

需要背景最近、Vue を使用してフロントエンド エンジニアリング システムと組み合わせ、以前のデモを...

Vueナンバープレート入力コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...