MySQL 単一マシンの複数インスタンスの共有
単一マシン上で複数のインスタンスを実現することは、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" をスクリプトに追加し、パラメーター間のスペースに注意してください。
接続を確立した後、
. 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

MySQLがテーブル構造を変更すると、メタデータロックが通常使用され、テーブルがロックされる可能性があります。ロックの影響を減らすために、次の測定値をとることができます。1。オンラインDDLでテーブルを使用できます。 2。バッチで複雑な変更を実行します。 3.小規模またはオフピーク期間中に操作します。 4. PT-OSCツールを使用して、より細かい制御を実現します。

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLは、複数の同時接続を処理し、マルチスレッド/マルチプロセスを使用して、各クライアントのリクエストに独立した実行環境を割り当てて、邪魔されないことを確認できます。ただし、同時接続の数は、システムリソース、MySQL構成、クエリパフォーマンス、ストレージエンジン、ネットワーク環境の影響を受けます。最適化では、コードレベル(効率的なSQLの書き込み)、構成レベル(MAX_Connectionの調整)、ハードウェアレベル(サーバー構成の改善)などの多くの要因を考慮する必要があります。

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。
