使用 Xtrabackup 备份与恢复数据库

全量备份与恢复

这里对一个数据库进行全量备份:

# innobackupex --user=root --password=123 --no-timestamp --databases=wdroot /fullbackup</pre>

恢复步骤:
1. 应用事务日志到备份的文件中。

# innobackupex --apply-log --user-memory=1G  /fullbackup

2. 恢复数据到数据库目录中。(恢复前需要先确认/var/lib/mysql目录为空目录)

# innobackupex --datadir=/var/lib/mysql/ --copy-back /fullbackup

3. 恢复完成后更改文件属主属组,最后启动数据库服务。

# chown -R mysql.mysql /var/lib/mysql

增量备份与恢复

增量备份步骤:
1. 全量备份:

# innobackupex --user=root --password=123 --no-timestamp /fullbackup

2. 基于全量备份进行第一次增量备份:

# innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/fullbackup /backup/incre01

3. 在第一次增量备份的基础上进行第二次增量备份:

# innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/incre01 /backup/incre02

增量恢复步骤:
1. 应用完整备份事务日志到备份文件中。

# innobackupex --apply-log --redo-only /fullbackup

2. 将第一次增量备份应用到完整备份文件中。

# innobackupex --apply-log --redo-only --incremental-dir=/backup/incre01 /fullbackup

3. 将第二次增量备份应用到完整备份文件中。(恢复最后一个增量备份不需要redo-only参数)

# innobackupex --apply-log  --incremental-dir=/backup/incre02 /fullbackup

4. 最后整体进行一次应用事务日志。

# innobackupex --apply-log /fullbackup

5. 将备份数据恢复到数据库目录中。

# innobackupex --datadir=/var/lib/mysql/ --copy-back /fullbackup

6. 备份数据恢复完成后更改数据库目录中所有数据的属主属组,然后启动数据库。

# chown -R mysql.mysql /var/lib/mysql

如果要恢复到指定时间点,可以根据 xtrabackup_binlog_info 文件中 binlog 文件的位置借助 mysqlbinlog 命令读取 binlog 日志,将数据恢复到具体的时间点。

innobackupex 常用参数

--user=             #指定数据库备份的用户
--password=         #指定数据库备份的用户密码
--socket=           #指定socket文件位置
--defaults-file=    #指定my.cnf配置文件
--apply-log         #通过回滚未提交的事务及同步已经提交的事务至备份的数据文件中使备份数据文件处于一致性状态
--redo-only         #只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据
--copy-back         #将备份数据复制到数据库目录中,数据库目录要为空
--no-timestamp      #生成备份文件目录名不以时间戳命名
--stream=           #指定流的格式做备份,--stream=tar,将备份文件归档
--datadir=          #指定mysql实例的数据库文件所在路径
--user-memory=      #该选项和--apply-log选项一起使用,默认值100M
--slave-info        #对mysql slave进行备份的时候使用,会将master的binlog文件名和偏移量位置保存到xtrabackup_slave_info文件中
--safe-slave-backup #会暂停mysql slave的SQL线程直到没有打开的临时表的时候开始备份。备份结束后SQL线程会自动启动,目的主要是确保一致性的复制状态
--include=          #指定一个正则表达式,用来匹配要备份的数据库或者数据库的某些表
--tables-file=      #该选项的参数是指定一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename
--databases=        #备份指定数据库,多个空格隔开,不加此参数代表备份所有数据库
--incremental=      #说明创建的是一个增量备份,还需要跟着指定 --incremental-basedir
--incremental-basedir=   #增量备份的基准目录,也就是它的上次备份的备份文件的路径
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注