5.2MySQL备份工具

物理备份

  冷备份:cp  tar

逻辑备份

  mysqldump

mysqldump:是MySQL的客户端命令,通过mysql协议连接至mysql服务器进行备份

  -A,--all-database  #备份所有数据库,含create database

  -B,--database db_name  #指定备份的数据库,包括create database语句

  -E,--events  #备份相关的所有event scheduler

  -R,--routines  #备份所有存储过程的自定义函数

  --triggers  #备份表相关触发器,默认启用,用--skip-triggers不备份触发器

  --default-character-set=utf8  #指定字符集

  -d,--no-data  #只备份表结构,不备份数据

  -t,--no-create-info  #只备份数据 ,不备份表结构

  -n,--no-create-db  #不备份create database,可被-A或-B覆盖

  -f,--force  #忽略SQL错误,继续执行

--master-data=[#]

#1:所备份的数据之前添加一条记录为change master to语句,非注释,不指定默认为1 ,适合主从复制多机使用
#2:记录为被注释的#change master to语句,适合于单机使用
-F --flush-logs #备份前滚动日志,锁表完成后,执行flush logs命令,生成新的二进制日志文件,建议配合--master-data使用<br>-x--single-transaction  使用可重复读的事务隔离级别<br>--hex-blob 使用十六进制符号转储二进制列,当有包含binary,varbinary blob bit的数据类型的列时使用,避免乱码
语法:
mysqldump [options] database [tables]  #支持指定数据库和指定多表的备份,但是数据库本身定义不备份
mysqldump [options] -B DB1 [DB2...]  #支持指定数据库备份,包含数据库本身定义也会备份
mysqldump [options] -A [options]  #备份所有数据库,包含数据库本身定义也会备份

InnoDB建议备份策略
  mysqldump –uroot -p –A –F –E –R --triggers --single-transaction --master-data=1 --flush-privileges --default-character-set=utf8 --hex-blob >${BACKUP}/fullbak_${BACKUP_TIME}.sql
MyISAM建议备份策略
mysqldump –uroot -p –A –F –E –R –x --master-data=1 --flush-privileges --triggers --default-character-set=utf8 --hex-blob >${BACKUP}/fullbak_${BACKUP_TIME}.sql

分库备份脚本

#!/bin/bash
TIME=`date +%F_%H-%M-%S`
DIR=/backup

[ -d "$DIR" ] || mkdir $DIR

for DB in `mysql -e "show databases" |grep -Ev "^Database|.*schema$"`;do
mysqldump -F --single-transaction --master-data=2 --default-character-set=utf8 -q -B $DB | gzip > ${DIR}/${DB}_${TIME}.sql.gz
done

利用二进制日志还原数据库最新状态

1、开启二进制日志并独立存放备份

2、完全备份并记录二进制位置

3、修改数据库

4、损坏数据

5、还原

posted @ 2022-06-07 09:34  胖丿虎  阅读(61)  评论(0编辑  收藏  举报