xtrabackup实现热备

2023-07-13 15:56:54 浏览数 (3)

备份:

  • 物理备份:需要拷贝原库的配置文件(my.cnf),数据文件,日志,系统数据库(/var/lib/mysql/mysql)到新的目标环境,修改相应目录的权限,启动新数据库即可
  • xtrabackup:可以实现mysql增量热备,通过全备的基础上去对改动的数据进行备份来提高备份效率

1. 进行全量备份

innobackupex --user=root --password /fullback

2.第一次增量

innobackupex --user=root --password --incremental-dir=/increment_1 /fullback

3.第二次增量

innobackupex --user=root --password --incremental-dir=/increment_2 /fullback

4.合并增量

xtrabackup --prepare --target-dir=/fullback --incremental-dir=/increment_1

xtrabackup --prepare --target-dir=/fullback --incremental-dir=/increment_2

  • binlog恢复

binlog有三种format,statement,row,mixed

statement是对实际的sql语句进行记录

row是记录每行所做的修改,更新语句会写入日志

mixed是在statement的基础上看需要切换row格式

  1. 查询binlog格式

show variables like 'binlog_format'

2. 设置binlog格式(临时修改,重启后失效,要永久生效可以再my.cnf中设置并重启服务生效)

set @@global.binlog_format = row;

3. 启用二进制日志

在cnf配置文件中添加 [mysqld]

log_bin = /var/lib/mysql/binlog

server_id = 200

重启服务,systemctl restart mysqld

4.显示服务器所有的二进制日志

show master logs; 或者 show binary logs;

5.删除、刷新日志

reset master;删除所有

purge binary logs to <二进制日志名>删除这之前的日志,仅保留方括号

flush logs 重新启用新的binlog文件

6. 读取二进制日志,并恢复数据库

mysqlbinlog binlog.000001 > mysql_extra

cat mysql_extra | mysql -f -hlocalhost -uroot -p

补充:可以利用二进制日志,进行时间点和从偏移量中提取所需要的binlog进行恢复

mysqlbinlog xxx --start-datetime="stamp1" --stop-datetime="stamp2" >mysql_extra

mysqlbinlog xxx --start-position=100 --stop-position=179 > mysql_extra

1 人点赞