1. 物理冷备份与恢复
  • 关闭MySQL数据库 
  • 使用tar命令直接打包数据库文件夹 
  • 直接替换现有MySQL目录即可
# systemctl stop mysqld

# yum -y install xz					#xz是一个压缩工具
	#压缩备份
# tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
	#解压恢复
#tar Jxvf /opt/mysql_all_2023-07-17.tar.xz -C /usr/local/mysql/data

#systemctl start mysqld

  1. mysqldump全量备份

直接上命令,自己填充对应的内容

./mysqldump -u root -p --lock-all-tables --flush-logs [dbname] > /root/db/backup.sql
Enter password: #输入root密码


以下使用的数据库备份脚本文件网上摘取,自行选择

脚本文件功能不是很复杂,相应的变量改成自己的值即可 。

#!/bin/bash
#在使用之前,请提前创建以下各个目录
#获取当前时间
date_now=$(date "+%Y%m%d-%H%M%S")
backUpFolder=/home/db/backup/mysql
username="root"
password="123456"
db_name="zone"
#定义备份文件名
fileName="${db_name}_${date_now}.sql"
#定义备份文件目录
backUpFileName="${backUpFolder}/${fileName}"
echo "starting backup mysql ${db_name} at ${date_now}."
/usr/bin/mysqldump -u${username} -p${password}  --lock-all-tables --flush-logs ${db_name} > ${backUpFileName}
#进入到备份文件目录
cd ${backUpFolder}
#压缩备份文件
tar zcvf ${fileName}.tar.gz ${fileName}
 
# use nodejs to upload backup file other place
#NODE_ENV=$backUpFolder@$backUpFileName node /home/tasks/upload.js
date_end=$(date "+%Y%m%d-%H%M%S")
echo "finish backup mysql database ${db_name} at ${date_end}."

恢复全量备份

./mysql -h localhost -uroot -p123 [dbname]  < /root/db/backup.sql

或者

mysql> use db;
mysql> source /path/backup/bakdup.sql

在恢复全量备份之后,要将全量备份之后的增量备份也恢复回数据库中。