[関連記事] _mysqlデータベースの名前を変更する方法の実用的な操作?
[はじめに]
私たちは、InnoDBテーブルを使用してテスト・データベースのストレージエンジンの初期の開発時に作成した元のグループプロジェクトの開発のための需要が来た。このライブラリデータベース/スキーマのテーブルとインデックスの一部を保存するために、何のストアドプロシージャ、ビュー、トリガ、関数などではありません。類似した名前と生産ライブラリの名前、あまりにも敏感によると、次の名前を変更する必要があります。この需要はやるZage?
あなたが名前のデータベースethanDB用/スキーマを変更したい場合は、ts_db_01に改称します。
あなたのMysqlの下にいくつかの一般的なオブジェクトのクイックビュー:
- データベース/スキーマ
- テーブル
- 指数
- 表示/トリガ/関数/プロシージャ
手順は、
ライブラリはMyISAMストレージエンジンを使用している場合は、データベース・ディレクトリーMV缶に直接行くことができます。次のように
対応するフォルダ名の変更のMYISAMエンジンライブラリの名前を:
- 閉じるのmysqld
- データディレクトリのリネーム・ディレクトリDB_NAMEのnew_db_name
- オープンのmysqld
しかし、本番環境で使用されるストレージエンジンは存在しない関連テーブルを促すメッセージが表示されます、InnoDBは、友人が試すことができますテストされています。
InnoDBストレージエンジンのデータベース/スキーマは、おそらく以下の三つの方法があります。
方法1:TO newdbname olddbname RENAMEデータベース
mysql> rename database ethandb to ts_db_02;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database ethandb to ethan' at line 1
注意:
コマンドが利用可能バージョン5.1.7は、5.1.23にあるので、これ以外の例外は、5.1.23はキャンセルされました。私はバージョン5.7.26でだから、コマンドが適用されません。
MySQLの> SELECT @@バージョン;
±------------------------------------------ +
| @@バージョン|
±------------------------------------------ +
| 5.7.26-エンタープライズ高度なログ・商業の|
±------------------------------------ + ------
セット内の1行(0.00秒)
方法2:使用mysqldumpを論理的なバックアップ方法
この方法のは、シンプルで効果的な、もちろん可能で、大きなヒットテーブルものの場合、時間がかかります。
方法3:独自のシェルスクリプトを書く
のInnoDBエンジンは、次のステップに分け:
- 新しいライブラリを作成します。
- すべてのテーブル上の元のデータベース・トリガーのバックアップ
- 使用Navicatはバックアップリポジトリインデックス/ビュー/関数/プロシージャ/イベントスクリプト
- 新しいデータベースに元のデータベースからテーブルをコピーし、リネーム表のコマンドを使用します
- 再作成トリガー2は、新しいデータベースに削除されます
- 新しいデータベースインデックス/ビュー/関数/プロシージャ/イベントなどに再作成
唯一のテーブルとインデックスは、本明細書で言及するので、それがあります
RENAME TABLE命令语法:
RENAME TABLE db_name.table1 TO new_db_name.table1, \
db_name.table2 TO new_db_name.table2;
コマンドによると、以下のようにcp_db_tables.shをスクリプト:
mysql -uroot -pmysql -h 192.168.0.112 -P 3308 -e \
'create database if not exists ts_db_01'
list_table=$(mysql -uroot -pmysql -h 192.168.0.112 -P 3308 \
-Nse "select table_name from information_schema.TABLES \
where TABLE_SCHEMA='ethandb'")
for table in $list_table
do
mysql -uroot -pmysql -h 192.168.0.112 -P 3308 \
-e "rename table ethandb.$table to ts_db_01.$table"
done
このスクリプトは、興味のある友人は、以下のリンクを表示することができ、個人のgithubのにアップロードされています:
https://github.com/polestarYang/mysqlgit/blob/master/cp_db_tables.sh
[概要]
- ここで使用されるように、迅速にスクリプトの方法はケース新しいライブラリを作成して、あなたはすぐに新しいライブラリを作成することができますが、唯一の関連テーブルのソースライブラリを作成するには、トリガ/インデックス/ビュー/関数/プロシージャ/イベントも再作成する必要があります。しかし、ではありませんテスト・ライブラリーを作成するための高速な方法があります。
- データベースを移行する場合は、mysqldumpをロジカル・スタンバイ、またはバックアップmysqlbackup物理的形状を使用することが示唆されました。
【参考】
https://blog.csdn.net/ghlfllz/article/details/8092068
もし助け、個人的なマイクロチャネルの公衆番号に注意してください歓迎し、「コーヒー和の心」