MySQL备份脚本

MYSQL备份,每天全量备份(排除由于GTID的缘故造成恢复问题的系统库),然后通过Gzip进行压缩。

1. 准备工作

创建数据目录,修改脚本path

bash 复制代码
mkdir -p /home/dbbak/logs
mkdir -p /home/dbbak/backupdb
  1. 查看mysql路径 修改脚本mysql路径
bash 复制代码
 ps -ef |grep mysql
mysql      91770       1 19 Mar23 ?        3-12:33:51 /usr/sbin/mysqld
root      941954  941037  0 11:04 pts/0    00:00:00 grep --color=auto mysql
which mysql
/usr/bin/mysql

2. 脚本修改并执行

bash 复制代码
#!/bin/bash

#DEFINE VARIABLES
BACKUPUSER=root
BACKUPPASS="root密码"
BACKUPPORT=mysql端口
#BACKUPSOCKET=/home/data/$BACKUPPORT/logs/mysql.sock
BACKUPIP=localhost
MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
#CONFIG_FILE=/home/data/$BACKUPPORT/conf/my.cnf
BINLOGPATH=/home/dbbak/logs
BACKUPPATH=/home/dbbak/backupdb
DEL_DIRECTORY=`date +%Y%m%d -d "-14 day"`
BACKUPDATE=`date +%Y%m%d`

mkdir $BACKUPPATH/$BACKUPDATE

#connection  to mysql db
mycmd="$MYSQL -u$BACKUPUSER -p$BACKUPPASS -h$BACKUPIP -P$BACKUPPORT"

#backup metadata
DUMP_Table="$MYSQLDUMP -u$BACKUPUSER -p$BACKUPPASS -h$BACKUPIP  -P$BACKUPPORT  -R --events -d"

# backup database for InnoDB
DUMP_InnoDB="$MYSQLDUMP -u$BACKUPUSER -p$BACKUPPASS -h$BACKUPIP -P$BACKUPPORT   --flush-privileges --single-transaction --master-data=2 --set-gtid-purged=OFF --triggers -f -R -E --hex-blob
 "

# backup database for MyISAM
DUMP_MYISAM="$MYSQLDUMP -u$BACKUPUSER -p$BACKUPPASS -h$BACKUPIP -P$BACKUPPORT   --flush-privileges --lock-all-tables --master-data=2 --triggers -f -F -R -E --hex-blob "

echo  `date +%F" "%r` "Start backup  Mysql  databases" >> $BINLOGPATH/$BACKUPDATE.log


#flush logs
$mycmd -e 'flush logs'

#backup config file
#/bin/cp  $CONFIG_FILE  $BACKUPPATH/$BACKUPDATE


#backup binary log file
BINLOG=`find  $BINLOGPATH  -type  f  -name "mysql_bin*" -mtime -2 |grep -v index `
for  i in  $BINLOG  
do
 /bin/cp $i  $BACKUPPATH/$BACKUPDATE/$BACKUPPORT
done


# backup  and compress 
#有些时候,我们要对数据库进行备份的时候,由于GTID的缘故,导出系统库后,再次导入其他环境的数据库时,就会出问题。所以,我们需要排掉一些系统库,排除GTID对于数据库迁移的影响。

db=`$mycmd  -e "show databases;"|grep -Evw "Database|information_schema|performance_schema|test|mysql|sys"`
${DUMP_InnoDB} --databases $db --ignore-table=要忽略的表 |gzip > $BACKUPPATH/$BACKUPDATE/full_$(date +%w).sql.gz

#flush logs
$mycmd -e 'flush logs'

解压缩方法:使用gunzip gunzip full_2.sql.gz

相关推荐
小白男神16 小时前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶16 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G16 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备17 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远17 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs199118 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_9622186118 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客19 小时前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren19 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安19 小时前
MySQL-触发器
数据库·mysql