MySQL 5.7 をバイナリモードでインストールし、Linux でシステムを最適化する手順

MySQL 5.7 をバイナリモードでインストールし、Linux でシステムを最適化する手順

この記事では主に、MySQL バイナリ パッケージのインストール/起動/シャットダウンのプロセスを紹介します。

なぜバイナリインストールを選択する必要があるのか​​と疑問に思う人もいるかもしれません。

実は、答えはとても簡単です。公式バージョンではすべての機能が設定されており、簡単に使用できます。

公式の MySQL バージョンには、GA バージョン、DMR バージョン、RC バージョン、ベータ バージョンの 4 つがあります。一般的に言えば、本番環境またはテスト環境

GA バージョン (一般に利用可能なバージョン、バグ修正済みでテスト済み) を選択します。

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/

ダウンロードが完了したら、MD5を確認できます。以前、ここでバージョンをダウンロードしました。ここでは、このコマンド(md5sumファイル名)の使用方法を説明します。

[root@tse2 ダウンロード]# md5sum mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 
d903d3dbf235b74059a4b3e216c71161 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 

1. インストール前のシステム環境の検出

どのバージョンの MySQL がインストールされているかに関係なく、MySQL データベースをスムーズにインストールし、後でデータベースを適切に最適化するためには、早い段階で Linux システムの検出を実行することが非常に重要です。

1.1. selinux と iptables を無効にするには、SELINUX=disabled に設定し、サーバーを再起動して有効にする必要があります。

ここにはiptablesがありません。ファイアウォールを使用しているので、iptablesをオフにする必要はありません。

1.2. デフォルトの I/O スケジューリング システムは cfq モードです。deadline モードを使用することを強くお勧めします。

I/O スケジューリング ファイルを表示します。

[root@tse2 ダウンロード]# cat /sys/block/sda/queue/scheduler 
noop [締め切り] cfq

1.3. スワップパーティションの設定

swpapiness 値のサイズは、スワップ パーティションの使用方法に大きな影響を与えます。

0 と 100 という 2 つの極端な値があります。0 は、物理メモリを可能な限り最大限に使用し、次にスワップ パーティションを使用することを意味します。この動作により、システム メモリのオーバーフローと OOM エラーが発生する可能性が高く、MySQL が誤って強制終了される可能性があるため、注意して設定する必要があります。

100 は、スワップ パーティションを積極的に使用し、メモリ内のデータをスワップ パーティションにタイムリーに移動することを意味します (推奨されません)。スワップを割り当てないことをお勧めします。または、4 GB のスペースを割り当てれば十分です。

swappiness ファイルを表示するにはどうすればいいですか?

[root@tse2 grub2]# cat /proc/sys/vm/swappiness
[root@tse2 grub2]# sysctl -a|grep swap
sysctl: キー「net.ipv6.conf.all.stable_secret」を読み取っています
sysctl: キー「net.ipv6.conf.default.stable_secret」を読み取っています
sysctl: キー「net.ipv6.conf.ens192.stable_secret」を読み取っています
sysctl: キー「net.ipv6.conf.lo.stable_secret」を読み取っています
vm.スワップ度 = 30

swappiness 値を変更するには、/etc/sysctl.conf を編集し、vm.swappiness の値を追加します。

1.4. ファイルシステムの選択

ここでは xfs ファイルシステムを使用することをお勧めします。ext4 と比較して、管理が容易で、動的な拡張をサポートし、ファイルの削除も簡単です。

1.5. オペレーティングシステムの制限

まず、現在のオペレーティング システムの制限をいくつか確認してみましょう。ulimit -a を使用して表示します。

ここで最も重要な 2 つのパラメータがマークされています。1 つはオープン ファイルと呼ばれ、もう 1 つは最大ユーザー プロセスと呼ばれます。

開いているファイルが適切に設定されておらず、現在のサーバーの接続またはテーブルが多すぎる場合は、テーブルを開いたりアクセスしたりできない可能性があります。

デフォルトでは、Linux のハンドルの最大数は 1024 です。つまり、1 つのプロセスが最大 1024 個のファイル ハンドルにアクセスできることになります。数値がデフォルト値を超えると、「開いているファイルが多すぎます」というファイル ハンドル制限エラーが発生します。

最大ユーザー プロセス パラメータの目的: 多数のインスタンスを実行しても、新しい接続を作成できず、リソースが不足していることを示す「リソースが一時的に利用できません」というエラーが報告されることがあります。

上記の 2 つのエラー状況を防ぐために、システムのソフト制限とハード制限を変更することができます。 /etc/security/limits.conf を編集し、制限に関連するコンテンツを追加します。コンテンツを変更した後は、変更を有効にするためにオペレーティング システムを再起動する必要があることに注意してください。

[root@tse2 grub2]# vim /etc/security/limits.conf
* ソフト nproc 65535
* ハード nproc 65535
* ソフトノーファイル 65535
* ハードnofile 65535 

1.6. numaを閉じる必要がある

簡単に言えば、NUMA 機能をオフにするとメモリをより適切に割り当てることができ、メモリを取得するためにスワップを使用する必要がなくなります。

経験豊富なシステム管理者や DBA は、スワップの使用によってデータベースのパフォーマンスが低下することがいかにひどいことかを知っているからです。

シャットダウン方法には、BIOS、オペレーティング システム、またはデータベースの起動中にシャットダウンする方法があります。

[root@tse2 bin]# numa --interleave=all /mysql/app/bin/mysqld_safe -defaults-file=/etc/my.conf &

2. MySQL 5.7バージョンのインストールプロセス

オペレーティング システム環境を確認した後、MySQL のインストール フェーズに入ります。これは、「3 ステップ + 1 ステップ」のアプローチとして要約できます。

2.1. パート1

MySQL ユーザーを作成し、MySQL が配置されているユーザー グループを指定します。コマンドは次のとおりです。

[root@tse2 /]# グループ追加mysql
[root@tse2 /]# useradd -g mysql mysql -s /sbin/nologin

通常、ソフトウェア パッケージのホーム ディレクトリ (basedir) は /data/downloads の下に配置します。

[root@tse2 ダウンロード]# pwd
/データ/ダウンロード

MySQL パッケージを解凍する必要があります。コマンドは次のとおりです。

[root@tse2 ダウンロード]# tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

MySQL ディレクトリを承認する必要があります:

[root@tse2 ダウンロード]# chown -R mysql:mysql /mysql

2.2 パート2

MySQL データベースのデータ ディレクトリ (datadir) を作成します。/mysql/ の下に作成することもできます。

[root@tse2 ダウンロード]# mkdir -p /mysql/data

データ ディレクトリも承認します。

[root@tse2 ダウンロード]# chown -R mysql:mysql /mysql/data

2.3 パートIII

バイナリインストール方式なので、ここでのデータベース設定ファイルは自分で設定する必要があります。これで最後の手順は完了です。

my.cnf 構成ファイルのダウンロード アドレス: https://files.cnblogs.com/files/Sungeek/Tsemy.7z

パスワード: tse

2.4. 最後のステップ

mysqld コマンドはデータベースを初期化します。

[root@tse2 mysql]# /mysql/app/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/mysql/app --datadir=/mysql/data/ --user=mysql -initialize

注: 初期化プロセス中に --initialize パラメータを追加すると、一時的なデータベース初期化パスワードが生成されます。

log-error(エラーログ)に記録されます。--initialize-insecure パラメータが追加されている場合は、パスワード入力がないことを意味します。初期化パスワードを生成する方法を使用することをお勧めします。

データベースを起動するプロセス:

[root@tse2 mysql]# /mysql/app/bin/mysqld_safe --defaults-file=/etc/my.cnf &

データベースが正常に起動すると、データベースに入るための初期化パスワードが /mysql/logs/error.log に記録されます。

[root@tse2 ログ]# cat /mysql/logs/error.log |grep パスワード

初期化パスワードを使用してデータベースに入った後、データベースのルート パスワードを変更し、期限切れにならないように設定する必要があります。

ルートディレクトリは /mysql/app/bin/mysql です。
mysql>パスワードを '123456' に設定します。
mysql>ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql>権限をフラッシュする

上記は、MySQL バージョン 5.7 のインストールと起動方法、およびシステム最適化のためのいくつかの最適化手順です。

要約する

上記は、編集者が紹介した Linux でバイナリ モードで MySQL 5.7 バージョンとシステム最適化をインストールする手順です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • MySQL 8.0.24 バージョンのインストールと設定方法のグラフィックチュートリアル
  • MySQL 8.0.24 リリースノートのいくつかの改善点
  • MySQLのMVCCマルチバージョン同時実行制御の実装
  • MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション
  • MySql8.0バージョンに接続するMyBatisの設定問題について
  • SeataがMySQL 8バージョンを使用できない問題を解決する方法
  • DBeaver を MySQL バージョン 8 以降に接続し、起こりうる問題を解決する方法の詳細な説明
  • IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ
  • MySQL 5.x の文字化け問題の解決方法
  • CentOS 7 に MySQL 8.0.20 データベースをインストールするための詳細なチュートリアル
  • Mysql5.7 以降での ONLY_FULL_GROUP_BY エラーの解決方法
  • mysql8.0.19 winx64バージョンのインストール問題を解決する
  • Django 2.2 と PyMySQL バージョンの互換性の問題
  • MySQL 8.0.18 のさまざまなバージョンのインストールとインストール中に発生した問題 (要点の要約)
  • MySQLのバージョンアップ方法を超詳しく解説

<<:  ドメイン名を介してプロジェクトにアクセスするnginx + tomcatの例

>>:  JSオブジェクトの走査順序の詳細な説明

推薦する

JavaScript プロトタイプオブジェクトの this ポイント問題の詳細な説明

目次1. これは2. この点を修正する1. call() メソッド2. apply() メソッド要約...

Node.js のイベント モジュールに関する知識ポイントのまとめ

Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...

MySQL で誤って削除したテーブル データを回復する方法 (必読)

バックアップがあれば、非常に簡単です。最新のバックアップ データを生成し、mysqlbinlog を...

VantフレームワークをWeChatアプレットに導入するプロセス全体の記録

序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...

Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

目次序文1. Dockerをインストールする2. ElasticSearchをインストールする3. ...

MySQL で複数の主キーが定義されているエラーの解決方法

主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...

中国の専門ではない:文化の違いの中でのウェブ開発

Web デザインと開発は大変な作業なので、少数の人だけを対象に設計しないでください。これは外国人が...

WindowsでのNginxの起動や停止などの基本操作コマンドの詳しい説明

Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...

フォームの送信イベントが応答しない

1. 問題の説明<br />JS を使用してフォームの送信メソッドを呼び出してフォームを...

Vue は div の高さをドラッグ可能にします

この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します...

MySQL は、現在のデータ テーブル内のすべての時間に対して指定された時間間隔を増加または減少させます (推奨)

DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...

JavaScriptのループの違いについての詳細な説明

目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

CentOS 7.x に ZSH ターミナルをインストールする方法

1. 基本コンポーネントをインストールするまず、 yumコマンドを実行して、コードpullために必要...