当前位置: 首页 > 后端技术 > Java

几种定期备份MySQL的方法,现在稳定了!

时间:2023-04-02 00:41:08 Java

作者:letcafe来源:https://www.cnblogs.com/letca...1.MySQL数据备份1.1、mysqldump命令备份数据MySQL中提供了一个方便的命令行导出数据库数据和文件的工具mysqldump,我们可以直接通过命令行实现数据库内容的导出转储。首先简单了解一下mysqldump命令的用法:#Mysqldump常用mysqldump-uroot-p--databasesdatabase1database2>xxx.sql1.2,mysqldump常用操作示例1.备份数据和结构alldatabasesmysqldump-uroot-p123456-A>/data/mysqlDump/mydb.sql2.备份所有数据库的结构(添加-d参数)mysqldump-uroot-p123456-A-d>/data/mysqlDump/mydb。sql3。备份所有数据库的数据(加-t参数)mysqldump-uroot-p123456-A-t>/data/mysqlDump/mydb.sql4。备份单个数据库(,数据库名mydb)mysqldump-uroot-p123456mydb>/data/mysqlDump/mydb.sql5的数据和结构。备份单个数据库的结构mysqldump-uroot-p123456mydb-d>/data/mysqlDump/mydb.sql6。备份单个数据库的数据mysqldump-uroot-p123456mydb-t>/data/mysqlDump/mydb.sql7。备份多个表的数据和结构(数据和结构的单独备份方法同上)mysqldump-uroot-p123456mydbt1t2>/data/mysqlDump/mydb.sql8.一次备份多个数据库mysqldump-uroot-p123456--databasesdb1db2>/data/mysqlDump/mydb.sql1.3。恢复mysql备份内容的方法有两种,第一种是在MySQL命令行中,二是使用SHELL行完成恢复1、在系统命令行中输入以下命令进行恢复:mysql-uroot-p123456source/data/mysqlDump/mydb.sql2.编写脚本维护备份数据库文件在Linux中,BASH脚本是通常用来写需要执行的内容,加入定时执行命令crontab,自动生成如下代码。功能是备份mysql。用crontab,备份的内容是最近一个月(31天)每天的mysql数据库记录。2.1.写BASH维护固定数量的备份文件在linux下,用vi或vim编写脚本内容,命名为:mysql_dump_script.sh#!/bin/bash#保存备份的数量,备份31天的数据number=31#备份存放路径backup_dir=/root/mysqlbackup#datedd=`date+%Y-%m-%d-%H-%M-%S`#备份工具tool=mysqldump#usernameusername=root#passwordpassword=TankB214#将备份数据库database_name=edoctor#如果文件夹不存在则创建if[!-d$备份目录];然后mkdir-p$backup_dir;fi#简单写法mysqldump-uroot-p123456users>/root/mysqlbackup/users-$filename.sql$tool-u$username-p$password$database_name>$backup_dir/$database_name-$dd.sql#写入创建backuplogecho"create$backup_dir/$database_name-$dd.dupm">>$backup_dir/log.txt#找出需要删除的备份delfile=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|head-1`#判断当前备份数是否大于$numbercount=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|wc-l`if[$count-gt$number]then#删除最早生成的备份,只保留备份数rm$delfile#写删除文件日志echo"delete$delfile">>$backup_dir/log.txtfi的上面代码的主要含义如下:1.首先设置各项参数,如数量、最大备份数、备份路径、用户名、密码等。2、执行mysqldump命令保存备份文件,并将操作打印到同目录下的log.txt中,以标记操作日志。3、定义要删除的文件:用ls命令获取第9列,即文件名列,然后用head-1定义需要删除的文件和最近的操作时间。4、定义备份数:用ls命令加wc-l来统计sql结尾文件的行数。5、如果文件大小超过限制,删除最早创建的sql文件2.2。使用crontab定时执行备份脚本在LINUX中,定时执行的任务一般由cron[ps-ef|grepcron]的守护进程处理。cron读取一个或多个包含命令行及其调用时间的配置文件。cron配置文件叫做“crontab”,是“crontable”的简称。cronservicecron是linux下的定时执行工具,无需人工干预即可运行作业。servicecrondstart//启动服务servicecrondstop//关闭服务servicecrondrestart//重启服务servicecrondreload//重新加载配置servicecrondstatus//查看服务状态crontab语法crontab命令用于安装、删除或列出表单驱动cron守护进程。用户将需要执行的命令序列放入crontab文件中执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不能直接创建或修改。crontab文件由crontab命令创建。如何在crontab文件中输入要执行的命令和时间。文件中的每一行包括六个字段,前五个字段指定命令执行的时间,最后一个字段是要执行的命令。使用空格或制表符分隔每个字段。格式如下:minutehourday-of-monthmonth-of-yearday-of-weekcommands合法值00-5900-2301-3101-120-6(0为星期日)除了数字,有几个特殊符号是“”、“/”和“-”、“,”,代表取值范围内的所有数字,“/”代表每一个,“/5”代表每5个单位,“-”"代表从某个数到某个数,","分隔若干个离散数。-l在标准输出上显示当前的crontab。-r删除当前的crontab文件。-e使用VISUAL或EDITOR环境变量指定的编辑器来编辑当前的crontab文件。当您完成编辑离开时,编辑后的文件将自动安装。创建cron脚本的第一步:写一个cron脚本文件,命名为mysqlRollBack.cron。15,30,45,59****echo"xgmtest....">>xgmtest.txt表示,每15分钟执行一次打印命令步骤2:添加定时任务。执行命令“crontabcrontest.cron”。获取第三步:“crontab-l”查看定时任务是否成功或者查看/var/spool/cron下是否生成对应的cron脚本注意:该操作是直接替换用户下的crontab,而不是添加新建一个用于定时执行的定时任务脚本(记得先给shell脚本执行权限)02***/root/mysql_backup_script.sh然后用crontab命令写定时脚本crontabmysqlRollback.cron然后使用命令查看定时任务是否已经创建:crontab-l附上crontab的使用示例:1.每天早上6:006***echo"Goodmorning.">>/tmp/test.txt//注意简单的echo,从屏幕上看不到任何输出,因为cron把任何输出都通过邮件发送到root的邮箱。2.每两个小时0*/2***echo"现在休息一下。">>/tmp/test.txt3.晚上11点到早上8点之间每两个小时和023-7/2,8***echo"Haveagooddream">>/tmp/test.txt4。每月4号,每周一至周三11:00114*1-3命令行5。1月1日凌晨4点0411*commandlineSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root//如果出错,或者有数据输出,数据将作为电子邮件发送到此帐户HOME=/6.每小时执行/etc/cron.hourly中的脚本01****rootrun-parts/etc/cron.hourly7。每天执行/etcScript024***rootrun-parts/etc/cron.dailyin/cron.daily8.执行script224**0rootrun-parts/etc/cronin/etc/cron.weekly每周。weekly9.每月执行/etc/cron.monthly中的脚本4241**rootrun-parts/etc/cron.monthly注意:“run-parts”是参数。如果删除此参数,则以下您可以编写要运行的脚本的名称而不是文件夹名称。 10、每天下午4:00、5:00、6:00分别在5分钟、15分钟、25分钟、35分钟、45分钟、55分钟执行命令。5、15、25、35、45、5516、17、18***命令11。每周一、三、五下午3:00系统进入维护状态并重启系统。0015**1、3、5关机-r+512。每小时10分钟,40分钟在用户目录下执行innd/bbslin命令:10、40****innd/bbslink13。每小时1分钟在用户目录下执行命令bin/account:1****bin/account3.执行效果截图下面是我测试每分钟的截图效果,对应代码如下:*****/root/mysql_backup_script.sh效果截图:log.txt记录备份的详细操作日志:本文参考:https://www.cnblogs.com/smail...https://www.cnblogs.com/mraca...https://www.cnblogs.com/longj...近期热点文章推荐:1.1000+Java面试题及答案(2021最新版)2.别再满脑子if/else了,试试策略模式吧,它闻起来真香!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!