昨天数据库被比特币勒索了,数据库都被删除了。淦!所以以后为了避免这种情况就需要给数据库做一下每日备份。
首先需要获取到docker中正在运行的容器Id(保证容器正在运行)
新建脚本文件 修改脚本文件内容更改成对应的数据
containerId = 容器id
UserName = 数据库用户名
Pwd=密码
dataBaseName =数据库名称
#!/bin/bash
dateBackup=$(date +%Y-%m-%d)
docker exec -i containerId bash -c 'mysqldump -defaults-extra-file=/home/my.cnf -uUserName -pPwd dataBaseName > /home/conversion_'${dateBackup}'.sql'
–defaults-extra-file这个参数一定是要加的如果你的数据库是5.6版本以上,因为这里好像是可以跳过MySQL的保护机制不需要你再次输入密码(有大佬知道的希望可以解惑),/home/my.cnf这个文件是我自己创建的,类似于这样就可以了
[client]
host = localhost
user = root
password = root
database = 123456
之后开始运行脚本
chmod u+x backup.sh
./backup.sh
如果脚本运行没问题的话就需要去docker的路径下去找你的备份脚本,如果不清楚的话也可以直接 find / -name ‘*.sql’ 在根目录下直接寻找sql后缀的文件
如果运行脚本后出现/bin/bash^M : bad interpreter : No such file or Directory这个问题后,将脚本通过vi或vim打开,按ESC进入命令模式。按:(冒号)输入set fileformat=unix。之后输入:(冒号)wq保存即可
最后再使用linux cron定时运行
crontab -e
0 5 * * * /xxx/backups/backup.sh (每日五点执行)