centos配置mysql定时备份

1.创建文件夹储存备份文件:

mkdir /var/lib/mysqlbackup
cd /var/lib/mysqlbackup

2.编写备份脚本代码:

vi dbbackup.sh

#!/bin/sh
cd /usr/bin/
docker exec -i e79de85b249a /usr/bin/mysqldump -uroot -p123456 eermms > /var/lib/mysqlbackup/eermms`date +%Y-%m-%d_%H%M%S`.sql
cd  /var/lib/mysqlbackup
rm -rf `find . -name '*.sql' -mtime 10`

这个是docker备份方式,e79de85b249a为容器id,存入/usr/bin/mysqldump,选择备份eermms

第二句为定时清除十天前的备份

如果是centos内直接备份:

mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz

或者指定mysqldump位置备份:

/usr/bin/mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz

另外一种定期清除(没试验过):

find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f

3.赋予脚本权限

chmod +x dbbackup.sh

这一步是赋予dbbackup.sh可执行权限

可以开启定时任务前执行以下脚本

./dbbackup.sh

查看文件是不是多了一个文件,vi进去看看

-- MySQL dump 10.13  Distrib 5.7.30, for Linux (x86_64)
--
-- Host: localhost    Database: eermms
-- ------------------------------------------------------
-- Server version       5.7.30

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `area`
--

DROP TABLE IF EXISTS `area`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `area` (
  `areaId` int(11) NOT NULL AUTO_INCREMENT COMMENT '行政区划ID 20200421改 行政单位ID',
  `parentId` int(11) DEFAULT '0' COMMENT '上级行政区域ID  20200421改 上级行政单位ID ',
  `sublevelId` int(11) DEFAULT NULL,
  `areaName` varchar(255) DEFAULT NULL COMMENT '行政区域名称 20200421改 行政单位名称 ',
  `level` varchar(255) NOT NULL COMMENT '行政级别',
  PRIMARY KEY (`areaId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;

如果看到这种类似的就是成功了。可以去navicat导入一下数据库看看是不是可以成功导入。

4.配置定时任务

crontab -e

如果报错“command not found”,说明没有安装,我们选择安装一下

yum -y install vixie-cron
yum -y install crontabs

安装后将如下内容粘贴进去,代表每天晚上9点执行这个脚本

00 21 * * * /var/lib/mysqlbackup/dbbackup.sh

至此数据库配置定时备份完成!

记一次解决错误:

docker备份sql时,执行脚本可以正常备份,但是启动定时任务时备份出来的数据库就是空的。

希望可以看一下备份的日志,所以修改定时任务的脚本,让他输出log。

32 18 * * * /var/lib/mysqlbackup/dbbackup.sh > /data/hhh.log 2>&1

查看log提示

the input device is not a TTY

解决方法:
docker exec -it (去掉t)因为-t是指分配一个伪终端。这里不需要分配伪终端。
用定时任务执行docker命令的脚本的时候报错如上标题,tty(终端设备的统称): tty一词源于Teletypes,或 teletypewriters。这个的意思是说后台linux执行的时候没有终端设备。我们一般执行docker里的命令时候都喜欢加上 -it 这个参数,这里的-it 就是表示终端设备。所以,如果我们docker执行后台运行的任务或者程序直接去除 -it 这个参数就不会出现这个报错了!

(网络上的资料都是docker备份使用:docker exec -it e79de85b249a /usr/bin/mysqldump -uroot -p123456 eermms > /var/lib/mysqlbackup/eermmsdate +%Y-%m-%d_%H%M%S.sql)

懵。。。你们这样写真的可以备份咩?

注:

1.备份数据首先要确定已经给root设置了密码,否则会报mysqldump执行时

Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

解决办法:

mysql -hserverip -uroot -p
mysql> use mysql; Database changed
mysql> update user set password=password('new password') where user='root'; Query OK, 4 rows affected (0.00 sec) Rows matched: 4  Changed: 4  Warnings: 0
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) //这个命令是给用户赋予了新的权限或者密码,直接读到内存中不需要重启数据库防止出错
mysql> quit

2.提示

Warning: Using a password on the command line interface can be insecure.

可能是为了确保数据库的安全性采用的保护机制。解决方法:修改数据库配置文件。
我们需要修改数据库配置文件,这个要看我们数据库的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf
我们需要在[client]部分添加脚本:(找到[client],在他下面添加)

host=localhost
user=数据库用户
password='数据库密码'
小贴士:
二、crontab启动和关闭 
service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态
 
三、crontab定时任务时间格式 
*   *  *  *  *  command
分 时 日 月 周  命令
minute(分)可以设置0-59分
hour(小时)可以设置0-23小时
day of month(日期)可以设置1-31号
month(月份):可以设置1-12月
day of week(周):可以设置0-7星期几,其中0和7都代表星期天,或者我们也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一等等

四、crontab 常用指令 
crontab  -l:可以列出crontab的内容 
crontab  -e:可以使用系统预设的编辑器,开启crontab

时间格式举例:

00 21 * * * reboot
上面的例子表示每晚的21:00重启服务器。
00 21 1,10,20 * * reboot
上面的例子表示每月1、10、20号的21:00重启服务器
00 21 * * 6,0 reboot
上面的例子表示每周六、周日的21:00重启服务器
0,30 18-22 * * * reboot
上面的例子表示在每天18:00至22:00之间每隔30分钟重启服务器。
0 23-8/1 * * * reboot
晚上11点到早上8点之间,每隔一小时重启服务器
引用:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值