Mysqldumpを使用してmysqlデータベースの完全なバックアップを作成するにはどうすればよいですか?バックアップを作成しているとき、指定したデータベースのテーブルがバックアップされるだけです。プロシージャと関数はそうではありません。
私が使用しているバックアップコマンドは次のとおりです。
(オペレーティングシステムはWindows Vistaです。)
mysqldump -u username -p db1 > backup.sql
バージョンに少し依存します。 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.
接続を中断せずに、すべてのデータベース、プロシージャ、ルーチン、およびイベントなどの完全バックアップを取得する場合:
mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
-A
すべてのデータベースに対して(--all-databases
)-R
すべてのルーチン(ストアドプロシージャとトリガー)-E
すべてのイベント--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
コマンドラインで。
これらのコマンドを使用してください:-
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
--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 ...
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サーバー内のすべてのデータベースの完全なバックアップを、現在の日時に指定されたファイルに作成します。
'-R'を使用してストアドプロシージャをバックアップしますが、データベースの変更中にデータベースの一貫したダンプが必要な場合は、--single-transaction
(innodbのみをバックアップする場合)または--lock-all-tables
(myisamテーブルも必要な場合)
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
ダンプを作成するには、以下の手順に従ってください
CMDを開き、MySQLをインストールしたbinフォルダーに移動します
ex:C:\ Program Files\MySQL\MySQL Server 8.0\bin。これで見たら
folder mysqldump.exeがあります。または、環境変数のパス変数に上記のフォルダーをセットアップしました。
これで、CMDでmysqldumpをヒットすると、CMDがダンプコマンドを識別できることがわかります。