MySQLサーバー上のすべてのデータベース、ユーザーなどをバックアップしたいと思います。
このコマンドに触れましたが、mysqldump
このように使用できると思いますか? (リモートサーバーをローカルシステムにバックアップしようとしています)
mysqldump -h web-server.com -u root -p root --all-databases > "/backups/mysql/`date +%Y%m%d`.sql"
しかし:
何が起こっているのかほとんど知らずに実行するのは怖いです。 (私たちはMySQLデータベースに多くのデータを持っており、これを失うべきではありません!)したがって、最初の質問はこれが私が望む効果を得ることができるということです。リモートサーバー(場所など)にログインし、すべてのmysqlデータベースをローカルシステムのパスにバックアップしますか
web-server.com
?/backups/mysql
私はこれがMySQLサーバーの障害が発生した場合、各データベースのすべてのユーザー情報をそのまま維持するとは信じていません。ユーザー情報はMySQLデータベースに別のデータベースとして保存されていますか?それともサーバー自体の機能ですか?この場合、ユーザーデータを含むようにデータベースをバックアップする他の方法はありますか?
答え1
1)はい、これはすべてのデータベースの内容を一連のINSERT SQLコマンドにダンプすることによってmysql < backup.sql
。--all-databases
そして簡単に検索することはできません。
mysqldump
使用する他のオプションがあるかどうかを確認するには、マニュアルページを確認することをお勧めします。
2)ユーザー情報とアクセス制御はそれを含むmysql
データベースに保存されます。--all-databases
答え2
リモートで実行していて、各データベースに対して別々のダンプファイルが必要な場合は、mysqldump
バックアップするデータベースのリストを維持する必要があります。データベースサーバーでローカルで実行している場合は、データディレクトリ(たとえば)mysqldump
にあるデータベースを繰り返すことができます。リモートで実行する必要がある場合は、SSHを介して接続し、データベースのリストを取得してから、切断してデータベース名で実行するスクリプトを作成できます。mysql
/var/lib/mysql
mysqldump
mysqldump
--all-databases
単一のデータベース名を指定せずにそれを使用せず、そのオプションをさらに使用します--add-drop-database
。これには、データベースが存在しない場合はデータベースを作成するか、存在する場合はデータベースを削除して再生成するためのSQL文がダンプファイルに含まれます。からman 1 mysqldump
:
--add-drop-database
Add a DROP DATABASE statement before each CREATE DATABASE statement.
This option is typically used in conjunction with the --all-databases
or --databases option because no CREATE DATABASE statements are written
unless one of those options is specified.
これはデータベースサーバー上でローカルに実行するように設計された高速で汚れたスクリプトで、変数で指定されたデータベースをバックアップして$DB
各データベースのダンプファイルを生成します。また、15日以上前のダンプファイルも削除します。
#!/bin/sh
PATH=/bin:/usr/bin
DATE="`date +%Y%m%d`"
DB="mysql drupal drupaldev"
DUMP_DIR="/u01/mysql_dump"
for db in `echo $DB`
do
mysqldump -u root --password=password --databases --add-drop-database $db > $DUMP_DIR/$db.$DATE.dmp
gzip -9 $DUMP_DIR/$db.$DATE.dmp
find $DUMP_DIR/* -mtime +14 -exec rm -f '{}' \;
done