CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因

最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使用する必要があるかもしれません。そこで、ローカルでビルドして効果を試したいと思いました。その結果、Baiduで検索すると多くの結果が見つかりましたが、自分で試したものはほとんどありませんでした。ほとんどは他の人のコンテンツをコピーしたものです。重要なのは、実際のアプリケーションではエラーが発生することです。ブラウザで20近くのタブを開き、いくつか試してみましたが、すべて問題がありました。まったく使用できませんでした。時間の無駄になるだけでなく、イライラしたので、自分でやりました。

1. 準備

1. まずシステム内のmysql関連ファイルをチェックしてクリーンアップします

# システムにMysqlファイルが存在するか確認する find / -name mysql
 ​
 # mysql に存在するファイルまたはフォルダを削除します rm -rf /usr/lib64/mysql/
 ​
 # mysql関連の依存関係があるかどうかを確認します rpm -qa|grep mysql
 ​
 # mysql 依存関係をアンインストールします rpm -e mysql-.....

2. 対応するバージョンのMySQLインストールファイルをダウンロードします。

CentOS 7 64 ビットを使用しているため、MySQL 公式サイトで以下のようにオペレーティング システムを選択し、tar パッケージを選択してダウンロードします。

ここで、通常のインストールと rpm を使用したインストールという一般的なオンライン方法ではなく、tarball を使用してインストールする理由を説明します。最初のものを yum を使用して通常どおりインストールし、2 つ目をローカルにインストールすると、インストール パスを指定できず、2 つの mysql をまとめて体系的に管理することができないからです。そのため、ここでは tarball を使用して複数のインスタンスをインストールし、それらを同じディレクトリに配置して、管理と構成を容易にしています。

# ダウンロードする前に MySQL ユーザーを作成します。なぜ MySQL ユーザーを作成するのでしょうか?
解凍されたmysqlファイルにはグループがないため、設定や起動中にMySQLが特定のファイルを読み取れなくなるのを避けるために、mysqlユーザーを使用してmysqlを実行することをお勧めします。
 ユーザを追加 mysql
 # パスワードを設定する passwd mysql # 次にパスワードを2回入力します​
 # ユーザーを切り替える su mysql
 ​
 # MySQL tarball をダウンロードします wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-el7-x86_64.tar.gz
 ​
 # ファイルを解凍し、フォルダの名前をmysql_01に変更します
 tar xf mysql-8.0.20-el7-x86_64.tar.gz ./mysql_01
 ​
 # mysql_01 をコピーして、mysql_02 に名前を変更します
 cp -r ./mysql_01 ./mysql_02/
 ​
 # ルートユーザーに切り替え、2つのmysql配列をmysqlユーザーに変更し、mysqlユーザーに戻ります。
 chown -R mysql:mysql /home/mysql/mysql_01/ /home/mysql/mysql_02/
 su mysql

2. 設定を変更する

次のステップは、MySQL を構成することです。2 つの MySQL の構成は、パスが異なることを除いて、実際には似ています。ここでは、mysql_01 の構成のみを示します。mysql_02 の場合は、対応するパスを独自のパスに置き換えるだけです。

1. my.cnfをカスタマイズする

# mysql_01 パスに切り替えます cd ./mysql_01
 ​
 # 設定ファイル my.cnf を作成し、vim を使用して直接編集し、保存します。このうち、### は必須項目、# はオプション項目を示します。vim my.cnf
 ----------以下はファイルの内容です-------------
 [mysqld]  
 ### ポート番号 port=10085  
   
 ### インストールディレクトリ basedir=/home/mysql/mysql_01/ 
   
 ### データ保存パス datadir=/home/mysql/mysql_01/data/ 
   
 ###セッションファイルディレクトリ socket=/home/mysql/mysql_01/mysql.sock
   
 # 許容される接続失敗の最大数 max_connect_errors=10  
   
 # サーバーの文字セットエンコーディング character-set-server=utf8 
   
 #デフォルトのストレージエンジン default-storage-engine=INNODB 
   
 #デフォルトユーザー user=mysql  
   
 # スロークエリを有効にする slow_query_log=on  
   
 # スロークエリログファイルディレクトリ slow_query_log_file=/home/mysql/mysql_01/slow-query.log [クライアント]    
 ### サーバーへの接続に使用されるポート番号は port=10085 です。 ### セッション ファイル socket=/home/mysql/mysql_01/mysql.sock     
 #デフォルトの文字セットエンコーディング default-character-set=utf8 ---------------ファイル内容の終了-------------------- ​
 # 上記の設定では、datadir 項目にデータ フォルダがあることがわかりますが、mysql_01 にはデータ フォルダがありません。
したがって、データフォルダを作成する必要がありますmkdir data

2. デフォルト設定を変更する

次に、MySQLのデフォルト設定情報を変更する必要があります。

# ファイル vim ./support-files/mysql.server のデフォルト設定情報を変更します
 # ファイル内の basedir と datadir に関連するすべての設定を現在のパスに変更します

下記の通り

そして、下の図に示すように、ファイルにロードされた MySQL 設定ファイルのパスを、先ほど作成した my.cnf ファイルに変更します。変更が完了したら、保存して終了します。

support-filesの下にある別のファイルも変更する必要があります。

# サポートファイルフォルダ内の mysqld_multi.server ファイルを変更します vim ./support-files/mysqld_multi.server
 ​
 #次の図に示すように、basedirとdatadirの2つのプロパティを変更します。

3. 初期インストールとサービスの開始

1. 初期インストール

# mysql_01 のルートディレクトリに切り替えます cd /home/mysql/mysql_01/
 ​
 # インストールを初期化します --defaults-file は初期化構成ファイルを指定します --console はコンソールに初期化情報を出力します。/bin/mysqld --defaults-file=/home/mysql/mysql_01/my.cnf --initialize
 --console --user=mysql
 ​
 # 初期化が成功すると、初期化パスワードがコンソールに表示されます。一般的な形式は次のとおりです。root@localhost: fa356fgss、

2. サービスを開始する

# 現在の mysql_01 の mysql サービスをバックグラウンドで開始します。設定ファイルにソケット パラメータを設定しているため、設定ファイルを指定する必要があります。
この設定ファイルに従って起動された場合にのみ、ソケットによって設定されたパスに従って生成され、それ以外の場合は /tmp/mysql.sock に自動的に生成されます。
mysql_02 もこのように生成されると、オーバーレイが発生し、接続時に 1 つのサービスのみが接続されるか、エラーが発生します。
 ./bin/mysqld_safe --defaults-file=./my.cnf &
 ​
 # 次のコマンドを使用して、mysql サービスが開始されているかどうかを確認します。netstat -nultp|grep 10085

4. データベースに接続してパスワードを変更する

# 上記から、MySQL サービスが開始されたので、MySQL に接続できることがわかります。/bin/mysql --socket=./mysql.sock -uroot -p # 初期パスワードを入力します​
 # MySQL ログイン パスワードを変更します。ここでは、root に変更します。末尾のセミコロンに注意してください。 alter user root@localhost identified by "root";

同じ設定後、mysql_02を起動すると、効果は次のようになります。

上記はMySQL_01の設定です。MySQL_02でも同様です。該当するディレクトリを自分のファイルパスに変更するだけです。複数のインスタンスをインストールした後、マスターとスレーブのレプリケーションや読み取りと書き込みの分離などの関連する構成を実行できます。

要約する

CentOS 7 で MySQL 8 のインスタンスを複数設定する方法についてはこれで終わりです (必要な数だけ設定できます)。 CentOS 7 で MySQL 8 のインスタンスを複数設定する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux に MySQL の複数のインスタンスをインストールしてデータ バックアップ サーバーとし、マルチ マスターから 1 つのスレーブへのマルチ インスタンス バックアップを実現する
  • MySQL マルチインスタンス構成ソリューション
  • mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル
  • CentOS 6.5 に MySQL 5.7.17 バイナリ インストールとマルチインスタンス構成を展開する
  • MySQLの導入と1台のマシンでのマルチインスタンス導入を迅速に実装
  • MySQLマルチインスタンスインストールに基づく詳細な分析
  • Linux での MySQL マルチインスタンスの展開とインストール ガイド

<<:  vue3ソースコード解析の簡単な実装方法

>>:  Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

推薦する

VScode リモート SSH リモート編集とデバッグコード

Visual Studio Code の最新の Insider バージョンには、コードのリモート デ...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

HTML の rel 属性の分析

.y { background: url(//img.jbzj.com/images/o_y.pn...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

Linuxで現在のスクリプトの実際のパスを取得する方法

1. 現在のスクリプトの実際のパスを取得します。 #!/bin/bash if [[ $0 =~ ^...

Nginx 環境での WordPress マルチサイト構成の詳細な説明

WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインス...

MySQL クエリにおける LIMIT の大きなオフセットによって引き起こされるパフォーマンス低下の分析

序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

MySQL データベースのバックアップをスケジュールするいくつかの方法 (包括的)

目次1. データをバックアップするためのmysqldumpコマンド2. 一般的なmysqldump操...

Vue の img の src 画像アドレスの動的スプライシングの問題について

Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...

Linux システムでの virtuoso データベースの詳細なインストールと使用

最近、リンク データについていくつか調査していて、rdf データベースを使用する必要があったため、v...

Ubuntu ターミナル マルチウィンドウ 分割画面 ターミネーター

1. インストールターミネーターの最大の特徴は、1つのウィンドウで複数のターミナルを開くことができる...

スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...

CSSリストのスライドにより、下部に隠れるのを防ぎ、長い画面モデルの処理に適応します。

1. モバイル端末がリストスライドを処理するとき、WeChat には下部にページに戻るボタンが組み...