チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の異なるサービス ポート (3306、3307 など) を同時に開き、複数の MySQL サービス プロセスを同時に実行することです。これらのサービス プロセスは、異なるサービス ポートをリッスンする異なるソケットを通じてサービスを提供します。 これらの MySQL の複数のインスタンスは、異なる my.cnf (同じでも可) 構成ファイル、起動プログラム (同じでも可)、およびデータ ファイルを使用して、一連の MySQL インストール プログラムを共有します。サービスを提供する際、複数の MySQL インスタンスは論理的に互いに独立しているように見え、構成ファイル内の対応する設定に基づいて、サーバーから対応する量のハードウェア リソースを取得します。 例を挙げると、複数の MySQL インスタンスは、家の複数の寝室に相当します。各インスタンスは寝室とみなすことができ、サーバー全体は家です。サーバーのハードウェア リソース (CPU、メモリ、ディスク) とソフトウェア リソース (CentOS オペレーティング システム) は、家のバスルーム、キッチン、リビングルームとみなすことができ、これらは家の共有リソースです。北京の出稼ぎ労働者で、友達と一緒に家を借りているなら、もっとよく分かると思います。みんな一緒に暮らし、自分の寝室で休み、外出するときは必ず上記の公共資源を共有することになります。これにより、MySQL の複数のインスタンスについて十分に理解できるようになります。 実際、nginx、Apache、haproxy、redis など、多くのネットワーク サービスは複数のインスタンスを使用して構成できます。ポータルサイトで広く使用されています。 1 台の物理マシンに複数のテスト環境が必要な場合は、データベースの複数のインスタンスを構築する必要があります。複数のインスタンスは複数のプログラムを実行することを意味し、インスタンス間に影響を与えません。リスニング ポートが異なる必要があることに注意してください。 環境: CentOS7.5、MariaDB-10.2.15 バージョンをコンパイルしてインストール、ソフトウェアのインストール ディレクトリ: /app/mysql/ 1) 実行ディレクトリ環境を作成する [root@centos7 ~]# mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin} [root@centos7 ~]# chown -R mysql:mysql /mysqldb/ 2) データベースを初期化する [root@centos7 ~]# cd /app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql --basedir=/app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3307/data/ --user=mysql --basedir=/app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3308/data/ --user=mysql --basedir=/app/mysql/ 上記はコンパイルしてインストールしたものです。インストールディレクトリは /app/mysql/ です。ソフトウェアのインストールディレクトリに入り、初期化スクリプトを実行する必要があります。yum でインストールしたパッケージの場合は、mysql_install_db コマンドを直接実行するだけです。 3) 設定ファイルを提供し、必要に応じて変更する [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3307/etc/my.cnf [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3308/etc/my.cnf [root@centos7 mysqldb]# cd /mysqldb/ [root@centos7 mysqldb]# vim 3306/etc/my.cnf [mysqld] ポート = 3306 データディレクトリ = /mysqldb/3306/data ソケット = /mysqldb/3306/socket/mysql.sock [root@centos7 mysqldb]# vim 3307/etc/my.cnf #上記の設定例に従って変更します [root@centos7 mysqldb]# vim 3308/etc/my.cnf 4) サービス起動スクリプトを提供する [root@centos7 ~]# cat mysqld #スクリプト例#!/bin/bash port=3306 #現在のインスタンスのポート番号に変更する必要がありますmysql_user="root" mysql_pwd="" cmd_path="/app/mysql/bin" #インストールディレクトリ内のbin mysql_basedir="/mysqldb" #インスタンスデータベースファイルが配置されているディレクトリmysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" 関数_start_mysql() { if [ ! -e "$mysql_sock" ];その後 printf "MySQL を起動しています...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & それ以外 printf "MySQL が実行中です...\n" 出口 フィ } 関数_stop_mysql() { if [ ! -e "$mysql_sock" ];その後 printf "MySQL は停止しています...\n" 出口 それ以外 printf "MySQL を停止しています...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} シャットダウン フィ } 関数_restart_mysql() { printf "MySQL を再起動しています...\n" 関数_stop_mysql 睡眠2 関数_start_mysql } ケース$1 始める) 関数_start_mysql ;; 停止) 関数_stop_mysql ;; 再起動) 関数_restart_mysql ;; *) printf "使用方法: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" エサック [root@centos7 ~]# cp mysqld /mysqldb/3306/bin/ [root@centos7 ~]# cp mysqld /mysqldb/3307/bin/ [root@centos7 ~]# cp mysqld /mysqldb/3308/bin/ [root@centos7 ~]# vim /mysqldb/3306/bin/mysqld ポート=3306 [root@centos7 ~]# vim /mysqldb/3307/bin/mysqld ポート=3307 [root@centos7 ~]# vim /mysqldb/3308/bin/mysqld ポート=3308 5) スクリプトファイルの権限を変更して、パスワードが他人に見られないようにする [root@centos7 ~]# chmod 700 /mysqldb/3306/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3307/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3308/bin/mysqld 6) サービスを開始する [root@centos7 ~]# service mysqld stop #元のサービスが停止していることを確認し、ポート 3306 を解放します [root@centos7 ~]# /mysqldb/3306/bin/mysqld start #サービスを開始します [root@centos7 ~]# /mysqldb/3307/bin/mysqld start [root@centos7 ~]# /mysqldb/3308/bin/mysqld を起動します [root@centos7 ~]# ss -tnl #3つのインスタンスがリッスンしているポートがすべて開いていることがわかったら、サービスが正常に起動していることを意味します LISTEN 0 80 :::3306 :::* 聞く 0 80 :::3307 :::* 聞く 0 80 :::3308 :::* 7) 接続テスト [root@centos7 ~]# mysql -S /mysqldb/3306/socket/mysql.sock #ソケットファイルを指定するには -S を使用します サーバーバージョン: 10.2.15-MariaDB-log ソース配布 MariaDB [(なし)]> show variables like '%port'; #ポートが3306かどうか確認 +---------------------+-------+ | 変数名 | 値 | +---------------------+-------+ | 追加ポート | 0 | | 大容量ファイルサポート | オン | | ポート | 3306 | | レポートポート | 3306 | +---------------------+-------+ セット内の 4 行 (0.00 秒) [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock # 再接続して3307と3308をテストします サーバーバージョン: 10.2.15-MariaDB-log ソース配布 MariaDB [(なし)]> '%port' のような変数を表示します。 +---------------------+-------+ | 変数名 | 値 | +---------------------+-------+ | 追加ポート | 0 | | 大容量ファイルサポート | オン | | ポート | 3307 | | レポートポート | 3307 | +---------------------+-------+ セット内の 4 行 (0.00 秒) [root@centos7 ~]# mysql -S /mysqldb/3308/socket/mysql.sock サーバーバージョン: 10.2.15-MariaDB-log ソース配布 MariaDB [(なし)]> '%port' のような変数を表示します。 +---------------------+-------+ | 変数名 | 値 | +---------------------+-------+ | 追加ポート | 0 | | 大容量ファイルサポート | オン | | ポート | 3308 | | レポートポート | 3308 | +---------------------+-------+ セット内の 4 行 (0.00 秒) 複数のインスタンスが正常に構築されました。 8) このコマンドを使用してインスタンスを停止します [root@centos7 ~]# /mysqldb/3306/bin/mysqld を停止します 9) 最後のステップ: ルートユーザーのパスワードを追加します~ [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock サーバーバージョン: 10.2.15-MariaDB-log ソース配布 MariaDB [(なし)]> update mysql.user set password=PASSWORD("your_password") where user='root'; クエリは正常、4 行が影響を受けました (0.00 秒) MariaDB [(なし)]> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。 +------+-----------+--------------------------------------------------------+ | ユーザー | ホスト | パスワード | +------+-----------+--------------------------------------------------------+ | ルート | ローカルホスト | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | ルート | centos7 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | ルート | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | ルート | ::1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | | ローカルホスト | | | | centos7 | | +------+-----------+--------------------------------------------------------+ セット内の 6 行 (0.00 秒) [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p'your_password' #パスワードを指定して再度ログインすればOK~ 最後に、サービスの起動に失敗しないように、bin/mysqldスクリプトファイルにパスワードを追加します。 これで、MySQL シリーズ 2 マルチインスタンス構成に関するこの記事は終了です。MySQL マルチインスタンス構成の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明
>>: ウェブサイト標準の検証方法を通じてFlashページを共有する方法
序文インデックスは、データベース内の 1 つ以上の列の値を並べ替え、データベースが効率的にデータを取...
検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...
最近、リンク データについていくつか調査していて、rdf データベースを使用する必要があったため、v...
Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...
この記事では、ExcelファイルをMySQLデータベースにインポートする方法を参考までに紹介します。...
1. インストールスクリプト(composer-setup.php)を現在のディレクトリにダウンロー...
この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに...
冒頭にこう書かれています:アブソリュートは言った。「親戚よ、私はあなたを私の人生で見たくない!」なぜ...
目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...
アプリケーションが牛のように遅い理由は数多くあります。ネットワーク、システム アーキテクチャ、または...
この記事では、ショッピングカート決済機能を実現するためのVueの具体的なコードを例として紹介します。...
質問画像とテキストのシームレスなスクロールは、一般的に携帯電話では良い効果をもたらしますが、一部のモ...
背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...
前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインス...
私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...