定时备份Mysql

20 篇文章 0 订阅
7 篇文章 0 订阅

定时备份即是在Mysql的生产环境中启动一个定时任务,每隔一段时间使用mysqldump工具执行一次备份。

1.创建shell脚本

cd /home/joyulf/

mkdir mysql_data_back

touch /mysql_data_back/mysql.sh

vim /mysql_data_back/mysql.sh

在mysql.sh填入以下内容,根据实际情况进行修改

#!/bin/sh
cd /home/joyulf/mysql_data_back
echo "已切换到备份目录,开始备份..."
mv bakmysql* /home/joyulf/mysql_data_back
echo "旧文件已保存到/home/joyulf/mysql_data_back"
Now=$(date +"%d-%m-%Y")
Mysqlpd="root"
File=bakmysql-$Now.sql.gz
echo "开始dump数据库..."
mysqldump -uroot -p$Mysqlpd dms_erp | gzip > $File
echo "dump success!开始远程复制..."
passwd="root"
# expect <<EOF
# spawn /usr/bin/scp $File root@10.19.3.13:/usr/local/$File
# expect {
    # "密码:"
            # {
           # send "$passwd\n"
          # }
    # "pass"
          # {
            # send "$passwd\n"
          # }
    # "yes/no"
           # {
           # sleep 5
           # send_user "send yes"
           # send "yes\n"
                    # }
    # eof
     # {
         # sleep 5
         # send_user "eof\n"
     # }
# }
# send "exit\r"
# expect eof
# EOF
echo "复制全部完成!即将退出..."

下面是截至到2019.1.25备份情况

 

下面是邮箱也收到备份的压缩包:

 

 

sh mysql.sh备份报错mysqldump执行时Got error: 1045: Access denied for user 'root'@'localhost' (using p时,

mysqldump执行时Got error: 1045: Access denied for user  'root'@'localhost' (using password: YES) when trying to connect

解决办法

登录mysql客户端

mysql -hserverip -uroot -p

mysql> use mysql;
Database changed

mysql> update user set password=password('new password') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

2.安装crontab

crontab命令用来将crontab文件提交给cron进程执行

yum install -y vixie-cron

yum install -y crontabs

yum install -y expect #用作自动密码登录

等到操作完成。检查是否已安装:

$ service crond status
crond 已停

crond 启动停止

启动服务: service crond start 
关闭服务: service crond stop 
重启服务: service crond restart 
重新载入配置:service crond reload 
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
没有就加入开机自动启动:免得每次手动启动麻烦:chkconfig --level 35 crond on

3.创建定时任务

创建一个每晚2点执行一次mysql备份时程表:

 touch bakcron
 vi bakcron

加入一下内容,保存退出。(或者直接执行crontab -e 进行编辑)

 0 2 * * * /bin/sh /home/joyulf/mysql.sh

/home/joyulf/mysql.sh为数据库备份操作脚本

4.执行定时任务

在命令行输入

crontab bakcron

   
查看/var/spool/cron目录,可以看到有文件名为用户名的文件。

 

 

"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
 

 

rsync 无密码 传输

现在我们来设置ssh,以便在执行ssh操作时不需要密码,使用ssh-keygen在本地生成公钥和私钥。

$ ssh-keygen
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

提示:当提示输入密码时,只需输入两次回车键,不指配密码字符。

3.使用ssh-copy-id将公匙拷贝至远程主机

执行ssh-copy-id,将通过ssh-keygen生成的公匙拷贝至远程主机。

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.19.3.13

提示:执行以上操作时,将会提示输入远程主机帐户和密码,然后就会自动将公匙拷贝至远程目录。

无需密码通过ssh来执行rsync

现在,你可以不需要密码就可以ssh连接到远程主机

ssh 10.19.3.13

 

退出 exit

重新来执行rsync,现在应该就不会提示输入密码了

rsync -avzt /home/mysql_data_back/dms_erp/mysql_back root@10.19.3.13:/home/joyulf/mysql_data_back/rsync

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锅巴胸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值