ホームページ > データベース > mysql チュートリアル > MySQL 単一マシンの複数インスタンスの共有

MySQL 単一マシンの複数インスタンスの共有

小云云
リリース: 2018-02-23 11:43:54
オリジナル
1578 人が閲覧しました

単一マシン上で複数のインスタンスを実現することは、Docker を介して簡単に行うことができます。ここでは主に、組み込みツール mysqld_multi を使用するプロセスと 2 つの落とし穴について説明します。この記事が皆さんのお役に立てれば幸いです。

1. MySQL をインストールします

システム: Ubuntu 16.04LTS (xenial)
バージョン: Percorna Server 5.7.21-20
インストール: 公式 Web サイトのチュートリアル

2. mysqld_multi 設定ファイル

新しいファイルを作成しますmulti_server.cnf

[mysqld_multi]
# MySQL サービスが mysqld_safe 経由で開始されていない場合は、これをコメントアウトする必要があります
#mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = 123456
[mysqld1]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib /mysql
tmpdir = /tmp
[mysqld2]
user = mysql
pid-file=/var/run/mysqld/mysql.pid2
socket=/var/run/mysqld/mysqld.sock2
port = 3307
basedir = /usr
datadir = /var/lib/mysql2

3. サービスを開始します

実行中のインスタンスを表示します
mysqld_multi --defaults-file=/etc/mysql/multi_server.cnf レポート

サービスを開始します
mysqld_multi --defaults-file =/etc/mysql/multi_server.cnf start

一般的に、最初のものは私たちによってインストールされており、root ユーザーもセットアップしているため、次のものが存在する可能性は低いからです。問題です。
mysql2 で考えられる問題:

致命的なエラー: グループ [mysqld2] で mysqld を起動しようとしましたが、データ ディレクトリが見つからないか、使用されたデータ ディレクトリを作成できませんでした: /var/lib/mysql2

MySQL5.7新しいインスタンスを追加するためのコマンドラインは次のとおりです

mysqld -- datadir=/var/lib/mysql2 --initialize --initialize-insecure...
公式Webサイトのリンク

/usr/bin/mysqld_multiスクリプトを見てください上下343行

            print "\n\nInstalling new database in $datadir\n\n";
            $install_cmd="/usr/bin/mysqld ";
            $install_cmd.="--initialize ";
            $install_cmd.="--user=mysql ";
            $install_cmd.="--datadir=$datadir";
ログイン後にコピー

一見、問題なさそうに見えますが、実際にはコマンドライン実行

which mysqld
得到的结果
/usr/sbin/mysqld
ログイン後にコピー

を使用することで、このスクリプトを修正すると正常に起動できるようになります
もちろん、それでも起動しない場合は、動作するには、ユーザー権限を考慮する必要があるかもしれません
Ubuntu を使用している場合は、apparmor 権限が制限されているかどうかも確認してください

上記の続きで、このように起動すると、mysql2 インスタンスはランダムにパスワードを作成します。 root ユーザーになり、後続のクライアントがインスタンスにログインできなくなります。パスワードを取得する必要がある場合は、error_log のみを使用できます。このとき、スクリプトに「--initialize」パラメータを追加する必要もあります。 -insecure" をスクリプトに追加し、パラメーター間のスペースに注意してください。
接続を確立した後、

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; を実行します。
4. フォローアップ操作

root ユーザーに権限を追加します

GRANT ALL PRIVILEGES ON
. TO root@'%' IDENTIFIED BY "123456";フラッシュ権限;
各インスタンスの mysqld_multi 管理ユーザー multi_admin にシャットダウン権限を追加します

GRANT SHUTDOWN ON
. TO multi_admin@localhost IDENTIFIED BY 'password';
mysqld_multi stop を通じてインスタンスを効果的にシャットダウンできない場合は、mysqladmin を通じて直接シャットダウンできます

不適切な操作によりインスタンスが起動に失敗した場合は、コマンド

tail -30 /var/log/mysql/error.log
FAQ

2018-02-22T02:02:28.227868Z 0 [ERROR] /usr/sbin/mysqld: を使用してエラー ログを表示できます。ファイル「/var/run/mysqld/mysql.pid3」を作成/書き込みできません (エラーコード: 13 - 権限が拒否されました)
2018-02-22T02:02:28.227889Z 0 [エラー] サーバーを起動できません: できませんPID ファイルの作成: 権限が拒否されました
この時点で、次のように /var/run/mysqld フォルダーが表示されます。

-rw-r--r-- 1 root root 0 を再起動します。 2月22日 02:01 mysqld .pid
-rw-r--r-- 1 root root 0 2月21日 15:35 mysqld.pid2
srwxrwxrwx 1 mysql mysql 0 2月22日 02:02 mysqld.sock=
srwxrwxrwx 1 mysql私0 2月22日 02:02 mysqld.sock2=
-rw------- 1 mysql mysql 6 2月22日 02:02 mysqld.sock2.lock
srwxrwxrwx 1 mysql mysql 0 2月22日 02:02 mysqld.sock3=
-rw---- --- 1 mysql mysql 6 Feb 22 02:02 mysqld.sock3.lock
-rw------- 1 mysql mysql 6 Feb 22 02:02 mysqld.sock.lock
-rw -r--r- - 1 ルート root 0 Feb 22 02:01 mysql.pid2
-rw-r--r-- 1 root root 0 Feb 22 02:01 mysql.pid3
関連推奨事項:

MySQL単一マシンのマルチインスタンス ソリューションの展開

MySQL の単一マシンのマルチインスタンス構成

LBOMP – MySQL の単一マシンのバックアップ監視ツール


以上がMySQL 単一マシンの複数インスタンスの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート