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

推薦する

XHTML 入門チュートリアル: テーブルタグの応用

<br />テーブルは XHTML では扱いにくいタグなので、このセクションで理解するだ...

マークアップ言語 - テキストの CSS スタイルを指定する

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

RabbitMQ の Docker インストールと設定手順

目次単一マシンの展開オンラインプルミラーを見るRabbitMQを作成して実行するMQコンテナを正常に...

テーブル編集操作を実現する js+Html

この記事では、テーブルの編集操作を実現するためのjs+Htmlの具体的なコードを参考までに共有します...

MySQL のフィールドに一意のインデックスを追加および削除する方法

1. PRIMARY KEY(主キーインデックス)を追加するmysql>ALTER TABLE...

MySQLのグループカウントと範囲集計を実装する2つの方法

1つ目:通常動作 選択 SUM(ddd) AS count_days、 場合 aa.days >...

MySql におけるプロセス制御関数/統計関数/グループ化クエリの使用法の分析

これからの道のりは長く困難ですが、私は探求を続けます。また週末がやってきました。引き続き、皆さんと一...

MySQLのネストされたトランザクションで発生する問題

MySQL はネストされたトランザクションをサポートしていますが、それを実行する人は多くありません....

HTMLにリンクを挿入する方法

各 Web ページには、URL () で識別されるアドレスがあります。通常、Web サイト内でリンク...

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...

PC/Pad/Phoneデバイスに自動的に適応するCSSウェブページレスポンシブレイアウト

序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

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

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

データベースインデックスの知識ポイントの概要

目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...