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オブジェクトの走査順序の詳細な説明

推薦する

nginx で HSTS を有効にしてブラウザを HTTPS アクセスにリダイレクトする方法の詳細な説明

前回の記事では、https を使用したローカルノードサービスアクセスを実装しました。前回の記事の効果...

Linux システム ディスクのフォーマットとスワップ パーティションの手動追加

Windows: NTFS、FATをサポートLinux は次のファイル形式をサポートしています: C...

Vue+element はローカル検索機能付きのドロップダウン メニューを実装します

必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...

Vue+element+springboot でファイルダウンロードの進行状況バー表示機能を実装する例

目次1. 需要背景2. 最適化計画3. 具体的な実施3.1 フロントエンドコード3.2 背景コード4...

UrlRewriter のキャッシュ問題と関連する一連の調査

ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...

MYSQL(電話番号、IDカード)データ非感応化の実装

1. データ感度低下の説明日常の開発ニーズでは、データの感度低下が頻繁に発生します。たとえば、ID ...

JavaScriptでよく使われる配列重複排除実戦ソースコード

アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

MySQL 結合バッファの原理

目次1. MySQL 結合バッファ2. JoinBufferCacheストレージスペースの割り当て3...

Centos7.4 サーバーへの Apache のインストールとインストール プロセス中に発生した問題の解決策

この記事では、CentOS 7.4 サーバーに Apache をインストールする方法と、インストール...

MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策

問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...

Zabbix と bat スクリプトを組み合わせて複数のアプリケーションの状態を監視する方法

シナリオシミュレーション:国内企業の中には、重要な業務をサポートするために特定のウィンドウ プログラ...

ユニアプリプロジェクトでのウォーターフォールレイアウトの実装

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアル1. プ...

ボリュームを使用してホストと Docker コンテナ間でファイルを転送する方法

以前、Docker コンテナとローカル マシン間のファイル転送に関する記事を書きました。しかし、この...