1.先检查安装crontabs
yum install crontabs
2.在home目录下指定路径新建文件夹
3.新建执行脚本,在里面写入命令
touch mysql_backup.sh
shell脚本如下:
#!/bin/bash
#保存备份个数,备份14天数据
number=14
#备份保存路径
backup_dir=/home/tjgeo/back/mysqlbak
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=XXX
#密码
password=XXX
#将要备份的数据库 (全库备份)
database_name=all
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
echo '****************************************************************************'>> $backup_dir/log.log
echo '1、开始备份数据:文件名称:'$database_name'-'$dd'.tar.gz开始时间:'$dd>> $backup_dir/log.log
#备份全库
$tool --socket=/home/xxx/mysql/mysql.sock -u $username -p$password -A> $backup_dir/$database_name-$dd.sql
cd $backup_dir
#压缩备份文件
tar -czf $database_name-$dd.tar.gz $database_name-$dd.sql
#删除 原备份文件
rm $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo '2、创建备份文件 '$backup_dir'/'$database_name'-'$dd'.tar.gz' >> $backup_dir/log.log
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.tar.gz | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.tar.gz | awk '{print $9 }' | wc -l`
ii=1
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo '3."&ii"删除14天前备份 '$delfile>> $backup_dir/log.log
ii=ii+1
fi
echo '4.备份完成' >> $backup_dir/log.log
echo '*****************************************'>> $backup_dir/log.log
4.在命令行写入crontab -e
写入每天两点执行 0 2 * * * /home/tjgeo/back/mysqlbak/mysql_backup.sh
5.crontab常用命令,启动服务
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
6.在/var/spool/mail中的root中可以查看服务日志
7.mysql_backup.sh提示权限不够,可以chmod 777 mysql_backup.sh
8.提示以下报错
crond: /usr/sbin/sendmail: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
mysql8.0是二进制包安装的,位置是/usr/local/mysql8下,然后我看了下/usr/local/mysql8/lib/下是没有libmysqlclient.so.18这个文件的.
这时候你可以在其他安装了mysql数据库的服务器上查找下这个文件
# find / -name libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18
ll /usr/lib64/mysql/
总用量 19116
lrwxrwxrwx 1 root root 20 2月 7 2021 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx 1 root root 24 2月 7 2021 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0
lrwxrwxrwx 1 root root 24 2月 7 2021 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
-rwxr-xr-x 1 root root 9578168 6月 10 2019 libmysqlclient.so.18.1.0
lrwxrwxrwx 1 root root 25 2月 7 2021 libmysqlclient.so.20 -> libmysqlclient.so.20.3.14
-rwxr-xr-x 1 root root 9989088 6月 10 2019 libmysqlclient.so.20.3.14
drwxr-xr-x 4 root root 28 2月 7 2021 mecab
drwxr-xr-x. 3 root root 4096 2月 7 2021 plugin
此时将 libmysqlclient.so.18.1.0 这个文件下载下来然后上传到缺少libmysqlclient.so.18文件的服务器上的/usr/local/mysql8/lib/目录下,然后记得给执行权限和做本地软连接
# chmod +x libmysqlclient.so.18.1.0
在本地创建文件软连接
# ln -s libmysqlclient.so.18.1.0 libmysqlclient.so.18
# chown mysql:mysql libmysqlclient.so.18*
ll
总用量 145904
-rw-r--r-- 1 mysql mysql 106474328 12月 18 01:50 libmysqlclient.a
lrwxrwxrwx 1 mysql mysql 20 12月 18 02:28 libmysqlclient.so -> libmysqlclient.so.21
lrwxrwxrwx 1 root root 24 6月 1 11:06 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
-rwxr-xr-x 1 mysql mysql 9578168 6月 1 11:04 libmysqlclient.so.18.1.0
lrwxrwxrwx 1 mysql mysql 25 12月 18 02:28 libmysqlclient.so.21 -> libmysqlclient.so.21.2.28
-rwxr-xr-x 1 mysql mysql 33294176 12月 18 01:49 libmysqlclient.so.21.2.28
-rw-r--r-- 1 mysql mysql 44630 12月 18 01:46 libmysqlservices.a
drwxr-xr-x 4 mysql mysql 28 12月 18 02:28 mecab
drwxr-xr-x 2 mysql mysql 28 12月 18 02:28 pkgconfig
drwxr-xr-x 3 mysql mysql 4096 12月 18 02:28 plugin
drwxr-xr-x 4 mysql mysql 4096 12月 18 02:28 private
然后修改下/etc/ld.so.conf文件
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
在/etc/ld.so.conf.d/下创建mysql.conf文件并加入/usr/local/mysql8/lib/
# cat /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql8/lib/
再运行:/sbin/ldconfig -v 更新一下配置即可。
/sbin/ldconfig -v