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

推薦する

dockercompose を使用して springboot-mysql-nginx アプリケーションをビルドする

前回の記事では、Docker を使用して、コンパイルされた jar パッケージをイメージに組み込む ...

Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

序文PC サーバーは今日まで発展を続け、パフォーマンスにおいて大きな進歩を遂げてきました。 64ビッ...

MySQL Server 8.0.13.0 インストールチュートリアル(画像とテキスト付き)

MySQL 6.1.3 をベースにした 8.0.13 をインストールします。 MySQL 8.0....

MySQL での order by の使用に関する詳細

目次1. はじめに2. 本文2.1 単一列のソート2.2 複数の列を並べ替える2.3 ソート方法2....

イラスト風ウェブサイトホームページデザイン ウェブサイトデザインの新トレンド

視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...

MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

背景:テーブルスペース: すべての INNODB データはテーブルスペース (共有テーブルスペース)...

deepin 2014 システムに MySQL データベースをインストールする方法

Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...

SMS送信のカウントダウンを実装するJavaScript

この記事では、SMS送信のカウントダウンを実装するためのJavaScriptの具体的なコードを参考ま...

MySQL ジョイントテーブルクエリの簡単な例

MySql は結合テーブルクエリを使用しますが、初心者には理解しにくい場合があります。以下の記事では...

Linux でユーザーをグループに追加する 4 つの方法の概要

序文Linux グループは、Linux でユーザー アカウントを管理するために使用される組織単位です...

Ubuntu 20.04 と NVIDIA ドライバーのインストールに関するチュートリアル

Ubuntu 20.04をインストールする NVIDIAドライバーをインストールする Pytouch...

2 つの Linux サーバー間の自動ファイル同期

サーバーB(172.17.166.11)の電源がオンまたは再起動されると、サーバーA(172.17....

MySQL は information_schema オブジェクトの付与をバイパスし、ERROR 1044 (4200) エラーを報告します

この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...

Vue は Tencent Map を統合して API を実装します (デモ付き)

目次執筆の背景プロジェクトの説明事前準備注記執筆の背景以前のプロジェクトではTencent Maps...

CSSリンクと@importの違いの詳細な説明

HTML に CSS を追加するにはどうすればいいですか? HTML で CSS を設定する方法は ...