国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識庫 >  數據庫 >  數據庫管理 >  CentOS下如何從MySQL全備文件中恢復單個(gè)庫或者單個(gè)表

CentOS下如何從MySQL全備文件中恢復單個(gè)庫或者單個(gè)表

2017-12-16 22:52:05 7458

在MySQL dba的日常實(shí)際工作中,一個(gè)實(shí)例下有多個(gè)庫,而我們常見(jiàn)的備份就是全庫備份。那么問(wèn)題就來(lái)了,如果需要恢復單個(gè)庫或者單個(gè)表,怎么辦了,網(wǎng)上有很多人都有多種方法,今天,我自己結合眾多資料,將實(shí)踐記錄下來(lái),以便供參考。

基本情況介紹:

MySQL版本:mysql-5.5.36.tar.gz

操作系統:CentOS release 6.8 x64 (Final)

一、全庫備份

[root@pre ~]# cat backup.sh 
#!/bin/bash/home/mysql/mysql55_3310/bin/mysqldump --defaults-file=/usr/local/local.cnf -E --triggers -e --max_allowed_packet=16777216 --net_buffer_length=16384  --master-data=2 --single-transaction --all-databases --quick  | gzip >/home/dbbackup/all_database_bak_471_`date +%Y-%m-%d_%H_%M_%S`.sql.gz[root@pre ~]# cat /usr/local/local.cnf 
[client]host=localhost
port=3310user=root
password=123456socket=/home/mysql/mysql55_3310/data/mysql.sock[root@pre ~]# sh backup.sh

二、顯示當前庫

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || db_log             || db_users           || mysql              || performance_schema |+--------------------+5 rows in set (0.00 sec)
mysql> use db_log;Database changed
mysql> show tables;
Empty set (0.00 sec)

三、現在從全備文件中恢復db_log單個(gè)庫

# 從全備份文件中將需要的庫的建表語(yǔ)句和INSERT數據拿出來(lái),然后再導入

[root@pre ~]# sed -n '/^-- Current Database: `db_log`/,/^-- Current Database: `/p' all_database_bak_471_2017-12-04_15_36_38.sql > db_log.sql &# 導入庫中[root@pre ~]# /home/mysql/mysql55_3310/bin/mysql -uroot -p < db_log.sql &mysql> use db_log;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;+------------------------+| Tables_in_db_log       |+------------------------+| api_online_logs        || onlinegame             || onlinegame_gamestats   || onlinegame_playerstats || onlinegame_type        || osa_menu_url           || osa_module             || osa_quick_note         || osa_sys_log            || osa_system             || osa_user               || osa_user_group         || sample                 || user_online            || user_psw_audit         |+------------------------+15 rows in set (0.00 sec)

mysql> #  數據已經(jīng)恢復了

四、現在模擬恢復單個(gè)表的數據

# 先刪除一個(gè)表: user_online

mysql> drop table user_online;
Query OK, 0 rows affected (0.01 sec)

# 1、從全備份中提取出該表的建表語(yǔ)句[root@pre ~]# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `user_online`/!d;q' all_database_bak_471_2017-12-04_15_36_38.sql > user_online.sql &# 2、提取該表的insert into語(yǔ)句[root@pre ~]# grep -i 'INSERT INTO `user_online`'  all_database_bak_471_2017-12-04_15_36_38.sql >> user_online.sql & # 3、導入到對應的庫中[root@pre ~]# /home/mysql/mysql55_3310/bin/mysql -uroot -p <user_online.sql & # 4、查看數據
mysql> select count(*) from user_online;+----------+| count(*) |+----------+|        9 |+----------+1 row in set (0.01 sec)

# 已經(jīng)恢復完畢


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->