设为首页 加入收藏

TOP

mysql数据备份三部曲(二)
2018-12-24 14:07:45 】 浏览:330
Tags:mysql 数据备份三部曲
to t1 values(3)

5)binlog恢复数据

思路:

使用mysqlbinlog提取历史sql操作

通过管道交给mysql命令执行

例子:

[root@mysql-50 mysqllog]# mysqldump -uroot -p123456 db2 < /data/db2.sql   #备份

mysql> insert into t2 values(11,'陈红',12);

mysql> update t2 set name='貂蝉' where id = 2;

mysql> drop database db2;    #删库

mysql> create database db2;

[root@mysql-50 mysqllog]# mysql -u root -p123456 db2 < /data/db2.sql

[root@mysql-50 mysqllog]# mysqlbinlog --start-position=296 --stop-position=1857 mysql.000001 | mysql -u root -p123456

5,部曲三

XtraBackup工具

一款强大的在线热备份工具

备份过程中不锁库表,适合生产环境,(备份到哪一行就锁哪一行)

由专业组织percona提供(改进mysql分支)

主要含有两个组件

Xtrabackup:c程序,支持innodb/xtradb

Innobackupex:以perl脚本封装xtrabackup,还支持myisam

提示:实际只有innodb存储引擎支持实时增量备份

1)安装软件包

[root@mysql-50 jluo]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm

[root@mysql-50 jluo]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

2)完全备份与恢复

格式:

Innobackupex 选项  路径

基本选项:

--host:主机名,不写默认本机地址

--user:用户名

--port:端口号,不写默认3306

--password:用户密码

--databases:数据库名 #=”库名”:单个库 =”库1 库2”:多个库 =”库.表”:单个表 不写默认备份所有库

--no-timestamp:不用日期命令备份文件存储的子目录名

--redo-only:日志合并

--apply-log:准备还原(回滚日志)

--copy-back:恢复数据

--incremental 目录名:指定增量备份目录(目录必须为空)

--incremental-basedir=目录名:增量备份时,指定上一次备份数据存储的目录名

--incremental-dir=目录名:准备恢复数据时,指定增量备份数据存储的目录名

--export:导出表信息

import:导出表空间

提示:

1,恢复全部数据库时要求数据库目录必须为空,恢复单个或多个数据库(数据表时不需要为空)

2,备份目录必须为空

例子:

1,备份

1)备份前查看数据库信息

mysql> show databases;    #备份前查看数据库信息

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

| Database |

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

| information_schema |

| db5 |

| mysql |

| performance_schema |

| stum |

| stusystem |

| sys |

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

7 rows in set (0.01 sec)

2)完全备份

[root@mysql-50 ~]# innobackupex --user root --password 123456 --no-timestamp /bak/alldir

3)向表里写数据增量备份

mysql> insert into db5.t1 values(1212);

mysql> insert into db5.t1 values(1212);

[root@mysql-50 ~]# innobackupex --user root --password 123456 --incremental /bak/new1dir --incremental-basedir=/bak/alldir --no-timestamp

4)再向表里写数据增量备份

mysql> insert into db5.t1 values(1313);

mysql> insert into db5.t1 values(1313);

[root@mysql-50 ~]# innobackupex --user root --password 123456 --incremental /bak/new2dir --incremental-basedir=/bak/new1dir --no-timestamp

[root@mysql-50 ~]# ls /bak/alldir/

backup-my.cnf mysql sys xtrabackup_logfile

db5 performance_schema xtrabackup_binlog_info

ib_buffer_pool stum xtrabackup_checkpoints

ibdata1 stusystem xtrabackup_info

[root@mysql-50 ~]# vim /bak/alldir/xtrabackup_checkpoints  #备份信息文件

backup_type = full-backuped #完全备份

from_lsn = 0 #lsn:日志序列号

to_lsn = 7002759

last_lsn = 7002768

compact = 0

recover_binlog_info = 0

[root@mysql-50 ~]# vim /bak//new1dir/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 7002759

to_lsn = 7005238

last_lsn = 7005247

compact = 0

recover_binlog_info = 0

[root@mysql-50 ~]# vim /bak/new2dir/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 7005238

to_lsn = 7005861

last_lsn = 7005870

compact = 0

recover_binlog_info = 0

2,恢复数据

步骤:

1,准备恢复数据

2,合并日志文件(同时也拷贝数据到主目录里)

3,把备份目录下数据拷贝到数据库目录下

4,修改数据库目录的所有者和组用户为mysql

5,启动数据库服务

例子:

[root@mysql-50 ~]# systemctl stop mysqld #停掉mysql

[root@mysql-50 ~]# rm -rf /var/lib/mysql #删掉数据库,模拟数据库损坏,要重新恢复数据

[root@mysql-50 ~]# mkdir /var/lib/mysql #新建数据库目录

[root@mysql-50 ~]# innobackupe

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇goldengate合并应用进程 下一篇mysql通过命令行创建表

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目