MySQLフルバックアップ/リカバリ
6310 ワード
MySQLフルバックアップ/リカバリ
≪フル・バックアップ|Full Backup|emdw≫:データベース全体のバックアップ、データベース構造、ファイル構造のバックアップで、完了時刻に備えたデータベースが保存され、インクリメンタル・バックアップの基礎となります.
mysqlデータベースのバックアップには、データベースが実際にファイルであるため、データベースフォルダを直接パッケージ化したり、専用バックアップツールmysqldumpを使用してバックアップ作業を行うことができます.
MySQLフルバックアップ
1.tarによるフォルダバックアップのパッケージング
MySQLのデータベースファイルは、デフォルトではインストールディレクトリのdataフォルダの下に保存され、直接dataフォルダを保存できますが、スペースが広く、tarパッケージ圧縮で保存できます.
(1)データベースファイルが大きく、圧縮率の高いxzフォーマットで圧縮できます.デフォルトでは、xz圧縮フォーマットツールをインストールする必要がない場合は、すでにあります.
(2)データベースフォルダ/usr/local/mysql/data/をパッケージングします.
(3)データベースファイルが破損してデータが失われた場合、バックアップファイルを解凍することができ、データ復旧の仕事をしたことに相当する.
2 mysqldumpツールを使用したバックアップ
先に紹介したMySQLのデータベースディレクトリ全体を圧縮する方法は、データベース内のすべてのコンテンツをバックアップすることです.mysqldupを使用すると、いくつかのテーブルやライブラリが個別にバックアップできるなど、バックアップの内容をより柔軟に制御できます.
(1)mysqldumpコマンドを使用してライブラリschoolのテーブルinfoをバックアップします.バックアップするファイルは/opt/info.sqlです.
(2)mysqldumpコマンドを使用して単一ライブラリを完全バックアップし、バックアップファイルは/opt/scoolである.sql.
(3)mysqldumpコマンドを使用して複数のライブラリをバックアップします.バックアップファイルは/opt/scool-mysql.sqlです.
(4)mysqldumpコマンドを使用してすべてのライブラリを完全にバックアップし、バックアップファイルはall.sqlです.
(5)mysqldumpコマンドを使用して、テーブル構造を直接バックアップすることもできます.バックアップファイルは/opt/desc-info.sqlです.
MySQL完全復旧
1.ライブラリ全体のリカバリ(1)まずライブラリschoolをバックアップする
(2)データが破損したと仮定し、データベースschoolを削除する.
(3)mysqlにログインせず、mysqlコマンドを使用してライブラリschoolを復元します.
ライブラリschoolが削除された場合、リカバリ操作のために作成する必要があります.そうしないと、エラーが発生します.
2.sourceコマンドを使用してテーブルをリカバリする(1)まずテーブルinfoをバックアップする
(2)データが破損したと仮定し、データベースschoolのテーブルinfoを削除する.
(3)mysqlにログインし、sourceコマンドを使用してテーブルを復元します.
(4)mysqlでのリカバリも可能
≪フル・バックアップ|Full Backup|emdw≫:データベース全体のバックアップ、データベース構造、ファイル構造のバックアップで、完了時刻に備えたデータベースが保存され、インクリメンタル・バックアップの基礎となります.
mysqlデータベースのバックアップには、データベースが実際にファイルであるため、データベースフォルダを直接パッケージ化したり、専用バックアップツールmysqldumpを使用してバックアップ作業を行うことができます.
MySQLフルバックアップ
1.tarによるフォルダバックアップのパッケージング
MySQLのデータベースファイルは、デフォルトではインストールディレクトリのdataフォルダの下に保存され、直接dataフォルダを保存できますが、スペースが広く、tarパッケージ圧縮で保存できます.
(1)データベースファイルが大きく、圧縮率の高いxzフォーマットで圧縮できます.デフォルトでは、xz圧縮フォーマットツールをインストールする必要がない場合は、すでにあります.
[root@localhost mysql]# yum install xz -y
(2)データベースフォルダ/usr/local/mysql/data/をパッケージングします.
[root@localhost mysql]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
mysql-2018-07-02.tar.xz rh // //
(3)データベースファイルが破損してデータが失われた場合、バックアップファイルを解凍することができ、データ復旧の仕事をしたことに相当する.
[root@localhost opt]# tar Jxvf /opt/mysql-2018-07-02.tar.xz /usr/local/mysql/data/
2 mysqldumpツールを使用したバックアップ
先に紹介したMySQLのデータベースディレクトリ全体を圧縮する方法は、データベース内のすべてのコンテンツをバックアップすることです.mysqldupを使用すると、いくつかのテーブルやライブラリが個別にバックアップできるなど、バックアップの内容をより柔軟に制御できます.
(1)mysqldumpコマンドを使用してライブラリschoolのテーブルinfoをバックアップします.バックアップするファイルは/opt/info.sqlです.
[root@localhost opt]# mysqldump -u root -p school info > /opt/info.sql
[root@localhost opt]# ls
info.sql mysql-2018-07-02.tar.xz
(2)mysqldumpコマンドを使用して単一ライブラリを完全バックアップし、バックアップファイルは/opt/scoolである.sql.
[root@localhost opt]# mysqldump -u root -p school > /opt/school.sql
Enter password: //root //
[root@localhost opt]# ls
info.sql mysql-2018-07-02.tar.xz rh school.sql
(3)mysqldumpコマンドを使用して複数のライブラリをバックアップします.バックアップファイルは/opt/scool-mysql.sqlです.
[root@localhost opt]# mysqldump -u root -p --databases school mysql > /opt/school-mysql.sql
[root@localhost opt]# ls
info.sql mysql-2018-07-02.tar.xz rh school-mysql.sql school.sql
(4)mysqldumpコマンドを使用してすべてのライブラリを完全にバックアップし、バックアップファイルはall.sqlです.
[root@localhost opt]# mysqldump -u root -p --all-databases > /opt/all.sql
[root@localhost opt]# ls
all.sql info.sql mysql-2018-07-02.tar.xz rh school-mysql.sql school.sql
(5)mysqldumpコマンドを使用して、テーブル構造を直接バックアップすることもできます.バックアップファイルは/opt/desc-info.sqlです.
[root@localhost opt]# mysqldump -u roou -p school info > /opt/desc-info.sql
[root@localhost opt]# ls
all.sql desc-info.sql info.sql mysql-2018-07-02.tar.xz rh school-mysql.sql school.sql
MySQL完全復旧
1.ライブラリ全体のリカバリ(1)まずライブラリschoolをバックアップする
[root@localhost opt]# mysqldump -u root -p school > /opt/school.sql
(2)データが破損したと仮定し、データベースschoolを削除する.
[root@localhost opt]# mysql -u root -p // mysql//
Enter password: // //
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.7.17 Source distribution
Copyright (c) 2000, 2016, 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> show databases; // //
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> drop database school; // school //
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
(3)mysqlにログインせず、mysqlコマンドを使用してライブラリschoolを復元します.
ライブラリschoolが削除された場合、リカバリ操作のために作成する必要があります.そうしないと、エラーが発生します.
[root@localhost opt]# mysql -u root -p
mysql> create database school; // //
Query OK, 1 row affected (0.00 sec)
mysql> quit // //
Bye
[root@localhost opt]# mysql -u root -p school < /opt/school.sql // school //
[root@localhost opt]# mysql -u root -p // mysql //
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.00 sec)
2.sourceコマンドを使用してテーブルをリカバリする(1)まずテーブルinfoをバックアップする
[root@localhost opt]# mysqldump -u root -p school info > /opt/info.sql
(2)データが破損したと仮定し、データベースschoolのテーブルinfoを削除する.
mysql> use school; // school //
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; // //
+------------------+
| Tables_in_school |
+------------------+
| info |
+------------------+
1 row in set (0.00 sec)
mysql> select * from info; // //
+----------+-------+
| name | score |
+----------+-------+
| zhangsan | 88.00 |
| lisi | 70.00 |
+----------+-------+
2 rows in set (0.00 sec)
mysql> drop table info; // info //
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
Empty set (0.00 sec) // //
(3)mysqlにログインし、sourceコマンドを使用してテーブルを復元します.
[root@localhost opt]# mysql -u root -p
mysql> use school; // //
mysql> source /opt/info.sql // info //
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| info |
+------------------+
1 row in set (0.00 sec)
mysql> select * from info;
+----------+-------+
| name | score |
+----------+-------+
| zhangsan | 88.00 |
| lisi | 70.00 |
+----------+-------+
2 rows in set (0.00 sec)
(4)mysqlでのリカバリも可能
[root@localhost opt]mysqldump -u root -p school info > /opt/school-info.sql // //
[root@localhost opt]mysql -u root -p school < /opt/school-info.sql // //