Linux下实现Mysql定时任务备份数据
创建备份目录
本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录:
cd /mnt
mkdir dbback
pwd
/mnt/dbback
创建shell脚本
脚本名称可根据自己规范进行自定义:
vim bcmysql.sh
进入编辑器,输入以下内容:
#!/bin/bash
mysqldump -uusername -ppassword demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
如果需要本分文件进行压缩,可输入下面命令:
#!/bin/bash
mysqldump -uusername -ppassword demo | gzip > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql.gz
在具体操作中,需要将username,password和demo分别替换成对应的数据库用户名、密码和数据库名。
添加可执行权限
chmod u+x bcmysql.sh
添加完执行权限之后,执行此脚本,可能会出现如下异常:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。在本实例中使用的mysql版本为5.7.22,虽然有警告信息,但可以成功备份数据。
修改mysql配置文件
针对上面的问题,某些版本可能无法成功备份,另外也不建议将数据库密码配置在脚本中,则可直接修改mysql的配置文件。一般情况下,mysql的配置文件在/etc/my.cnf。
vim /etc/my.cnf
在此文件内添加mysqldump的配置如下:
[mysqldump]
user=your_backup_user_name
password=your_backup_password
替换掉对应的用户名和密码,并修改bcmysql.sh脚本中的命令,取消用户名和密码参数,无需重启mysql,直接执行脚本即可看到备份结果。
demo_20181114_193425.sql
问题一
当使用vim查看导出的sql文件内容时,会发现中文有乱码。此问题有两种情况引起,第一种就是数据库本身字符集为latain1,则此时需要指定字符集,在执行的参数中添加如下参数:
--default-character-set=gbk
当然如果是utf8则将gbk修改为utf8。查看数据库字符集的命令如下:
show variables like '%char%';
-- 查询结果
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/local/mysql/share/charsets/
如果将字符集正确修改,依然有乱码,则可尝试添加如下参数:
--hex-blob
仔细分析一下表结构,可能表结构中有blob类型,这个参数的含义是用16进制的方式导出BINARY, VARBINARY, BLOB类型的数据。修改后的命令如下:
mysqldump --default-character-set=utf8 --hex-blob demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
添加计划任务
检测或安装crontab
执行crontab命令如果报command not found,就表明没有安装。
# crontab
-bash: crontab: command not found
如果未安装,可以通过yum命令进行安装:
# yum -y install vixie-cron
虽然crontab不支持-h或-help命令,但可以通过此命令检查是否安装成功:
[root@iZ2zeck5vZ ~]# crontab -help
crontab:无效选项 -- h
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
Default operation is replace, per 1003.2
添加计划任务
通过上面的命令参数,我们可以看到修改crontab的命令,执行命令:
crontab -e
进入crontab的编辑操作页面,可以像vi、vim一样编辑其中的内容。在其中添加如下命令:
*/1 * * * * /mnt/dbback/bcmysql.sh
此行命令的作用是每隔一分钟执行一次bcmysql.sh。等待一分钟之后通过ls命令查看是否生成备份文件。发现已经可以正常生成文件。当然,我们并不需要每分钟就备份一次,因此把命令改为如下:
0 1 * * * /mnt/dbback/bcmysql.sh
每天凌晨1点执行一次备份操作。
日志查看
如果执行失败了,则可查看任务日志:
# tail -f /var/log/cron
小结
至此,一个简单版本的Linux下实现Mysql定时任务备份数据功能已经实现。当然也可以在此版本基础上进行目录控制,历史记录删除等扩展。
相关文章
- linux下mysql修改root密码
- linux 安装redis,mysql,netcore
- mysql数据库安装最后一步安装失败
- tornado注册功能与mysql连用--案例3
- mysql中如何删除表上的索引?删除索引?
- 谈一次Linux的木马攻击数据爆满造成的Mysql无法启动
- linux定时备份mysql数据库文件
- 【MySQL】索引
- 【MySQL高级】MySql中常用工具及Mysql 日志
- MySql 索引数据结构,千万级大表,关于性别及年龄字段是否需要加索引?
- 如何在 Linux 中重置 MySQL 或者 MariaDB 的 root 密码
- 如何使用图形化工具远程管理 Linux 上的 MySQL
- 定时每天备份mysql
- linux连接mysql命令
- 【MySQL进阶-05】深入理解mvcc机制(详解)
- MySQL Cluster 集群
- Linux安装Mysql(图文解说详细版)
- 【MySql】远程访问问题
- 《PHP、MySQL和Apache入门经典(第5版)》一一2.3 在Linux/UNIX上安装MySQL
- linux定时备份mysql并同步到其它服务器
- linux mysql 执行报错
- Linux备份mysql cron代码
- mysql 字符串转数据丢失精度,mysql转换丢失精度,mysql CAST 丢失精度
- linux MySql 的主从复制部署
- Linux-015-Centos mysql 创建用户、数据库、授权、建表、数据插入
- Linux下使用OTL操作mysql数据库
- Linux服务器制定mysql数据库备份的计划任务
- linux上lua操作MySql增删改查(centos7)
- linux mysql 操作命令
- Windows下搭建MySQL Master Slave[转]
- 实战:INNOBACKUPEX for mysql 5.6自己主动备份脚本
- Linux中连接mysql执行sql文件
- Linux 安装和配置MySQL
- Mysql 中如何创建触发器
- SpringBoot+SpringSecurity集成权限管理快速打造企业级声明式安全认证授权解决方案之SpringBoot+SpringSecurity+mybatis+mysql