IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 通过简单的脚本在Linux环境实现Mysql数据库的定时备份(Mysqldump命令备份) -> 正文阅读

[系统运维]通过简单的脚本在Linux环境实现Mysql数据库的定时备份(Mysqldump命令备份)

1、mysqldump命令

??mysqldump 是 mysql 用于转存储数据库的实用程序。它主要产生一个 SQL 脚本,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。

命令:mysqldump -h主机地址 -u用户名 -p数据库密码 数据库名 表1 表2 > 文件名

??如果用户名需要密码,则需要在此命令执行后输入一次密码核对;如果数据库用户名不需要密码,则不要加“-p”参数,导入的时候相同。注意输入的用户名需要拥有对应数据库的操作权限,否则无法导出数据。由于是作系统维护和全部数据库的导出,一般我们使用root等超级用户权限。

其他命令参考
备份远程MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
 
备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump ---add-drop-table -uusername -ppassword databasename > backupfile.sql
 
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
 
备份MySQL数据库某个()表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
 
同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword --databases databasename1 databasename2 databasename3 > multibackupfile.sql
 
仅仅备份数据库结构
mysqldump --no-data --databases databasename1 databasename2 databasename3 > structurebackupfile.sql
 
备份服务器上所有数据库
mysqldump --all-databases allbackupfile.sql
 
还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
 
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

2、crontab命令

??crontab命令用于设置周期性被执行的指令,并将其存放在/etc/crontab文件,以供之后读取和执行。cron系统调度进程,可以使用它在每天的非高峰负荷段运行作业,或在一周或一月中不同时段运行,cron是系统主要的调度进程,可以无需人工干预的情况下运行作业。

详细内容请参考《Linux Crontab 定时任务》

crontab的使用
crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有
在这里插入图片描述
示例:

[root@xxx soft]# crontab -l
0 2 * * * bash /usr/soft/mysql_backup.sh? #每天凌晨2点执行一次
*/1 * * * * bash /usr/soft/mysql_backup.sh? # 每分钟执行一次

3、实践

??通过前面的了解,我们基本上知道了mysql导出命令mysqldump 和 Linux定时命令crontab的用法了,现在我们就来尝试实现定期备份指定数据库中指定表的命令。

1、备份脚本

??首先,创建mysql_backup.sh文件,定义备份数据库的脚本,实现如下:

#!/bin/bash
  
#备份位置
backup_dir='/usr/data/backup/mysql/'
#获取当前时间
current_time=$(date +'%Y-%m-%d_%H%M%S')
#将backup_dir和时间组合起来,再加个后缀
filepath=$backup_dir$current_time'.sql.gz'

#数据库信息,配置数据库账号密码
s_ip='127.0.0.1'
username='root'
password='xxx'
source_database='xxx'

echo "-----------------------"$(date +%F%r)"操作开始--------------------------------"
echo $(date +%F%r)"开始进行数据备份..."
# 2>/dev/null 可以抑制警告信息
mysqldump -h${s_ip} -P3306 -u ${username} -p"${password}"  ${source_database} table1 table2 table3 | gzip > $filepath

echo $(date +%F%r)"完成同步..."

??上述脚本实现了,备份s_ip主机上的source_database数据库,且只备份table1、table2、table3三个数据表,并以gzip格式进行压缩,存储路径为backup_dir。

2、异常处理

注意: 出现 “/bin/bash^M: bad interpreter: No such file or directory”报错
??因为一般情况下,脚本会在windows环境下编写,这个时候,辅上传到Linux系统时,可能会出现“/bin/bash^M: bad interpreter: No such file or directory”错误,这是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。解决办法:

  1. 查看脚本的格式: cat -A filename
    从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
  2. 修改脚本的格式:
    vi filename打开文件,执行 : set ff=unix设置文件为unix,然后执行:wq,保存成unix格式。
  3. 查看脚本的格式: cat -A filename
    从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。

执行脚本出现:“-bash: ./mysql_backup.sh: Permission denied”异常
??该报错,是没有给脚本进行授权,命令如下:

chmod u+x mysql_backup.sh 

执行脚本出现:“./mysql_backup.sh: line 19: /usr/data/backup/mysql/2022-04-28_150941.sql.gz: No such file or directory”异常
??该报错是,备份脚本中的路径,在Linux系统中不存在,这个时候,需要创建对应的目录即可,文件会自动生成。

3、创建定时任务

完成了上述步骤,脚本就完成了创建,并可以正常使用了,下面就是创建定时任务了。
在Linux系统中,执行“crontab -e”命令,进入定时任务编辑界面,编辑需要定时命令即可,如下所示:
在这里插入图片描述

编辑保存后,查看任务如下:
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:04:54  更:2022-04-30 09:07:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:33:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码