2021-04-27-MySQL数据库快照备份


title: 2021-04-27-MySQL数据库快照备份
date: 2021-04-27 22:20:20
categories: [mysql]
tags: [mysql数据库快照备份]
toc: true


MySQL 数据库快照备份

主要使用MySQL自带的mysqldump工具实现。
业务场景:对生产数据库的从库进行数据备份,生产系统是主从复制架构,并且未设置延迟复制。

一、封装执行脚本

#!/bin/bash

number=5
backup_dir=/root/mysqlbackup
dd=`date +%Y-%m-%d-%H-%M-%S`
tool=mysqldump
username=root
password=$%BNK$%HJK
database_name=-A

if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

$tool -u$username -p$password $database_name > $backup_dir/$database_name-$dd.sql

echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`

count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  rm $delfile
  echo "delete $delfile" >> $backup_dir/log.txt
fi

二、设置Linux cron定期执行

Linux安装cron服务,百度烂大街的。
使用root用户创建cron规则文件,例如mysqldump.cron
并在cron文件中添加如下内容(Linux cron语法文章末尾有链接):

20 2 * * * . /etc/profile;/bin/sh /root/mysqlbackup/mysql_dump_script.sh

(上面命令的意思就是,每天的2:20执行一次mysql_dump_script.sh脚本)。
然后使用命令行crontab命令添加Linux定时任务。

# 添加
crontab mysqldump.cron
# 查看是否添加成功
crontab -l

三、关于mysqldump的使用

mysqldumpMySQL 自带的逻辑备份工具。

它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

# 导出所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
# 导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
# 导出db1中的a1、a2表
# 注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql

其他更多资料建议参考博客:
MySQL之mysqldump的使用

MySQL mysqldump数据导出详解

四、关于Linux cron的使用

以下列出几个比较全的博客:
菜鸟Linux crontab 命令

每天一个linux命令(50):crontab命令

Linux下的crontab定时执行任务命令详解

你可能感兴趣的:(2021-04-27-MySQL数据库快照备份)