単一マシン上で複数のインスタンスを実現することは、Docker を介して簡単に行うことができます。ここでは主に、組み込みツール mysqld_multi を使用するプロセスと 2 つの落とし穴について説明します。この記事が皆さんのお役に立てれば幸いです。
システム: Ubuntu 16.04LTS (xenial)
バージョン: Percorna Server 5.7.21-20
インストール: 公式 Web サイトのチュートリアル
新しいファイルを作成します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
実行中のインスタンスを表示します
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" をスクリプトに追加し、パラメーター間のスペースに注意してください。
接続を確立した後、
. 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.logFAQ2018-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単一マシンのマルチインスタンス ソリューションの展開
LBOMP – MySQL の単一マシンのバックアップ監視ツール
以上がMySQL 単一マシンの複数インスタンスの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。