# 备份单个数据库
mysqldump -u用户名 -p密码 数据库名 > 备份文件名.sql
# 备份所有数据库
mysqldump -u用户名 -p密码 --all-databases > 全量备份.sql
# 示例(备份名为mydb的数据库)
mysqldump -uroot -p123456 mydb > /backup/mydb_$(date +%Y%m%d).sql
# 停止MySQL服务
service mysql stop
# 复制数据目录
cp -R /usr/local/mysql/data /backup/mysql_data_backup
# 启动MySQL服务
service mysql start
mysqlhotcopy -u用户名 -p密码 数据库名 /backup/path/
#!/bin/bash
# 定义变量
DB_USER="root"
DB_PASS="yourpassword"
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 获取所有数据库列表
DATABASES=$(mysql -u$DB_USER -p$DB_PASS -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)")
# 循环备份每个数据库
for db in $DATABASES
do
mysqldump -u$DB_USER -p$DB_PASS --databases $db > $BACKUP_DIR/$DATE/$db.sql
done
# 压缩备份文件
tar -zcvf $BACKUP_DIR/mysql_backup_$DATE.tar.gz $BACKUP_DIR/$DATE
# 删除临时目录
rm -rf $BACKUP_DIR/$DATE
# 删除7天前的备份
find $BACKUP_DIR -name "mysql_backup_*.tar.gz" -type f -mtime +7 -exec rm -f {} \;
# 恢复单个数据库
mysql -u用户名 -p密码 数据库名 < 备份文件.sql
# 恢复所有数据库
mysql -u用户名 -p密码 < 全量备份.sql
# 示例
mysql -uroot -p123456 mydb < /backup/mydb_20230101.sql
# 停止MySQL服务
service mysql stop
# 恢复数据目录
cp -R /backup/mysql_data_backup /usr/local/mysql/data
# 启动MySQL服务
service mysql start
# 从完整备份中提取特定表的SQL语句
sed -n '/^-- Table structure for table `表名`/,/^-- Table structure for table/p' 备份文件.sql > 表名.sql
# 然后导入该表
mysql -u用户名 -p密码 数据库名 < 表名.sql
在my.cnf配置文件中添加:
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
mysql -uroot -p -e "SHOW BINARY LOGS;"
# 恢复到指定时间点
mysqlbinlog --start-datetime="2023-01-01 00:00:00" --stop-datetime="2023-01-01 23:59:59" mysql-bin.000001 | mysql -u用户名 -p密码
# 恢复到指定位置
mysqlbinlog --start-position=107 --stop-position=1000 mysql-bin.000001 | mysql -u用户名 -p密码
通过以上方法,您可以在LNMP环境中有效地备份和恢复MySQL数据库,确保数据安全。