首页 > 其他分享 >xtrabackup实现全量+增量+binlog恢复库

xtrabackup实现全量+增量+binlog恢复库

时间:2023-10-08 10:01:13浏览次数:37  
标签:binlog -- root xtrabackup 全量 mysql backup localhost

#一、利用xtrabackup实现完全备份及还原 

1.下载并安装xtrabackup包 
[root@centos8 ~]#wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.23/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm
[root@localhost ~]# yum install -y percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm

2.安装mariadb数据库并启动服务
[root@localhost ~]# yum install -y mariadb-server
[root@localhost ~]# systemctl enable mariadb --now
[root@localhost ~]# mysql_secure_installation(初始化设置,设置root密码为123456,移除匿名用户等)

3.在原主机做完全备份到/backup目录
[root@localhost ~]# mkdir /backup
[root@localhost ~]# xtrabackup -uroot -p123456 --backup --target-dir=/backup/base
[root@localhost ~]# ls /backup/base/
backup-my.cnf  mysql               xtrabackup_checkpoints  xtrabackup_logfile
ibdata1        performance_schema  xtrabackup_info

4.目标主机无需创建/backup目录,直接复制目录本身
[root@centos7 ~]#scp -r /backup/ 目标主机:/backup1

5.删除数据库数据模拟目标主机
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# rm -rf /var/lib/mysql/*

6.还原数据
1)预准备:确保数据一致,提交完成的事务,回滚未完成的事务
[root@localhost ~]# xtrabackup --prepare --target-dir=/backup/base

2)复制到数据库目录
注意:数据库目录必须为空,MySQL服务不能启动
[root@localhost ~]# xtrabackup --copy-back --target-dir=/backup/base
[root@localhost ~]# ll /var/lib/mysql/
total 40976
-rw-r----- 1 root root 18874368 Nov  9 16:47 ibdata1
-rw-r----- 1 root root  5242880 Nov  9 16:47 ib_logfile0
-rw-r----- 1 root root  5242880 Nov  9 16:47 ib_logfile1
-rw-r----- 1 root root 12582912 Nov  9 16:47 ibtmp1
drwxr-x--- 2 root root     4096 Nov  9 16:47 mysql
drwxr-x--- 2 root root     4096 Nov  9 16:47 performance_schema
-rw-r----- 1 root root      440 Nov  9 16:47 xtrabackup_info
-rw-r----- 1 root root        1 Nov  9 16:47 xtrabackup_master_key_id

3)还原属性
[root@centos7 ~]#chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# ll /var/lib/mysql/
total 40976
-rw-r----- 1 mysql mysql 18874368 Nov  9 16:47 ibdata1
-rw-r----- 1 mysql mysql  5242880 Nov  9 16:47 ib_logfile0
-rw-r----- 1 mysql mysql  5242880 Nov  9 16:47 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Nov  9 16:47 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Nov  9 16:47 mysql
drwxr-x--- 2 mysql mysql     4096 Nov  9 16:47 performance_schema
-rw-r----- 1 mysql mysql      440 Nov  9 16:47 xtrabackup_info
-rw-r----- 1 mysql mysql        1 Nov  9 16:47 xtrabackup_master_key_id

4)启动服务
[root@centos7 ~]#systemctl start  mariadb

7.验证数据恢复成功
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)


#二、完全,增量+binlog还原
#完全备份
[root@centos7 ~]#yum install -y percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm
[root@centos7 ~]#mkdir /backup/
[root@centos7 ~]#xtrabackup -uroot -p123456 --backup --target-dir=/backup/base
#新增数据
MariaDB [(none)]> create database testdb
    -> ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+
4 rows in set (0.00 sec)

#第一次增量备份
[root@localhost ~]# xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base

#第二次新增数据
MariaDB [(none)]> create database testdb2
    -> ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
| testdb2            |
+--------------------+
5 rows in set (0.00 sec)

#第二次增量备份
[root@localhost ~]# xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

#二次增量备份后查看二进制位置,防止二次备份后再次有少量数据写入,这时就需要二进制日志来恢复数据
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       1645 |
+--------------------+-----------+
1 row in set (0.00 sec)

#第二次增备后新增数据:
MariaDB [(none)]> create database testdb3
    -> ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
| testdb2            |
| testdb3            |
+--------------------+
6 rows in set (0.00 sec)
#拷贝binlog日志留作恢复
[root@localhost mysql]# cp -p /var/lib/mysql/mariadb-bin.000001  /backup/


#拷贝到还原主机
 [root@localhost ~]#scp -r /backup/ 目标主机:/backup/
#备份过程生成三个备份目录
/backup/{base,inc1,inc2} 

#数据还原过程:(数据库未启动状态)
1)预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务
[root@localhost ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base
2)合并第1次增量备份到完全备份
[root@localhost ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1
3)合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only
[root@localhost ~]#xtrabackup --prepare --target-dir=/backup/base --incrementaldir=/backup/inc2
4)复制到数据库目录,注意数据库目录必须为空,MySQL服务不能启动
[root@localhost ~]#xtrabackup --copy-back --target-dir=/backup/base
5)还原属性: 
[root@localhost ~]# chown -R  mysql:mysql /var/lib/mysql/
 6)启动服务:
[root@localhost ~]# systemctl start mariadb

#截至第二次增备的数据都已经恢复,但是第二次增备后原数据库还有可能会写入数据,最后的少量数据使用binlog恢复
[root@localhost mysql]# cat /backup/inc2/xtrabackup_binlog_info
mariadb-bin.000001      1645
#查看二进制文件,从1645开始,并导入到sql文件
[root@localhost ~]# mysqlbinlog  /backup/mariadb-bin.000001 --start-position=1645 >/backup/binlog.sql

#临时关闭binlog记录功能,导入sql文件,再开机binlog功能
MariaDB [(none)]> set sql_log_bin=0;
MariaDB [(none)]> source /backup/binlog.sql
MariaDB [(none)]> set sql_log_bin=1;
#验证
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| testdb             |
| testdb2            |
| testdb3            |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)

标签:binlog,--,root,xtrabackup,全量,mysql,backup,localhost
From: https://www.cnblogs.com/tanll/p/17748201.html

相关文章

  • xtrabackup实现全量+增量+binlog恢复mariadb数据库
     #一、利用xtrabackup实现完全备份及还原1.下载并安装xtrabackup包[root@centos8~]#wgethttps://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.23/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm......
  • Llama2-Chinese项目:3.1-全量参数微调
      提供LoRA微调和全量参数微调代码,训练数据为data/train_sft.csv,验证数据为data/dev_sft.csv,数据格式如下所示:"<s>Human: "+问题+"\n</s><s>Assistant: "+答案  举个例子,如下所示:<s>Human: 用一句话描述地球为什么是独一无二的。</s><s>Assistant: 因为地球是目前为止......
  • Centos yum 下载全量依赖 rpm 包及离线安装
    简介通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。源码编译耗费时间长且缺乏编译环境,所以一般都选择使用离线rpm包安装。操作系统Centos7.9查看依赖包可以使用“yumdeplist”命令来查找rpm包的依赖列表。例如......
  • XtraBackup下载和卸载
    XtraBackup可以从官方链接https://www.percona.com/downloads/XtraBackup/LATEST/下载你需要的稳定版本。这个链接也提供PerconaXtraBackupDocumentation相关文档下载。下载的时候,注意版本与平台信息。XtraBackup卸载1:aptpackages安装方式的卸载   #sudoapt-getremovep......
  • MySQL三大日志(binlog、redo log和undo log)详解
    硬核干货!一文掌握binlog、redolog、undolog(qq.com)MySQL日志:undolog、redolog、binlog(qq.com)MySQL三大日志(binlog、redolog和undolog)详解|JavaGuide(Java面试+学习指南)MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其......
  • mysql8关闭binlog并清空Binlog
    编辑my.ini或者my.cnf文件清空binlog信息#查看现存的binlog文件列表showmasterlogs;#重置清空binlog文件resetmaster;#重置清空后重新查看现存的binlog文件列表是否都被清空了showmasterlogs;停用binlog功能为啥要关闭binlog功能呢?是因为反正是个测试服务器,......
  • MySQL binlog日志总结
    概念描述binlog日志:binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。binlog可用于实时备份,主从复制master->slave的数据同步。知识总结binlog相关参数:log_bin:#开启binlog参数,可以指定......
  • xtrabackup8安装并部署主从
    环境:OS:Centos7xtrabackup:8.0.28mysql:8.0.281.下载xtrabackup-8.0.282.安装解压[root@host135soft]#tar-xvfpercona-xtrabackup-8.0.28-21-Linux-x86_64.glibc2.17.tar.gz[root@host135soft]#mvpercona-xtrabackup-8.0.28-21-Linux-x86_64.glibc2.17/opt/xtrabackup-8......
  • 【MySQL 8.0】通过mysqlbinlog实现binlog文件的远程同步
    mysqlbinlog会伪装成一个slave,连接master请求指定的binlogfile,master接收到这个请求之后创建一个binlogdump线程推送binlog给伪装的slave。[mysql@node01~]$mysql-uroot-pabcd.1234-hnode01(root@node01)>createuserrepl@'%'identifiedby'repl';QueryOK,0ro......
  • xtrabackup支持的压缩算法的变化
    最近在debain11中尝试使用xtrabackupversion8.0.32-26备份MySQL的时候,发现debain11中很难找到qpress的安装包。顺便看了一下xtrabackup支持的压缩算法。查看xtrabackupversion8.0.32-26的帮助信息:--compress[=name]Compressindividualbackupfilesusingthespecifie......