mysql备份

本文介绍了如何使用mysqldump命令进行数据库备份,包括不同参数的使用,如备份所有数据库、单个数据库或表,以及如何设置--single-transaction等选项。此外,还展示了如何编写备份脚本结合cron定时任务实现每日全量备份,并检查备份是否成功。
摘要由CSDN通过智能技术生成

1.前言

数据库备份是最重要的事情,当误删数据库时可以使用备份来恢复数据库数据,本文来讲解一下使用mysqldump命令备份数据库

2.mysqldump常用命令参数

-A --all-databases 备份所有数据库(创建库命令一同写入)

-B --databases 备份指定多个数据库(创建库命令一同写入)

-d 只备份表结构

-t 只备份表数据

-T --tab 将表结构和表数据分开存储,数据为纯文本格式,而非sql语句,此参数后跟路径

-F 刷新binlog日志文件,生成一个新的binlog日志文件

-x --lock-all-tables 备份时锁定所有表,不能与--single-transaction共用,会产生冲突

--lock-tables 锁定一个库里的所有表

--log-error   将报错输出到指定文件中,备份没报错则没有输出

--master-data=[1|2] 参数为1时,mysqldump出来的文件就会包括这个语句,后面紧接着就是file和position的记录,参数为2时chang master to也会写到dump文件里面去,一般使用2

--single-transaction 不锁表备份,但会在备份开始时生成一个快照,后面写入的数据对快照里的数据没有任何影响,备份出来的数据还是备份开始时的数据,适用于innodb引擎

注:在配置了gtid的主从架构中,导出数据时必须加以下配置,不然报错

--set-gtid-purged=OFF  导出数据库时忽略gtid

3.mysqldump备份操作

3.1备份单个表

mysql -u用户名 -p密码 库名 表名 > /opt/test.sql

3.2备份单个数据库

mysqldump -u用户名 -p密码 库名>/opt/test.sql

3.3备份多个数据库

mysqldump -u用户名 -p密码 -B 库名 库名 库名 > /opt/test.sql

3.4备份所有数据库

mysqldump -u用户名 -p密码 --all-databases --single-transaction --master-data=2 >/opt/full.sql

3.5备份所有数据库且压缩

mysqldump -u用户名 -p密码 --all-databases --single-transaction --master-data=2 | gzip > /opt/full.sql.gz

4.通过备份脚本与cron定时任务实现在每天的00点全备数据库

4.1备份脚本内容如下

vi /opt/mysqlbackup.sh

#!/bin/bash
date_time=`date "+%Y%m%d"`
DATE_TIME=`date "+%Y%m%d %H:%M:%S"`
echo "begin time $DATE_TIME" >> /opt/mysql/db.log

rm -rf /opt/mysql/backup_error.log

mysqldump -uGreatTeam -p'Tapd!%!^' -F --single-transaction --log-error=/opt/mysql/backup_error.log  --all-databases --master-data=2 > /opt/mysql/full_"$date_time"000000.sql
if [ -s /opt/mysql/backup_error.log ];then  #判断备份时是否有输出报错,没有报错则文件为空,有报错则不为空,判断文件是否输出报错从而判断备份是否成功
   echo "end time $DATE_TIME" >> /opt/mysql/db.log
   echo "db backup lose" >> /opt/mysql/db.log
else
   echo "end time $DATE_TIME" >> /opt/mysql/db.log
   echo "db backup success" >> /opt/mysql/db.log
fi

cp /opt/mysql/full_"$date_time"000000.sql /share/backup/mysql

4.2配置cron配置文件内容如下

vi /etc/crontab

00 00 * * * sh /opt/mysqlbackup.sh

crontab /etc/crontab

crontab -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值