首页 > 数据库 >CentOS-Mysql 自动备份-shell 脚本

CentOS-Mysql 自动备份-shell 脚本

时间:2023-07-21 12:39:00浏览次数:59  
标签:脚本 shell CentOS BACKDIR 备份 sh Mysql backup 数据库


功能说明:

在服务器A上,每天自动运行一个 shell 脚本;备份数据库 db;然后将 sql 文件放到另一台服务器B上。

新建文件:mysql_backup.sh

内容是:


#!/bin/bash
HOST=127.0.0.1
USERNAME=root
PASSWORD=root
DBNAME=adver
serverHost=123.123.123.123
DATE=$(date +%Y%m%d)
OLDDATE=$(date -d ”-1 days” +%Y%m%d)
MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
MYSQLADMIn=/usr/local/mysql/bin/mysqladmin
SOCKET=/tmp/mysql.sock
BACKDIR=/backup/db
if [ ! -d ${BACKDIR} ]; then
mkdir -p ${BACKDIR}
fi
if [ ! -d ${BACKDIR}/${DATE} ]; then
mkdir ${BACKDIR}/${DATE}
fi
if [ -d ${BACKDIR} ]; then
rm -rf ${BACKDIR}/${OLDDATE}
fi
BACKUP_NAME=${BACKDIR}/${DATE}/${DBNAME}_backup_${DATE}.sql.gz
${MYSQLDUMP} –opt -h${HOST} -u${USERNAME} -p${PASSWORD} -S${SOCKET} ${DBNAME} | gzip > ${BACKUP_NAME}
echo ”${DBNAME} backup success”
/bin/sleep 3
scp ${BACKUP_NAME} root@${serverHost}:/data/backup/db/${DBNAME}_backup_${DATE}.sql.gz

可以看到,最后一条语句是将文件通过 scp 命令传输到另一台服务器上;而这里并没有和用户名,密码相关的内容;因为这两台服务器之间做了设置。访问时不用输入密码。如何配置,请参照:http://labs.ywlx.net/?p=2149

http://labs.easymobi.cn/?p=2441

-------------------------------------

一个备份MySQL数据库的简单Shell脚本

Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。我们也可以逐一敲入命令手动执行。如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了。

我首先要在本文带给你的是完整脚本。后面会对该脚本做说明。我假定你已经知道shell scripting、 mysqldump和crontab。

适用操作系统:任何Linux或UNIX。

主脚本(用于备份mysql数据库):

该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。

1. 分别建立目录“backup”和“oldbackup”


#mkdir /backup          


           #mkdir /oldbackup



2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”

这里我用的是 vi

# vi /backup/backup.sh



现在把以下几行命令输入到 backup.sh 文件中:

#!bin/bash          


           cd           /backup          


           echo           “You are In Backup Directory”          


           mv           backup*            /oldbackup          


           echo           “Old Databases are Moved to oldbackup folder”          


           Now=$(           date           +”%d-%m-%Y--%H:%M:%S”)          


           File=backup-$Now.sql          


           mysqldump –u user-name  –p ‘password’ database-name > $File          


           echo           “Your Database Backup Successfully Completed”



脚本说明:

切记,在第8行命令中,在mysqldump命令后要输入自己的数据库用户名、密码及数据库名。

执行该脚本,首先会进入 /backup 目录,然后该脚本会把原有的旧数据库备份移动到 /oldbackup 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。

3. 设置 backup.sh 脚本文件的可执行许可

# chmod +x /backup/backup.sh



4. 执行脚本

#./backup.sh



脚本运行结束后会得到以下输入。

root@Server1:           /download           #./backup.sh          


           You areinDownload Directory          


           Old Backup DatabaseisMoved to oldbackup folder          


           database backup successful completed          


           root@Server1:           /download           #



注:首次执行该脚本会有一个“no such file”的提示信息,这是由于旧备份文件还不存在。只要再次执行该脚本就没有问题了,这个问题已经不存在了。

5. 使用cron制订备份计划

使用Cron可以定时执行该脚本,备份会自动完成。使用 crontab 命令编辑cron 执行的计划任务。


#crontab –e



只要在编辑器上加入下面这一行代码保存即可。

013* * * *            /backup/backup           .sh



本任务表示的是在每天下午1点钟把数据库备份到指定的文件夹。有关cron任务设置的详细内容可以查阅crontab手册。

对初学者而言,这是非常基础的脚本。希望你能举一反三写出更复杂的备份脚本。我们会努力提供更自动化的新脚本。请大家不吝赐教,我们会尽力解决你们的问题。感谢与我们相伴。

标签:脚本,shell,CentOS,BACKDIR,备份,sh,Mysql,backup,数据库
From: https://blog.51cto.com/u_16104661/6798949

相关文章

  • centos 6.2 64位安装nginx php mysql
    平台环境http://jiyunjie.blog.51cto.com/5348020/946860centos6.264位nginx-1.2.1php-5.3.14mysql-5.5.25阿里云2g内存实例,具体参数调整根据自己主机调整里面也提到一部分修改建议32位centos512内存参考http://jiyunjie.blog.51cto.com/5348020/907534 一、阿里云主机默认......
  • Linux shell | 竖线管道符号放变量 无法访问'|': 没有那个文件或目录 无法访问'wc':
    工作中遇到一个实际问题,文本编码转换。原始命令:catutf8.log|iconv-c-fUTF-8-tGBK|teegbk.log因为某种(方便修改、方便替换)原因,想把“|iconv-c-fUTF-8-tGBK|”命令这段,想放到变量里,做到一处修改处处生效的效果。pipe="|iconv-c-fUTF-8-tGBK|"catutf......
  • helm安装mysql8.0集群模式
    1.安装operator:MysqlCluster2.使用operator安装mysql8.0集群 CREATEUSER'root'IDENTIFIEDBY'134er6';ALTERUSER'root'@'%'IDENTIFIEDBY'Qwer#@!';apiVersion:mysql.radondb.com/v1alpha1kind:MysqlClusterme......
  • mssql的xp_cmdshell扩展
    introductionxp_cmdshellextension:storedprocedureexecutescommandstringasanoperatingsystemcommandinshell andretirevealloutputastextlinesdetermineifcurrentmssqlhasxp_cmdshellareturnvalueof1indicatestheextensionisxp_cmdsh......
  • python+mysql
    目录MySQL安装&初始化&连接mysql安装mysql初始化mysql启动测试连接mysql密码设置数据库管理内置客户端操作python代码操作MySQL安装&初始化&连接mysql安装mysql主要为5和8两个版本,下载地址下载形式为压缩包的格式,解压即用mysql初始化需要预先指定一个配置文件,后缀......
  • MySQL8.0安装Mcafee审计插件,开启审计功能
    最近根据安全审计要求,数据库需要开启审计日志功能社区版本的MySQL8没有官方的审计日志插件,我们可以选择Mcafee提供的插件进行安装1、下载插件首先需要根据数据库版本选择对应的插件;https://github.com/mcafee-enterprise/mysql-audit注意:这里需要与数据库版本严格对应,笔者尝......
  • mysql多表关联的新增和修改操作
    1.多表的新增操作需求:从一个表查出的字段插入到另一个表示例:将loit_bear表的type_code和type_name的字段值全部分别新增到loit_dict表的dict_code和dict_name字段INSERTINTOloit_dict(dict_code,dict_name)selecttype_code,type_namefromloit_bear2.多表的修改操作......
  • MySQL 根据出生日期根据年龄区间进行统计汇总
    SELECTt.age_range,COUNT(1)FROM(SELECTCASEWHENROUND(DATEDIFF(CURDATE(),birthday)/365.2422)>0ANDROUND(DATEDIFF(CURDATE(),birthday)/365.2422)<20THEN'20岁以下'WHENROUND(DATEDIFF(CURDATE(),birthday)/365.2422)>=20......
  • mysql导入txt 中文乱码怎么解决
    在MySQL中导入txt文件时,如果出现中文乱码的问题该如何解决呢?以下是解决方法:1.首先需要确认导入的txt文件是否为UTF-8编码格式。可以使用记事本打开文本文件,如果乱码,可按以下方法手动转换编码:(1)打开记事本,将文件打开;(2)在菜单栏中选择“另存为”;(3)在弹出的窗口中选择“编码”为“UTF-......
  • Navicat连不上mysql8
    今天使用navicat连接mysql8,发现错误连连错误1:1130-Host'192.168.50.2'isnotallowedtoconnecttothisMySQLserver  错误2:2059-Authenticationplugin'caching_sha2_password'cannotbeloaded:Thespecifiedmodulecouldnotbefound  登录mysql,并切......