web-dev-qa-db-ja.com

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

Mysqldumpを使用してmysqlデータベースの完全なバックアップを作成するにはどうすればよいですか?バックアップを作成しているとき、指定したデータベースのテーブルがバックアップされるだけです。プロシージャと関数はそうではありません。

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

mysqldump -u username -p db1 > backup.sql
45
MySQL DBA

バージョンに少し依存します。 5.0.13以前では、これはmysqldumpでは不可能です。

Mysqldump manページ(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.
14
Knut Haugen

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

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 documentation で、またはman mysqldumpコマンドラインで。

73
NarasimhaTejaJ

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

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

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

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

別のdb/serverにインポートする必要がある場合は、次のように実行する必要があります。

mysql <database> < outputfile.sql
15

--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 ...
5
jonfm

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

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

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

2
sunil

'-R'を使用してストアドプロシージャをバックアップしますが、データベースの変更中にデータベースの一貫したダンプが必要な場合は、--single-transaction(innodbのみをバックアップする場合)または--lock-all-tables(myisamテーブルも必要な場合)

2
Vitaly Kushner

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
0
M. Hamza Rajput

ダンプを作成するには、以下の手順に従ってください

  1. CMDを開き、MySQLをインストールしたbinフォルダーに移動します
    ex:C:\ Program Files\MySQL\MySQL Server 8.0\bin。これで見たら
    folder mysqldump.exeがあります。または、環境変数のパス変数に上記のフォルダーをセットアップしました。

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

  3. mysqldump -h [ホスト] -P [ポート] -u [ユーザー名] -p --skip-triggers --no-create-info --single-transaction --quick --lock-tables」を実行します= false ABC_databse> c:\ xyz.sql "
  4. 上記のコマンドはパスワードを要求し、処理を開始します。
0
Rahul Maurya