[関連記事] _mysqlデータベースの名前を変更する方法の実用的な操作?

[関連記事] _mysqlデータベースの名前を変更する方法の実用的な操作?

[はじめに]

私たちは、InnoDBテーブルを使用してテスト・データベースのストレージエンジンの初期の開発時に作成した元のグループプロジェクトの開発のための需要が来た。このライブラリデータベース/スキーマのテーブルとインデックスの一部を保存するために、何のストアドプロシージャ、ビュー、トリガ、関数などではありません。類似した名前と生産ライブラリの名前、あまりにも敏感によると、次の名前を変更する必要があります。この需要はやるZage?

あなたが名前のデータベースethanDB用/スキーマを変更したい場合は、ts_db_01に改称します。

あなたのMysqlの下にいくつかの一般的なオブジェクトのクイックビュー:

  1. データベース/スキーマ
  2. テーブル
  3. 指数
  4. 表示/トリガ/関数/プロシージャ

手順は、
ライブラリはMyISAMストレージエンジンを使用している場合は、データベース・ディレクトリーMV缶に直接行くことができます。次のように
対応するフォルダ名の変更のMYISAMエンジンライブラリの名前を:

  1. 閉じるのmysqld
  2. データディレクトリのリネーム・ディレクトリDB_NAMEのnew_db_name
  3. オープンの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エンジンは、次のステップに分け:

  1. 新しいライブラリを作成します。
  2. すべてのテーブル上の元のデータベース・トリガーのバックアップ
  3. 使用Navicatはバックアップリポジトリインデックス/ビュー/関数/プロシージャ/イベントスクリプト
  4. 新しいデータベースに元のデータベースからテーブルをコピーし、リネーム表のコマンドを使用します
  5. 再作成トリガー2は、新しいデータベースに削除されます
  6. 新しいデータベースインデックス/ビュー/関数/プロシージャ/イベントなどに再作成

唯一のテーブルとインデックスは、本明細書で言及するので、それがあります

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

[概要]

  1. ここで使用されるように、迅速にスクリプトの方法はケース新しいライブラリを作成して、あなたはすぐに新しいライブラリを作成することができますが、唯一の関連テーブルのソースライブラリを作成するには、トリガ/インデックス/ビュー/関数/プロシージャ/イベントも再作成する必要があります。しかし、ではありませんテスト・ライブラリーを作成するための高速な方法があります。
  2. データベースを移行する場合は、mysqldumpをロジカル・スタンバイ、またはバックアップmysqlbackup物理的形状を使用することが示唆されました。

【参考】
https://blog.csdn.net/ghlfllz/article/details/8092068

もし助け、個人的なマイクロチャネルの公衆番号に注意してください歓迎し、「コーヒー和の心」

公開された54元の記事 ウォンの賞賛3 ビュー5758

おすすめ

転載: blog.csdn.net/db_murphy/article/details/101200851