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開発環境を構築するための完全な手順

推薦する

Homebrewを使用してMacにMySQLをインストールするときにログインできない問題を解決する

お使いのコンピュータが Mac の場合、homebrew を使用して MySQL をインストールする...

CSS3 と JavaScript を使用して Web カラー ピッカーのサンプル コードを開発する

この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...

JavaScriptは行削除機能を備えたテーブルを動的に生成します

この記事の例では、テーブルを動的に生成したり行を削除したりするためのJavaScriptの具体的なコ...

パーソナライズされたクリエイティブなウェブサイトデザインの例 (30)

そこで、個性的なスタジオやフリーランスを表現する組み合わせを 30 個選びました。デザインを目立たせ...

IE6 の歪み問題

質問: <form...> の下の <input type="hidde...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

ドラッグフォトウォールを実現するネイティブJS

この記事では、ネイティブ JS で実装されたドラッグ可能な写真ウォールを紹介します。効果は次のとおり...

MySQL UPDATE ステートメントの「典型的な」落とし穴

目次1. 問題のあるSQL文たとえば、次の図のような質問をした人がいました。 問題は次のように要約で...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

Linuxで大きなファイルを素早くコピーする方法

データをコピーリモートでデータをコピーする場合、通常は rsync コマンドを使用しますが、小さなフ...

Ubuntuの基本設定: openssh-serverのインストールと使用

Ubuntu 17.10 での openssh-server のインストールと使用を記録します。イン...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

VMware および CentOS システムのインストール方法 - ルート パスワードをリセットする

今日のタスク1. Linuxディストリビューションの選択2.vmwareが仮想マシン(centos)...

CentOS の Nginx 公式 Yum ソースの設定を詳しく解説

私はプロジェクトの展開にAlibaba Cloudから購入したCentOSを使用しています。最近、プ...

Alibaba Cloud CentOS 7 に yum を使用して MySQL をインストールする正しい方法 (推奨)

yum クイックインストール mysql yumリポジトリを追加する rpm -Uvh http:...