浅谈mysql 针对单张表的备份与还原
A、MySQL备份工具xtrabackup的安装
1.percona官方xtrabackup的二进制版本;二进制版本解压就能用了。
2.解压xtrabackup&创建连接
tar-xzvfpercona-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环境变量
exportPATH=/usr/local/xtrabackup/bin/:$PATH
B、在mysql数据库中创建一个用户备份的用户&授权
1.创建用户
createuserbackuper@'localhost'identifiedby'backup123';
createuserbackuper@'127.0.0.1'identifiedby'backup123';
2.授权
grantreload,locktables,replicationclient,process,superon*.*to'backuper'@'localhost';
grantcreate,insert,selectonpercona_schema.xtrabackup_historyto'backuper'@'localhost';
grantreload,locktables,replicationclient,process,superon*.*to'backuper'@'127.0.0.1';
grantcreate,insert,selectonpercona_schema.xtrabackup_historyto'backuper'@'127.0.0.1';
C、备份前的检查,这一步的主要目地是在之后做还原操作时,验证还原是不是有效;(生产是没有这一步的,
1.select*fromtempdb.dict__major;
select*fromdict__major;
+--------------+-----------------+
|column_value|column_mean |
+--------------+-----------------+
| 1|汉语言文学 |
| 2|精算 |
| 3|生物制药 |
| 4|材料化学 |
| 5|商务英语 |
| 6|考古 |
| 7|外交 |
| 8|导游 |
+--------------+-----------------+
D、备份tempdb.dict__major表
1.备份命令
innobackupex--host=127.0.0.1--user=backuper--password=backup123--port=3306--include='tempdb.dict__major'/tmp/tempdb
2.备份完成后会在备份目录(/tmp/tempdb)下生成用当前时间命名的目录,里面保存的就是备份文件
tree/tmp/tempdb/
/tmp/tempdb/
└──2016-09-10_18-25-16
├──backup-my.cnf
├──ibdata1
├──tempdb
│ ├──dict__major.frm
│ └──dict__major.ibd
├──xtrabackup_binlog_info
├──xtrabackup_checkpoints
├──xtrabackup_info
└──xtrabackup_logfile
E、备份完成后就可以删除tempdb.dict__major表了(注意这里一定要保存一份表的定义,还原时会用到)
mysql>droptabletempdb.dict__major;
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
│ ├──dict__major.cfg
│ ├──dict__major.exp
│ ├──dict__major.frm
│ └──dict__major.ibd
├──xtrabackup_binlog_info
├──xtrabackup_binlog_pos_innodb
├──xtrabackup_checkpoints
├──xtrabackup_info
└──xtrabackup_logfile
G、还原tempdb.dict__major表
1.创建tempdb.dict__major表
createtabledict__major(
column_valuetinyintnotnull,
column_meanvarchar(32)notnull,
constraintpk__dict__majorprimarykey(column_value));
2.删除tempdb.dict__major的表空间文件
altertabletempdb.dict__majordiscardtablespace;
3.把备份中的表空间文件复制到tempdb.dict__major表空间应该在的位置
cp/tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.ibd/usr/local/mysql/data/tempdb/
cp/tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.exp/usr/local/mysql/data/tempdb/
cp/tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.cfg/usr/local/mysql/data/tempdb/
chown-Rmysql:mysql/usr/local/mysql/data/tempdb/*
4.导入表空间文件
altertabletempdb.dict__majorimporttablespace;
5.查看dict__major表恢复情况
select*fromdict__major;
+--------------+-----------------+
|column_value|column_mean |
+--------------+-----------------+
| 1|汉语言文学 |
| 2|精算 |
| 3|生物制药 |
| 4|材料化学 |
| 5|商务英语 |
| 6|考古 |
| 7|外交 |
| 8|导游 |
+--------------+-----------------+
---------------------------------------------------------------
上一节用的是xtrabackup对表进行备份,它的应用场景是单表的数据量大且在备份的过程中还要支持对表的写操作;也就是说在目前的场景下mysqldump这个简单的
备份工具也是可以满足要求的;
现给出mysqldump备份的一般步骤
A:创建备份用户
1.
createuserdumper@'127.0.0.1'identifiedby'dumper123';
grantselecton*.*todumper@'127.0.0.1';
grantshowviewon*.*todumper@'127.0.0.1';
grantlocktableson*.*todumper@'127.0.0.1';
granttriggeron*.*todumper@'127.0.0.1';
B:备份tempdb.dict__major表
1.
mysqldump--host=127.0.0.1--port=3306--user=dumper--password=dumper123--quicktempdbdict__major>/tmp/tempdb.dict__major.sql
C:删除已经备份的表
1.
mysql>droptabletempdb.dict__major;
D:还原tempdb.dict__major表
1.
mysql-uroot-pxxxxx-h127.0.0.1-p3306tempdb
E:检证还原的有效性
1.
select*fromdict__major;
+--------------+-----------------+
|column_value|column_mean |
+--------------+-----------------+
| 1|汉语言文学 |
| 2|精算 |
| 3|生物制药 |
| 4|材料化学 |
| 5|商务英语 |
| 6|考古 |
| 7|外交 |
| 8|导游 |
+--------------+-----------------+
以上这篇浅谈mysql针对单张表的备份与还原就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。