1、编写备份数据库的脚本

1、流程说明

  • 我们通过linux自带的定时任务,来执行我们提前写好的备份数据库的shell脚本
  • 第一步就是创建一个备份数据库shell脚本
  • 第二步更改shell脚本文件的权限
  • 在/etc/crontab文件中加入一条定时任务的配置。

    2、主机中mysql中的备份

    1、命令如下

  • 某个数据库的命令

    1. #/bin/bash
    2. mysqldump -uroot -p密码 数据库名称 | gzip > /mydata/mysql/bk/lianyun_$(date +%Y%m%d_%H%M%S).sql.gz

    2、保存成一个文件

  • 参考这个sh脚本

mysql_bk.shimage.png

3、文件权限修改

chmod 755 lianyun_mysql_bk.sh

3、docker中备份数据库数据

  • 命令其实就是加了点docker的命令

    #/bin/bash
    docker exec mysql mysqldump -uroot -p密码 seat | gzip > /mydata/mysql/bk/seat_$(date +%Y%m%d_%H%M%S).sql.gz
    
  • 其他操作和上面一样。

    2、配置linux定时任务

  • 全局定时任务在文件/etc/crontab中配置

    1、查看全局配置的定时任务

    ```shell [root@iZwz9eoz7k4q3y6nndxzhiZ bk]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root

For details see man 4 crontabs

Example of job definition:

.———————— minute (0 - 59)

| .——————- hour (0 - 23)

| | .————— day of month (1 - 31)

| | | .———- month (1 - 12) OR jan,feb,mar,apr …

| | | | .—— day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

| | | | |

* user-name command to be executed

<a name="h88ub"></a>
## 2、添加一条定时任务配置
<a name="B20gw"></a>
### 1、配置例子学习
<a name="lUWYW"></a>
#### 1、添加内容(例子)

- (每个星期日凌晨2:00重启禅道)
```shell
0 2 * * 0   root cd /root/zentao && docker-compose down && docker-compose up --build

2、每分钟运行 指定的bianyi.sh脚本文件

*/1 * * * * root /home/lenovosh/work/bianyi.sh

3、每个月的1号14:10运行 指定的bianyi.sh脚本文件

10 14 1 * * root /home/lenovosh/work/bianyi.sh

4、每周一、三、五凌晨00:01运行 指定的bianyi.sh脚本文件

1 0 * * 1,3,5 root /home/lenovosh/work/bianyi.sh

5、每天零点准时关机

0 0 * * * * root shutdown –a now

3、定时任务crontab相关命令

1、重载crontab文件

service cron reload

2、重启crontab服务

service cron restart

3、等待任务执行结果

  • (可用命令追踪任务)

    service cron status
    

    3、配置刚刚的shell脚本执行

    1、编辑crontab

    vim /etc/crontab
    

    2、添加每天凌晨4点10分开始备份联云数据库数据

    # 每天 凌晨4点10分开始备份联云数据库数据
    10 4 * * * root /mydata/mysql/bk/mysql_bk.sh
    

    3、查看刚刚配置的,这样每天就会自动执行了

  • 配置好之后就可以了,无需重启cron服务 ```shell [root@iZwz9eoz7k4q3y6nndxzhiZ bk]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root

For details see man 4 crontabs

Example of job definition:

.———————— minute (0 - 59)

| .——————- hour (0 - 23)

| | .————— day of month (1 - 31)

| | | .———- month (1 - 12) OR jan,feb,mar,apr …

| | | | .—— day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

| | | | |

* user-name command to be executed

每天 凌晨4点10分开始备份联云数据库数据

10 4 * root /mydata/mysql/bk/mysql_bk.sh

```

4、每天备份的数据样式

image.png