MySQLフルバックアップ/リカバリ


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 //  //