侧边栏壁纸
博主头像
不负韶华,以梦为马 博主等级

行动起来,活在当下

  • 累计撰写 16 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

mysql导出、导入、备份

better2smile
2024-11-25 / 0 评论 / 0 点赞 / 18 阅读 / 0 字 / 正在检测是否收录...

mysql导出、导入、备份

一、mysql数据库导出、导入

1、数据库导出

mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql

2、数据库导入

mysql -u 用户名 -p 数据库名 < 导出文件.sql

二、数据库定时备份

1、linux

脚本

#用户名
mysql_user="root"
#密码
mysql_password="root"
mysql_host="101.133.170.222"
#端口号 
mysql_port="3306"
#将要备份的数据库
database_name="ruoyi"
#编码格式
mysql_charset="utf8"

#保存备份文件最多个数
count=3
#备份保存路径
backup_path=/data/mysql/bakup
#日期
date_time=`date +%Y-%m-%d-%H-%M`

#如果文件夹不存在则创建
if [ ! -d $backup_path ]; 
then   
    mkdir -p $backup_path; 
fi
#查看MySQL是否在运行
mysql_ps=`ps -ef |grep mysql |wc -l` 
echo "$date_time 查看MySQL是否在运行:$mysql_ps" >> $backup_path/dump.log
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
        echo "$date_time ERROR:MySQL is not running! backup stop!" >> $backup_path/dump.log
        exit
else
        echo "$date_time Welcome to use MySQL backup tools!" >> $backup_path/dump.log

echo "$date_time MySQL connect ok! Please wait......" >> $backup_path/dump.log
fi
#开始备份
echo "$date_time 开始备份...$backup_path" >> $backup_path/dump.log
docker exec h3_mysql /usr/bin/mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $database_name --default-character-set=$mysql_charset > $backup_path/$database_name-$date_time.sql
echo "$date_time 备份完成...$backup_path" >> $backup_path/dump.log

#开始压缩
cd $backup_path
tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql
#更新备份日志
echo  "$date_time 压缩原文件 create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log

#删除源文件
rm -rf $backup_path/$database_name-$date_time.sql

echo "$date_time 压缩后删除原文件 delete $backup_path/$database_name-$date_time.sql" >> $backup_path/dump.log

#找出需要删除的备份
delfile=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于阈值
number=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`

if [ $number -gt $count ]
then
  #删除最早生成的备份,只保留count数量的备份
  rm $delfile
  #更新删除文件日志
  echo "$date_time 删除 $count 前的文件 delete $delfile" >> $backup_path/dump.log
  echo "$date_time 备份成功" >> $backup_path/dump.log
fi

定时任务设置

crontab -e
# 每天凌晨 5 点执行
0 5 * * * sh /data/mysql/dump_mysql.sh

2、windows下

脚本(已验证)

backup.bat

@echo off
echo 设置MySql数据库的连接信息
set host=127.0.0.1
set port=3306
set user=root
set pass=root
echo 设置要备份MySql数据库名称
set dbname=xsgajwebnew
echo 获取当天的日期格式,例如:2024-01-10-11-20-20 这个不需要动
set h=%time:~0,2%
set h=%h: =0%
set backup_date=%date:~0,4%-%date:~5,2%-%date:~8,2%_%h%-%time:~3,2%-%time:~6,2%
echo 设置备份文件的生成路径
set backupfile=E:\data\mysql\%dbname%-%backup_date%.sql
echo 使用mysqldump对指定的MySql进行备份 注意路径中有空格的要加上双引号
"mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
echo 删除过期文件,这里是超过30天就删除
forfiles /p E:\data\mysql\ /s /m *.sql /d -30 /c "cmd /c del @file /f"

定时任务

打开windows系统的“任务计划程序”,右侧创建基本任务,输入名

选择每天

设置备份时间

选择启动程序,确认下一步,程序或脚本选择自己创建的.bat文件,最后点击完成

创建成功

0

评论区