Ubuntu中实现MySQL定时备份

xieshuoshuo 发布于 2024-03-21 354 次阅读 预计阅读时间: 3 分钟


使用版本:Ubuntu 20.04.06 LTS/Ubuntu 18.04.06 LTS MySQL 5.7.42

使用SSH连接上Ubuntu后,我们首先确认一下mysqldump是否安装成功,这个是安装MySQL时自动安装的,同时这个也是备份数据库的命令之一。

1、非Docker安装的MySQL

mysqldump --version

如果返回的是一个版本号,那就代表安装成功,例如:

mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.40, for Linux (x86_64)

如果返回的不是版本号或者是其他错误信息,就需要重新安装,安装命令如下(两个任选其一即可)。

sudo apt install mysql-client-core-8.0
sudo apt install mariadb-client-10.3

安装完成后,再次使用mysqldump --version命令检查是否安装成功。

接下来我们需要创建一个文件夹,这个文件夹用于储存脚本或者是备份的数据库,包括错误的日志也可以存放在里。

sudo mkdir /home/dates # 创建一个home文件夹下的dates文件夹
		
cd /home/dates # 进入dates文件夹
		
sudo vim backup_mysql.sh # 使用vim命令创建一个文件,我这里命名为backup_mysql.sh

进入文件后,把下面的文件复制进去

mysql_user="root" # 这个账号需要有备份的权限
mysql_password="123456" # 密码
mysql_database="test" # 需要备份的数据库

backup_file="/home/dates/mysql_backup_$(date +%Y%m%d_%H%M%S).sql" # 备份的数据库保存路径

mysqldump -u $mysql_user -p$mysql_password $mysql_database > $backup_file 2> /home/dates/mysql_backup_error.log # 使用 mysqldump 命令备份数据库,保存报错产生的日志存放

if [ $? -eq 0 ]; then # 检查备份是否成功
    echo "Database backup successful. Backup saved to: $backup_file"
else
    echo "Error: Database backup failed."
fi

复制进去后,点击esc,然后使用:wq退出保存,退出后,使用下面的命令赋予脚本权限

chmod +x backup_mysql.sh

至此,脚本已经写好了,接下来就是定时执行,使用下面的命令进入定时任务

sudo crontab -e

首次进入会有这样的提示,我们选择1即可,然后回车

进入编辑页面后,划到最下面,然后使用下面的命令加入定时任务,下面的定时任务是每天凌晨02:00执行脚本,命令解释 分钟 小时 * * * 脚本路径

0 2 * * * /home/dates/backup_mysql.sh #命令解释 分钟 小时 * * * 脚本路径

后面在Ubuntu 18.04.06 LTS上测试的时候,发现一直备份不了,就换成了下面的命令,备份成功

备份成功后,错误日志会记录mysqldump: [Warning] Using a password on the command line interface can be insecure.的警告。

安全起见可以不使用明文密码或者不用理会。

1、创建~/.my.cnf文件,命令:

nano ~/.my.cnf

2、在文件中添加账号密码

[client]
user=root
password=123456

3、设置权限,仅允许自己读取写入

chmod 600 ~/.my.cnf

4、保存关闭