innobackup全备与恢复

前提:xtrabackup、mysql安装完成,建立测试库reading、测试表test,并插入三条数据。
1、全备:
     innobackupex --user=root --password=123  /backup/all
     则在/back/all下出现一个备份文件夹:/backup/all/2015-12-31_02-26-22/
     (在恢复时,注意要先关闭服务器,并且将 datadir 的目录先清空,在恢复数据后一定需要重置该目录的权限)
可以在备份时直接压缩以节约磁盘空间:
innobackupex --user=root --password=123 --stream=tar /backup/all  | gzip>/backup/all/compress/all_backup.tar.gz
不过注意解压需要手动进行,并加入 -i 的参数,否则无法解压出所有文件
tar zxfi /backup/all /compress/all_backup.tar.gz
innobackupex --user=root --password=123  --apply-log /backup/all/compress
innobackupex --user=root --password=123  --copy-back /backup/all/compress
2、关闭mysql服务,模拟恢复数据
     service mysql stop
     cd /mnt/data/mysql
     mv data data.bk
     innobackupex --user=root --password=123  --apply-log /backup/all/2015-12-31_02-26-22/
     innobackupex --user=root --password=123 --copy-back /backup/all/2015-12-31_02-26-22/
     innobackupex --incremental /backup/incrememtalbackup/2015-12-31_04-30-07/ --incremental-basedir=/backup/all/2015-12-31_02-26-22/
3、修改回复的数据文件权限:
     cd /mnt/data/mysql
     chown -R mysql.mysql /mnt/data/mysql/data
4、启动mysql服务,登录mysql,检查数据:
     service mysql start
     mysql -uroot -p123
     mysql>select * from reading.test;
     

转载于:https://www.cnblogs.com/lizhi221/p/6814139.html

<think>好的,用户让我介绍一下innobackup的备份恢复步骤,首先我得确定用户指的是Percona的XtraBackup工具中的innobackupex命令,因为之前这个命令是常用的,不过现在新版本可能已经被xtrabackup替代了,但用户可能还在用旧版或者习惯用innobackupex这个名称。需要确认一下,但可能用户需要的是基本的步骤,所以先按照传统的方式介绍。 用户可能是一个数据库管理员或者开发人员,需要了解如何使用这个工具来备份和恢复MySQL或MariaDB数据库。他们的使用场景可能是在生产环境中进行定期备份,或者在系统故障后恢复数据。需要确保步骤清晰,避免数据丢失,所以必须强调关键点,比如备份前的权限检查,恢复前的准备步骤,以及恢复后的数据验证。 接下来,我需要回忆innobackupex的基本流程。备份步骤通常包括全量备份和可能的增量备份,恢复则需要先应用日志,然后准备备份,最后将数据复制回数据库目录。需要注意的是,在恢复过程中,数据库必须处于停止状态,否则可能会导致数据不一致。 可能用户还不太了解全量备份和增量备份的区别,是否需要简单说明?但用户的问题直接问步骤,可能已经有基本了解,所以保持步骤简洁。另外,恢复时可能需要调整配置文件,比如datadir的位置,或者文件权限问题,这也是常见的问题点,需要提醒用户注意。 需要确保每一步的命令正确,比如全量备份使用innobackupex --user=... --password=... /backup/,而准备阶段使用--apply-log,恢复时使用--copy-back。同时,要提到在恢复后修改文件权限为mysql用户,因为备份文件可能属于root,导致数据库无法启动。 另外,是否需要提到增量备份的步骤?用户可能只需要基础的全量备份恢复,但如果有时间的话,可以简要说明增量备份的使用,这样回答更全面。但考虑到问题没有特别提到增量,可能优先全量备份的流程。 需要检查是否有常见的错误点需要提示,例如确保备份目录的空间足够,备份期间数据库是否允许有写操作(因为XtraBackup支持热备份),恢复前必须停止数据库服务,以及备份和恢复命令的正确参数顺序。 最后,总结关键步骤,确保用户能够按照步骤操作,并提醒测试备份的重要性,在生产环境操作前进行演练,避免数据丢失。</think>以下是使用 **innobackupex**(Percona XtraBackup 工具的一部分)进行 MySQL/MariaDB 数据库备份恢复的基本步骤。该工具支持在线热备份(不锁表),适用于 InnoDB/XtraDB 引擎。 --- ### **一、备份步骤** #### 1. **全量备份** ```bash innobackupex --user=数据库用户名 --password=数据库密码 --no-timestamp /备份目录路径/全量备份文件夹名 ``` - 示例: ```bash innobackupex --user=root --password=123456 --no-timestamp /backup/full_backup ``` - **关键参数**: - `--no-timestamp`:禁止自动生成时间戳子目录,直接使用指定文件夹名。 - 备份完成后,检查输出末尾的 `completed OK!` 确保备份成功。 #### 2. **增量备份(可选)** ```bash innobackupex --user=用户名 --password=密码 --incremental /增量备份目录 --incremental-basedir=全量备份目录 ``` - **说明**: - `--incremental-basedir` 指向基准备份(全量或上一次增量备份的目录)。 - 可多次执行增量备份,每次基于前一次备份。 --- ### **二、恢复步骤** #### 1. **合并备份数据(Prepare)** - **全量备份恢复**: ```bash innobackupex --apply-log /全量备份目录 ``` - **含增量备份恢复**: ```bash # 先合并全量备份 innobackupex --apply-log --redo-only /全量备份目录 # 再依次合并增量备份 innobackupex --apply-log --redo-only /全量备份目录 --incremental-dir=/增量备份目录1 innobackupex --apply-log --redo-only /全量备份目录 --incremental-dir=/增量备份目录2 ... ``` - **关键参数**: - `--apply-log`:应用事务日志,使备份数据一致。 - `--redo-only`:仅重做已提交事务(合并增量时必须使用)。 #### 2. **停止数据库服务** ```bash systemctl stop mysqld # 或 mariadb ``` #### 3. **清空数据目录** ```bash rm -rf /var/lib/mysql/* ``` #### 4. **复制备份到数据目录** ```bash innobackupex --copy-back /全量备份目录 ``` - 确保目标目录(如 `/var/lib/mysql`)为空且权限正确。 #### 5. **修改文件权限** ```bash chown -R mysql:mysql /var/lib/mysql ``` #### 6. **启动数据库服务** ```bash systemctl start mysqld ``` --- ### **三、关键注意事项** 1. **权限路径**: - 确保备份目录有足够空间,且运行命令的用户有读写权限。 - 恢复时,MySQL 数据目录(如 `/var/lib/mysql`)必须为空。 2. **版本兼容性**: - XtraBackup 版本需 MySQL/MariaDB 版本匹配([官方文档](https://www.percona.com/doc/percona-xtrabackup))。 3. **验证备份**: - 恢复前建议在测试环境验证备份完整性。 --- ### **四、示例流程(全量+增量)** ```bash # 全量备份 innobackupex --user=root --password=123456 --no-timestamp /backup/full # 第一次增量备份 innobackupex --user=root --password=123456 --incremental /backup/inc1 --incremental-basedir=/backup/full # 准备恢复(合并) innobackupex --apply-log --redo-only /backup/full innobackupex --apply-log --redo-only /backup/full --incremental-dir=/backup/inc1 # 停止数据库恢复 systemctl stop mysqld rm -rf /var/lib/mysql/* innobackupex --copy-back /backup/full chown -R mysql:mysql /var/lib/mysql systemctl start mysqld ``` 通过以上步骤,可高效完成数据库的备份恢复。建议结合定时任务(如 crontab)实现自动化备份。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值