首頁 > 資料庫 > mysql教程 > 詳細介紹mysql針對單張表的備份與還原的範例程式碼

詳細介紹mysql針對單張表的備份與還原的範例程式碼

黄舟
發布: 2017-03-18 13:55:35
原創
1261 人瀏覽過

下面小編就為大家帶來一篇淺談mysql 針對單張表的備份與還原。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

A、MySQL 備份工具xtrabackup 的安裝

1. percona 官方xtrabackup 的二進位版本;二進位版本解壓縮就能用了。

2. 解壓縮xtrabackup & 建立連線

tar -xzvf percona-xtrabackup-2.3.4-
Linux
-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/percona-xtrabackup-2.3.4 /usr/local/xtrabackup
登入後複製

3. 設定PATH環境變數
##

export PATH=/usr/local/xtrabackup/bin/:$PATH
登入後複製

#B、在mysql資料庫中建立一個使用者備份的使用者& 授權

#1. 建立使用者

    create user backuper@'localhost' ident
if
ied by 'backup123';
        create user backuper@'127.0.0.1' identified by 'backup123';
登入後複製

2. 授權

grant reload,lock tables,replication client,process,
super
 on *.* to 'backuper'@'localhost';
        grant create,insert,select on percona_schema.xtrabackup_history to 'backuper'@'localhost';
        grant reload,lock tables,replication client,process,super on *.* to 'backuper'@'127.0.0.1';
        grant create,insert,select on percona_schema.xtrabackup_history to 'backuper'@'127.0.0.1';
登入後複製

C、備份前的檢查,這一步的主要目地是在之後做還原作業時,驗證還原是不是有效;(生產是沒有這一步驟的,

1.

select * from tempdb.dictmajor;   
select * from dictmajor;
        +--------------+-----------------+        
        | column_value | column_mean     |        
        +--------------+-----------------+        
        |            1 | 汉语言文学      |        
        |            2 | 精算            |        
        |            3 | 生物制药        |        
        |            4 | 材料化学        |        
        |            5 | 商务英语        |        
        |            6 | 考古            |        
        |            7 | 外交            |        
        |            8 | 导游            |        
        +--------------+-----------------+
登入後複製

D、備份tempdb.dictmajor 表

#1. 備份指令

innobackupex --host=127.0.0.1 --user=backuper --password=backup123 --port=3306 --include='tempdb.dictmajor' /tmp/tempdb
登入後複製

#2. 備份完成後會在備份目錄(/tmp/tempdb) 下產生目前時間命名的目錄,裡面保存的是備份檔案

   tree /tmp/tempdb/
        /tmp/tempdb/
        └── 2016-09-10_18-25-16
            ├── backup-my.cnf
            ├── ibdata1
            ├── tempdb
            │   ├── dictmajor.frm
            │   └── dictmajor.ibd
            ├── xtrabackup_binlog_info
            ├── xtrabackup_checkpoints
            ├── xtrabackup_info
            └── xtrabackup_logfile
登入後複製

           


#E、備份完成後刪除E、備份完成後就可以刪除

刪除

tempdb.dictmajor表了(注意這裡一定要保存一份表的定義,還原時會用到)

mysql>drop table tempdb.dictmajor;
登入後複製
登入後複製

F、為了得到一個一致的備份集在還原作業前還要進行一次日誌的前滾和回滾

#1. 前滾&回滾日誌

innobackupex --apply-log --export /tmp/tempdb/2016-09-10_18-25-16/
登入後複製

2.  與前滾& 回滾前的比較

  tree /tmp/tempdb/
        /tmp/tempdb/
        └── 2016-09-10_18-25-16
            ├── backup-my.cnf
            ├── ibdata1
            ├── ib_logfile0
            ├── ib_logfile1
            ├── tempdb
            │   ├── dictmajor.cfg
            │   ├── dictmajor.exp
            │   ├── dictmajor.frm
            │   └── dictmajor.ibd
            ├── xtrabackup_binlog_info
            ├── xtrabackup_binlog_pos_innodb
            ├── xtrabackup_checkpoints
            ├── xtrabackup_info
            └── xtrabackup_logfile
登入後複製
            

##、還原tempdb.dictmajor表

1. 建立tempdb.dictmajor表

  create table dictmajor(
        column_value tinyint not null,
        column_mean varchar(32) not null,
        constraint pkdictmajor primary key (column_value));
登入後複製

2. 刪除tempdb.dictmajor的表空間檔

alter table tempdb.dictmajor discard tablespace;
登入後複製

3. 把備份中的表空間檔案複製到tempdb.dictmajor 表空間應該在的位置


   cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dictmajor.ibd /usr/local/mysql/data/tempdb/
        cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dictmajor.exp /usr/local/mysql/data/tempdb/
        cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dictmajor.cfg /usr/local/mysql/data/tempdb/
        chown -R mysql:mysql /usr/local/mysql/data/tempdb/*
登入後複製
       

4. 導入表空間檔案

alter table tempdb.dictmajor import tablespace;
登入後複製

#5. 檢視dictmajor表恢復情況

      select * from dictmajor;
        +--------------+-----------------+
        | column_value | column_mean     |
        +--------------+-----------------+
        |            1 | 汉语言文学      |
        |            2 | 精算            |
        |            3 | 生物制药        |
        |            4 | 材料化学        |
        |            5 | 商务英语        |
        |            6 | 考古            |
        |            7 | 外交            |
        |            8 | 导游            |
        +--------------+-----------------+
登入後複製

- -------------------------------------------------- ------------

上一節用的是xtrabackup 對錶進行備份,它的應用場景是單表的資料量大且在備份的過程中還要支持對錶的寫入操作;也就是說在目前的場景下mysqldump 這個簡單的

備份工具也是可以滿足要求的;現給出mysqldump 備份的一般步驟


A:創建備份用戶


1.       

  create user dumper@'127.0.0.1' identified by 'dumper123';
        grant select on *.* to dumper@'127.0.0.1';
        grant show view on *.* to dumper@'127.0.0.1';
        grant lock tables on *.* to dumper@'127.0.0.1';
        grant trigger on *.* to dumper@'127.0.0.1';
登入後複製
       


B:備份tempdb.dictmajor表

1.

mysqldump --host=127.0.0.1 --port=3306 --user=dumper --password=dumper123 --quick tempdb dictmajor >/tmp/tempdb.dictmajor.sql
登入後複製


##C: 刪除已備份的表

1.

mysql>drop table tempdb.dictmajor;
登入後複製
登入後複製

#D:還原tempdb.dictmajor表

1.

mysql -uroot -pxxxxx -h127.0.0.1 -p3306 tempdb </tmp/tempdb.dictmajor.sql
登入後複製

E:檢證還原的有效性

#########1.###select * from dictmajor;###
   +--------------+-----------------+
        | column_value | column_mean     |
        +--------------+-----------------+
        |            1 | 汉语言文学      |
        |            2 | 精算            |
        |            3 | 生物制药        |
        |            4 | 材料化学        |
        |            5 | 商务英语        |
        |            6 | 考古            |
        |            7 | 外交            |
        |            8 | 导游            |
        +--------------+-----------------+
登入後複製

以上是詳細介紹mysql針對單張表的備份與還原的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板