Mysql数据库每天定时备份

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

        

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