mysql之備份恢復

一、mysqldump備份操作測試:

1.準備對其進行備份操作的數據庫:

mysql> showtables;

+------------------+

|Tables_in_test   |

+------------------+

| a                |

| sales            |

| t                |

| t1               |

| t2               |

| t_hash           |

| t_linear_hash    |

| u                |

| usercash         |

| usercash_err_log |

+------------------+

10 rows in set (0.00sec)



2.先備份:

[root@Nginx ~]#mysqldump -u root -p test > /data/mysql/test.bk.sql

Enter password:



3.刪除數據庫:

mysql> showdatabases;

+--------------------+

| Database           |

+--------------------+

| information_schema|

| mysql              |

| performance_schema|

| test               |

|wordpress_nginx    |

+--------------------+

5 rows in set (0.00sec)


mysql> dropdatabase test;

Query OK, 10 rowsaffected (1.12 sec)


mysql> showdatabases;

+--------------------+

| Database           |

+--------------------+

| information_schema|

| mysql              |

| performance_schema|

|wordpress_nginx    |

+--------------------+

4 rows in set (0.00sec)


4.恢復數據庫:

[root@Nginx ~]#mysql -u root -p test < /data/mysql/test.bk.sql

Enter password:

ERROR 1049 (42000):Unknown database 'test'


刪除了數據庫之後想直接恢復會提示不存在該數據庫

那麼,我在恢復之前,先創建一個空的數據庫


mysql> createdatabase test;

Query OK, 1 rowaffected (0.07 sec)


mysql> showdatabases;

+--------------------+

| Database           |

+--------------------+

| information_schema|

| mysql              |

| performance_schema|

| test               |

|wordpress_nginx    |

+--------------------+

5 rows in set (0.03sec)


mysql> use test;

Database changed

mysql> showtables;

Empty set(0.00 sec)


可以觀察到,這是空的,那麼我們再來進行恢復數據庫。

[root@Nginx ~]#mysql -u root -p test < /data/mysql/test.bk.sql

Enter password:


再來觀察test數據庫:


mysql> use test;

Database changed

mysql> showtables;

Empty set (0.00 sec)


mysql> showtables;

+------------------+

|Tables_in_test   |

+------------------+

| a                |

| sales            |

| t                |

| t1               |

| t2               |

| t_hash           |

| t_linear_hash    |

| u                |

| usercash         |

| usercash_err_log |

+------------------+

10 rows in set (0.00sec)


mysql> select *from t

   -> ;

+------+------+

| a    | b   |

+------+------+

|    1 |   2 |

+------+------+

1 row in set (0.02sec)


可以看到,已經恢復到原來的樣子了。


二、冷備

冷備是指,停掉服務,只需要備份mysql數據庫的frm文件、共享表空間文件、獨立表空間文件(*ibd)、重做日誌文件。一般會對整個文件夾或目錄進行備份,即打包和壓縮


關閉服務:

[root@Nginx mysql]#service mysqld stop

Shutting downMySQL.. SUCCESS!


對數據庫目錄進行備份打包,並對備份目錄進行授權:

[root@Nginxmysql]# mkdir /databk


[root@Nginx databk]#chown mysql.mysql /databk/ -R


[root@Nginx databk]#tar -cvPzf mysql.tar.gz /data/mysql/


恢復數據庫:

[root@Nginx databk]#tar -xvPf mysql2.tar.gz


最後重新啓動服務,並檢查數據是否有丟失即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章