私はMySQLのデータベースのエイリアスを探す方法を探しています。その理由は、システムを停止させることなく、稼働中の本番データベースの名前を変更できるようにするためです。私はデータベースを新しい名前にエイリアスすることができ、私の余暇でそれに接続するコードを変更して展開し、最終的に古いエイリアスを削除することができます。MySQLでデータベースのエイリアスを設定するにはどうすればよいですか?
これを達成するためのより良い方法があれば教えてください。
私はMySQLのデータベースのエイリアスを探す方法を探しています。その理由は、システムを停止させることなく、稼働中の本番データベースの名前を変更できるようにするためです。私はデータベースを新しい名前にエイリアスすることができ、私の余暇でそれに接続するコードを変更して展開し、最終的に古いエイリアスを削除することができます。MySQLでデータベースのエイリアスを設定するにはどうすればよいですか?
これを達成するためのより良い方法があれば教えてください。
https://dev.mysql.com/doc/refman/5.7/en/symbolic-links-to-databases.htmlは
MySQLは複数のデータベースにディレクトリを1つのリンクをサポートしていませんと言います。
シンボリックリンクを使用して、データベースディレクトリを、たとえばdatadir以外の場所にリンクすることができます。
$ cd /var/lib/mysql
$ ln -s /other/dir/mydatabase .
しかし、あなたは別のMySQLデータベース用のデータベース・ディレクトリ「エイリアス」を作るためにシンボリックリンクを使用することはできません。
$ cd /var/lib/mysql
$ ln -s `pwd`/mydatabase1 mydatabase2 # WRONG
理由があるInnoDBは、独自の内部データベース名および他のメタデータを保持していることデータ・ディクショナリ。表領域ファイルに格納されます。あなたがそれを混乱させると、あなたが望むものを得ることができません。
MySQLにはデータベースのエイリアシングに関するDDL構文がありません。
Unixでは、データベースをシンボリックリンクする方法は、最初に空き領域があるディスク上にディレクトリを作成してから、MySQLデータディレクトリからソフトリンクを作成します。
shell> mkdir /dr1/databases/test
shell> ln -s /dr1/databases/test /path/to/datadir
MySQLは、1つのディレクトリを複数のデータベースにリンクすることをサポートしていません。データベースディレクトリをシンボリックリンクに置き換えることは、データベース間のシンボリックリンクを作成しない限り機能します。あなたがMySQLデータディレクトリにデータベースdb1があり、その後、DB1を指すシンボリックリンクdb2の作成:
shell> cd /path/to/datadir
shell> ln -s db1 db2
結果はということである、またはDB1に任意のテーブルのTBL_Aを、また表があるように見えますdb2のtbl_a。あるクライアントがdb1.tbl_aを更新し、別のクライアントがdb2.tbl_aを更新すると、問題が発生する可能性があります。この文を使用し、あなたのデータディレクトリの場所を決定するために
:
SHOW VARIABLES LIKE 'datadir';
出典:http://dev.mysql.com/doc/refman/5.1/en/symbolic-links.html
警告:MyISAM
テーブル
1)データディレクトリの場所を特定する:permisionsを修正)
ln -s current_db db_alias
4:
をecho "SHOW VARIABLES LIKE 'datadir';" | mysql -u root -p
2)あなたのデータディレクトリの場所に移動し、mysql
サービス停止:
sudo su
service mysql stop
cd path/to/datadir
3)ソフトリンクを作成します
chown -R mysql:mysql db_alias
5)スタートンmysql
:MySQLは内蔵の何かを持っていない場合
service mysql start
DBIのプロキシ機能は、使用のものであってもよい – jrockway
あなたは、私はPHPアプリをサポートしています学ぶためにぞっとします@jrockway。 – Schwern