下面小編就為大家帶來一篇淺談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 表
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
tempdb.dictmajor表了(注意這裡一定要保存一份表的定義,還原時會用到)mysql>drop table tempdb.dictmajor;
#1. 前滾&回滾日誌
innobackupex --apply-log --export /tmp/tempdb/2016-09-10_18-25-16/
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;
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 | 导游 | +--------------+-----------------+
- -------------------------------------------------- ------------
備份工具也是可以滿足要求的;現給出mysqldump 備份的一般步驟
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';
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:檢證還原的有效性
+--------------+-----------------+ | column_value | column_mean | +--------------+-----------------+ | 1 | 汉语言文学 | | 2 | 精算 | | 3 | 生物制药 | | 4 | 材料化学 | | 5 | 商务英语 | | 6 | 考古 | | 7 | 外交 | | 8 | 导游 | +--------------+-----------------+
以上是詳細介紹mysql針對單張表的備份與還原的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!