mysqldumpコマンドラインユーティリティを使用してmysqlデータベースの完全バックアップを作成する方法

2009年07月03日に質問されました。  ·  閲覧回数 170.4k回  ·  ソース

MySQL DBA picture
2009年07月03日

mysqldumpを使用してmysqlデータベースの完全バックアップを作成するにはどうすればよいですか? バックアップを作成しているとき、指定されたデータベースのテーブルはバックアップされるだけです。 手順と機能はそうではありません。

これが私が使用しているバックアップコマンドです:
(オペレーティングシステムはWindows Vistaです。)

mysqldump -u username -p db1 > backup.sql

回答

NarasimhaTejaJ picture
2014年12月10日
85

接続を中断せずに、すべてのデータベース、プロシージャ、ルーチン、およびイベントなどの完全バックアップを作成する場合:

mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
  1. -Aすべてのデータベース( --all-databases使用することもできます)
  2. -Rすべてのルーチン(ストアドプロシージャとトリガー)
  3. -Eすべてのイベント
  4. --single-transactionテーブルをロックせずに、つまり接続(R / W)を中断せずに。

指定されたデータベースのみのバックアップを取りたい場合:

mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql

データベース内の特定のテーブルのみのバックアップを取りたい場合:

mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql

データベース構造のバックアップを取りたい場合は、前のコマンドに--no-dataを追加するだけです。

mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql

mysqldumpはさらに多くのオプションがあり、それらはすべてmysqldumpドキュメントに記載されているか、コマンドラインでman mysqldumpを実行することによって文書化されています。

Knut Haugen picture
2009年07月03日
17

それはあなたのバージョンに少し依存します。 5.0.13より前では、これはmysqldumpでは不可能です。

mysqldumpのマニュアルページ(v 5.1.30)から

 --routines, -R

      Dump stored routines (functions and procedures) from the dumped
      databases. Use of this option requires the SELECT privilege for the
      mysql.proc table. The output generated by using --routines contains
      CREATE PROCEDURE and CREATE FUNCTION statements to re-create the
      routines. However, these statements do not include attributes such
      as the routine creation and modification timestamps. This means that
      when the routines are reloaded, they will be created with the
      timestamps equal to the reload time.
      ...

      This option was added in MySQL 5.0.13. Before that, stored routines
      are not dumped. Routine DEFINER values are not dumped until MySQL
      5.0.20. This means that before 5.0.20, when routines are reloaded,
      they will be created with the definer set to the reloading user. If
      you require routines to be re-created with their original definer,
      dump and load the contents of the mysql.proc table directly as
      described earlier.
ajay singh mittal picture
2011年11月24日
15

これらのコマンドを使用してください:-

mysqldump <other mysqldump options> --routines > outputfile.sql

ストアドプロシージャとトリガーのみをバックアップし、mysqlテーブルとデータはバックアップしない場合は、次のように実行する必要があります。

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql

それらを別のデータベース/サーバーにインポートする必要がある場合は、次のようなものを実行する必要があります。

mysql <database> < outputfile.sql
jonfm picture
2013年01月16日
5

--routinesフラグに加えて、ストアドプロシージャを読み取るためのアクセス許可をバックアップユーザーに付与する必要があります。

GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup host>;

バックアップユーザーに対するGRANT特権の最小限のセットは次のとおりです。

GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
sunil picture
2015年11月30日
3

MySQL5.5.40を使用しています。 このバージョンにはオプション--all-databases

mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql

このコマンドは、MySQLサーバー内のすべてのデータベースの完全なバックアップを現在の日時に指定されたファイルに作成します。

Vitaly Kushner picture
2009年08月23日
2

'-R'を使用してストアドプロシージャをバックアップしますが、データベースの変更中にデータベースの一貫したダンプが必要な場合は、 --single-transaction (innodbのみをバックアップする場合)または--lock-all-tablesを使用する必要があることにも注意してください。

M. Hamza Rajput picture
2019年04月16日
0

MySQL 5.7では、CentOS7を使用しています。

ダンプを取るため。

コマンド:

mysqldump -u user_name -p database_name -R -E > file_name.sql

例:

mysqldump -u root -p mr_sbc_clean -R -E > mr_sbc_clean_dump.sql

ダンプを展開するため。

コマンド:

mysql -u user_name -p database_name < file_name.sql

例:

mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql
Rahul Maurya picture
2019年08月09日
0

ダンプを作成するには、以下の手順に従います。

  1. CMDを開き、MySQLをインストールしたbinフォルダーに移動します
    例:C:\ ProgramFiles \ MySQL \ MySQL Server8.0 \ bin。 あなたがこれを見れば
    フォルダmysqldump.exeがそこにあります。 または、環境変数のパス変数に上記のフォルダーを設定しました。

  2. これで、CMDでmysqldumpを押すと、CMDがダンプコマンドを識別できることがわかります。

  3. ここで、「 mysqldump -h [host] -P [port] -u [username] -p --skip-triggers --no-create-info --single-transaction --quick --lock-tables = falseABC_databse>を実行します。 c:\ xyz.sql "
  4. 上記のコマンドはパスワードの入力を求め、処理を開始します。