目录
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 '导出成功,文件名为: '$filepathecho '删除过期文件'
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
crontab格式说明
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