チュートリアルシリーズ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ページを共有する方法
序文場合によっては、データベースのイントラネット アドレスしか知らず、イントラネット経由で接続できな...
環境の紹介オペレーティングシステム: Centos 7.4 Zabbix バージョン: zabbix...
図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...
目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...
目次地図フィルターいくつかの毎インデックスを検索パイプ参考回答1. パラメータを受け入れる関数を返す...
1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...
コンピューターに Linux Ubuntu システムをインストールしました。初めてインストールしまし...
まず効果を見てみましょう: 序文:このアイデアは、Bilibili のアップロード者 Steven ...
MySQL マスタースレーブ設定MySQL のマスター/スレーブ レプリケーションと読み取り/書き込...
1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...
入力ボックス内のカーソルのサイズが一定ではありませんIE7とChromeの違いは非常に明白ですまず、...
最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...
訪問者があなたのウェブサイトを覚えておくのに役立つ3つの便利なコード。お気に入りに追加するためのヒン...
Dockerタグの詳しい説明docker tag コマンドの使い方と、ローカルイメージを daocl...
目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...