MySQL | MySQLデータベースシステム(4)-データベースのバックアップとリカバリ

MySQL | MySQLデータベースシステム(4)-データベースのバックアップとリカバリ

はじめに
日常業務において、データのバックアップは、実際には情報セキュリティ管理の重要なタスクの1つです。そのため、この記事ではデータベースのバックアップとリカバリを紹介します。MySQLデータベースを同時にバックアップする方法は複数あります。まず、データベースフォルダ/ etc / local / mysql / dataを直接パッケージ化するか、バックアップ用のツールを使用できます。

1.バックアップデータベース
は、mysqldumpコマンドを使用して、指定されたライブラリ、指定されたテーブル、またはライブラリ全体をSQLスクリプトとしてエクスポートできますMySQLサーバーをアップグレードする必要がある場合は、元のライブラリ情報をエクスポートしてから、アップグレードしたMySQLサーバーに直接インポートできます。


コマンドmysqldumpexport dataを使用するときにエクスポートを実行します。デフォルトは、ターミナルに直接表示されます。ファイルに保存する場合は、>リダイレクト出力操作も組み合わせる必要があります。

基本的な構文形式
1)指定されたライブラリのテーブルの一部をエクスポートします。

mysqldump [オプション]ライブラリ名[テーブル名1] [テーブル名2]···> /バックアップパス/バックアップファイル名
2)すべてのテーブルを含む1つ以上の完全なライブラリをエクスポートします。

mysqldump [オプション]-databasesライブラリ名1 [ライブラリ名2]···> / backup path / backup file name
3)MySQLサーバー内のすべてのデータベースをバックアップします

mysqldump [オプション]-all-databases> / backup path / backup file name
一般的に使用されるオプションには、データベースのユーザー名とパスワードを指定するために使用される-u、-pが含まれます。

上記の基本構文形式1は、MySQLライブラリのユーザーテーブルをmysql-user.sqlファイルとしてエクスポートするために使用され、基本構文形式2は、認証ライブラリ全体をauth.sqlファイルとしてエクスポートするために使用されます。 2つの基本的な構文形式での操作はどちらもrootユーザー認証を必要とします。


[root@localhost ~]# mysqldump -u root -p mysql user > mysql-user.sql
Enter password: 
[root@localhost ~]# mysqldump -u root -p --databases auth > auth.sql
Enter password: 

MySQLサーバー全体のすべてのライブラリをバックアップする場合は、上記の基本的な構文形式3を使用できます。エクスポートされるデータの量が多い場合は、オプション--optを追加して実行速度を最適化できます。

バックアップファイルall-data.sqlが作成され、MySQLサーバー内のすべてのライブラリが含まれます。


[root@localhost ~]# mysqldump -u root -p --opt --all-databases > all-data.sql
Enter password: 

バックアップファイルの内容を表示し
ます。mysqldumpツールによってエクスポートされたSQLスクリプトはテキストファイルであり/ ··· /または-の先頭の部分はコメント情報を示します。

grep、less、cat、およびその他のツールを使用して、詳細なスクリプトコンテンツを表示します。

auth.sqlスクリプトのデータベース操作ステートメントは除外されます。


[root@localhost ~]# grep -v "^--" auth.sql | grep -v "^/" | grep -v "^$"
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `auth` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `auth`;
DROP TABLE IF EXISTS `servers`;
CREATE TABLE `servers` (
  `Server_name` char(64) NOT NULL,
  `Host` char(64) NOT NULL,
  `Db` char(64) NOT NULL,
  `Username` char(64) NOT NULL,
  `Password` char(64) NOT NULL,
  `Port` int(4) DEFAULT NULL,
  `Socket` char(64) DEFAULT NULL,
  `Wrapper` char(64) NOT NULL,
  `Owner` char(64) NOT NULL,
  PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
LOCK TABLES `servers` WRITE;
UNLOCK TABLES;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `user_name` char(16) NOT NULL,
  `user_passwd` char(48) DEFAULT '',
  PRIMARY KEY (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `users` WRITE;
INSERT INTO `users` VALUES ('jacktian','*B2B366CA5C4697F31D4C55D61F0B17E70E5664EC');
UNLOCK TABLES;

2.データベースをリカバリするときに
、コマンドmysqlを使用してデータベースをインポートできます

基本構文


mysql [选项] [库名] [表名] < /备份路径/备份文件名

バックアップファイルにテーブルのバックアップのみが含まれ、ライブラリのステートメントが含まれていない場合は、インポート時にライブラリ名を指定する必要があり、ターゲットライブラリが存在する必要があります。

バックアップファイルmysql-user.sqlからテーブルをテストライブラリにインポートできます。


[root@localhost ~]# mysql -u root -p test < mysql-user.sql
Enter password: 
[root@localhost ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.5.22-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;                                   ## 验证导入结果
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)

mysql> 

完全なライブラリ情報がすでにバックアップファイルに含まれている場合は、インポート操作を実行するときにライブラリ名を指定する必要はなく、バックアップファイルauth.sqlから認証ライブラリを復元できます。


[root@localhost ~]# cd /usr/local/mysql/data/
[root@localhost data]# ls
auth     ib_logfile0  localhost.err  mongodb  mysql-bin.000001  mysql-bin.000003  mysql-bin.index  performance_schema
ibdata1  ib_logfile1  localhost.pid  mysql    mysql-bin.000002  mysql-bin.000004  mysql.error.log  test
[root@localhost data]# mv auth /tmp/                           ## 移动 auth 库,进行模拟故障操作。
[root@localhost data]# ls -ld auth
ls: 无法访问auth: 没有那个文件或目录
[root@localhost data]# mysql -u root -p < ~/auth.sql           ## 执行导入恢复操作。
Enter password: 
ERROR 1050 (42S01) at line 63: Table '`auth`.`users`' already exists
[root@localhost data]# ls -ld auth                             ## 确认恢复后的结果。
drwx------. 2 mysql mysql 4096 8月   1 05:17 auth
[root@localhost data]# 

おすすめ

転載: blog.51cto.com/15067236/2606202