数据库自动备份和自启动

目录

一、MySQL

1、创建脚本以及sql文件存放目录

2、赋予脚本权限

3、测试脚本是否正确并成功导出sql文件

4、创建定时任务

5、MySQL设置开机自启动

6、注意:执行脚本过程中报错:mysqldump: command not found

二、达梦数据库备份


一、MySQL

1、创建脚本以及sql文件存放目录

#!/bin/bash
 
#数据库名称
 
db_name='icip'

time=3

filename='icip_batch'
 
#生成备份存放的目录
 
backup_dir='/home/local/mysql/icipAutoDate'
 
#生成日期
 
current_time=$(date +'%Y-%m-%d_%H%M%S')
 
filepath=$filename$current_time'.sql.gz'
 
 
echo '开始导出数据库...'
 
#/etc/my.cnf这个是mysql具体的配置文件,根据自己实际安装路径填写
 
mysqldump -uroot -p123456 -h1.1.1.1 --databases  $db_name | gzip > $backup_dir/$filepath

 
echo '导出成功,文件名为: '$filepath

echo '删除过期文件'

find $backup_dir/*.sql.gz -type f -mtime +$time | xargs rm -f

echo '删除成功'

2、赋予脚本权限

  chmod +x ./autoBackups.sh

3、测试脚本是否正确并成功导出sql文件

  sh autoBackups.sh

4、创建定时任务

  加入要执行的定时任务脚本

  crontab -e  

数据库自动备份和自启动_第1张图片

crontab格式说明

数据库自动备份和自启动_第2张图片

 crontab 验证网站: Crontab.guru - The cron schedule expression editor

 crontab -e 编辑任务

 crontab -l  查看任务

 crontab -r  删除当前用户的任务

 /sbin/service crond start 开启crontab

 /sbin/service crond stop 停止crontab

 /sbin/service crond restart 重启crontab

5、MySQL设置开机自启动

1、启动MySQL

  service mysql start

2、复制mysql.server文件

  如果  /etc/rc.d/init.d/  目录下有mysql这个文件则不用执行下面一条命令

  cp /home/local/mysql/mysql-8.0.31/support-files/mysql.server /etc/rc.d/init.d/mysql

3、赋予文件权限

  chmod +x /etc/init.d/mysql

4、添加服务

  chkconfig --add mysql

5、查看列表

  chkconfig --list

  如果3、4、5都为on则表示配置成功。 如果是off则手动打开

  chkconfig --level 345 mysqld on

6、注意:执行脚本过程中报错:mysqldump: command not found

 系统默认没有找到查找/usr/bin下的命令文件,这里我们需要进行重新调整进行软链接设置。

1、找到MySQL安装目录

  find / -name mysql -print

2、添加软连接

  ln -fs /home/local/mysql/mysql-8.0.31/bin/mysqldump /usr/bin

  ln -fs /home/local/mysql/mysql-8.0.31/bin/mysql /usr/bin

二、达梦数据库备份

 达梦数据库是在位于docker容器下安装的

1、创建达梦数据库自动备份shell脚本

#!/bin/bash

#sxzhaom

#容器内数据库备份文件的路径

data_dir=/home/database/bak

log_dir=/home/database/bak

db_name='cms_core'

#删除超过多长时间的文件

time=3

filename='cms_core'

current_time=$(date +'%Y-%m-%d_%H%M%S')

#容器内数据库备份文件的路径及文件名

filepath=$data_dir/$filename$current_time'.dmp'

fileLog=$log_dir/$filename$current_time'.log'

echo '开始导出数据库...'

#./dexp SYSDBA/SYSDBA:5236 schemas=$db_name file=$filepath log=$fileLog

#删除docker容器内之前备份的文件

docker exec 5889f22d1006 /bin/sh -c 'cd /home;\rm -rf cms_core.dmp'

docker exec 5889f22d1006 /bin/sh -c 'cd /home;\rm -rf cms_core.log'

#导出数据库文件到docker

docker exec 5889f22d1006 /bin/sh -c 'cd /dm8/bin;\./dexp SYSDBA/SYSDBA:5236 schemas=test file=/home/cms_core.dmp log=/home/cms_core.log'

#docker exec -it 5889f22d1006 /bin/bash

#复制docker内文件到外部系统

docker cp 5889f22d1006:/home/cms_core.dmp $filepath

docker cp 5889f22d1006:/home/cms_core.log $fileLog

echo '导出成功,文件名为: '$filepath  日志为:$fileLog

#删除外部超过3天的文件

find $data_dir/*.dmp -type f -mtime +$time | xargs rm -f

2、添加到定时任务

  加入要执行的定时任务脚本

  crontab -e  

数据库自动备份和自启动_第3张图片

你可能感兴趣的:(数据库,mysql,java,linux)