唐山手机网站建设,怎么把百度到自己的网站,宁波网站建设官网,2021国内最好用免费建站系统一、环境
● Ubuntu版本查看
lsb_release -a● mysql 版本查看
mysql --version我的是ubuntu 20.04#xff0c;mysql是5.7.36#xff0c;所以要用 install_percona-xtrabackup-24
二、原理
备份
通过ubuntu自带的定时器运行增量备份脚本备份文件可以存储在映射后的其他…一、环境
● Ubuntu版本查看
lsb_release -a● mysql 版本查看
mysql --version我的是ubuntu 20.04mysql是5.7.36所以要用 install_percona-xtrabackup-24
二、原理
备份
通过ubuntu自带的定时器运行增量备份脚本备份文件可以存储在映射后的其他服务器目录也可以存在数据库所在的本地服务器目录只有在当日有新增数据库时才会产生新的备份路径不可增量备份Myisam
恢复
是将全量备份与各个日期的增量备份合并导回数据库
三、准备
百度网盘总是和谐我的资源所以现在我取消会员直接改用移动硬盘了 各个包都可以从此处下载 https://ubuntu.pkgs.org/22.04/ubuntu-main-amd64/locales_2.35-0ubuntu3_all.deb.html 下载好后统一放进一个文件夹内
1. 自动安装脚本 install_percona-xtrabackup-24.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Time : 2023/09/18 14:38
# Author: kudoxi
# File : install_percona-xtrabackup-80.sh
# Desc : 该安装脚本只适用于ubuntu20.04# 当前目录
path$(pwd)# 判断是否已经安装了安装过了最好谨慎安装防止是系统库
is_exist(){
package$1
package_deb$2if test ! -z $(dpkg -l | grep -w $package);thenecho -e $package exist # dpkg -i ${path}/$package_deb
elsedpkg -i ${path}/$package_deb
fi
}install(){is_exist libdbi-perl libdbi-perl_1.643-1ubuntu0.1_amd64.debis_exist libdbd-mysql-perl libdbd-mysql-perl_4.050-3ubuntu0.2_amd64.debis_exist libcurl4-openssl libcurl4-openssl-dev_7.68.0-1ubuntu2.19_amd64.debis_exist libev4:amd64 libev4_4.31-1_amd64.debis_exist percona-xtrabackup-24 percona-xtrabackup-24_2.4.20-1.focal_amd64.deb
}installinnobackupex --version2. 全量/增量备份脚本 mysql_incremental_backup.sh
#!/bin/bash# MySQL 用户名密码和主机名。需要备份权限。
MYSQL_USERroot
MYSQL_PASSWORD123456
MYSQL_HOST127.0.0.1
# 是否自动 0为手动 1为定时自动
IS_TIMER_OPEN1# 备份目录和日志文件的路径。确保这些目录存在并具有适当的权限。
ROOT_PATH/home/kudoxi
BASE_DIR$ROOT_PATH/temp
FULL_BACKUP_DIR$BASE_DIR/full
INCREMENTAL_BACKUP_DIR$BASE_DIR/incremental
LOG_FILE$BASE_DIR/backup.log
INCREMENTAL_DATE$(date %Y-%m-%d)# 非定时任务创建增量备份目录
if [ $IS_TIMER_OPEN -eq 0 ]; thenmkdir -p $BASE_DIR# 给权限cd $ROOT_PATHsudo chmod -R 777 $BASE_DIRcd $BASE_DIRmkdir -p $INCREMENTAL_BACKUP_DIRmkdir -p $INCREMENTAL_DIRsudo chmod -R 777 $INCREMENTAL_BACKUP_DIRsudo chmod -R 777 $INCREMENTAL_DIR
fiINCREMENTAL_DIR$INCREMENTAL_BACKUP_DIR/$INCREMENTAL_DATE# 检查全量备份是否需要准备
if [ ! -f $FULL_BACKUP_DIR/xtrabackup_checkpoints ]; thenecho Full backup needs to be prepared. Running prepare command... $LOG_FILEinnobackupex --defaults-file/etc/mysql/my.cnf --user$MYSQL_USER --password$MYSQL_PASSWORD --no-timestamp $FULL_BACKUP_DIR
fi# 执行增量备份
/usr/bin/xtrabackup --backup --target-dir$INCREMENTAL_DIR --incremental-basedir$FULL_BACKUP_DIR --user$MYSQL_USER --password$MYSQL_PASSWORD --host$MYSQL_HOST $LOG_FILE 21
# 检查备份结果
if [ $? -eq 0 ]; thenecho Incremental backup completed successfully. $LOG_FILE
elseecho Incremental backup failed. Please check the log for details. $LOG_FILE
fi
3. 备份恢复脚本 mysql_restore_backup.sh
#!/bin/bash# MySQL 用户名密码和主机名
MYSQL_USERroot
MYSQL_PASSWORD123456
MYSQL_HOST127.0.0.1# 备份目录和日志文件的路径
ROOT_PATH/home/kudoxi
BASE_DIR$ROOT_PATH/temp
FULL_BACKUP_DIR$BASE_DIR/full
INCREMENTAL_BACKUP_DIR$BASE_DIR/incremental
LOG_FILE$BASE_DIR/restore.logsystemctl stop mysql
mv /var/lib/mysql /var/lib/mysql_bak_$(date %Y-%m-%d-%H-%M-%S)# 恢复到的数据库目录
RESTORE_DIR$BASE_DIR/restore# 清除之前的恢复目录
if [ -d $RESTORE_DIR ]; thenrm -rf $RESTORE_DIR
fi# 恢复全量备份
echo Restoring full backup... $LOG_FILE
innobackupex --defaults-file/etc/mysql/my.cnf --copy-back --user$MYSQL_USER --password$MYSQL_PASSWORD $FULL_BACKUP_DIR $LOG_FILE 21# 检查是否成功恢复全量备份
if [ $? -eq 0 ]; then# 恢复增量备份echo Applying incremental backups... $LOG_FILEfor dir in $(ls -d $INCREMENTAL_BACKUP_DIR/*/); doecho Applying $dir... $LOG_FILEinnobackupex --defaults-file/etc/mysql/my.cnf --apply-log --redo-only --user$MYSQL_USER --password$MYSQL_PASSWORD --incremental-dir$dir $RESTORE_DIR $LOG_FILE 21done# 合并增量备份echo Merging incremental backups... $LOG_FILEinnobackupex --defaults-file/etc/mysql/my.cnf --apply-log --user$MYSQL_USER --password$MYSQL_PASSWORD --redo-only $RESTORE_DIR $LOG_FILE 21# 恢复完成后将恢复的数据目录移动到MySQL的数据目录if [ -d $RESTORE_DIR ]; thenmv $RESTORE_DIR/* /var/lib/mysql/elseecho Error: Restore directory does not exist or is empty. $LOG_FILEfi# 重新授权MySQL数据目录的权限chown -R mysql:mysql /var/lib/mysql# 重启MySQL服务systemctl restart mysql# 检查恢复结果if [ $? -eq 0 ]; thenecho Database restore completed successfully. $LOG_FILEelseecho Database restore failed. Please check the log for details. $LOG_FILEfi
elseecho Error: Failed to restore full backup. Please check the log for details. $LOG_FILE
fi四、安装 xtrabackup
把你设置的目录放到服务器根目录下比如我把安装脚本和安装包都放在了mysql-5.7.36
进入目录
cd ~/mysql-5.7.36执行安装
sudo bash install_percona-xtrabackup-24.sh验证安装成功
innobackupex --version五、设定定时
打开定时服务日志系统会默认关闭定时服务的日志
sudo vim /etc/rsyslog.d/50-default.conf解开注释 保存退出
重启日志服务
sudo service rsyslog restart过一段时间后定时日志就会刷新
tail -100 /var/log/cron.log六、数据库权限
先尝试不使用sudo 直接执行mysql命令是否可以进入
mysql -uroot -p如果失败则说明当前用户没有权限直接执行mysql命令 如果成功则跳过这一步
添加权限 将当前用户添加到名为mysql的组中并重新加载用户组 sudo usermod -aG mysql $USERsudo newgrp mysql七、全量备份
第一次安装好后需要先手动运行一次全量备份确定全量备份存储路径 比如我放在~/nas/164_mysql/里
cd ~/nas
sudo mkdir 164_mysql修改备份脚本存储的真实路径
sudo vim /home/manteia/mysql-5.7.36/mysql_incremental_backup.sh左下角输入:%s#temp#备份存放的路径#g 回车确定全局替换 2. 然后设定为手动模式 把1改为0 然后按ESC后输入:x 回车保存退出
运行全量备份脚本
cd ~/mysql-5.7.36
sudo bash mysql_incremental_backup.sh正常结果为
异常时可以查看日志
tail -100 ~/nas/164_mysql/backup.log八、设置定时增量备份
打开定时设置脚本
crontab -e选择习惯使用的编辑器
设置定时备份时间比如每天早上10点30分执行保存退出
30 10 * * * /bin/bash /home/kudoxi/mysql-5.7.36/mysql_incremental_backup.sh重启服务立刻生效
sudo service cron restart重设置增量脚本模式
sudo vim /home/kudoxi/mysql-5.7.36/mysql_incremental_backup.sh从0改为1后保存退出
设置脚本可执行权限
sudo chmod x /home/kudoxi/mysql-5.7.36/mysql_incremental_backup.sh成功后每天这个时间~/nas/164_mysql/incremental目录下就可以自动生成一个新的当天日期命名的数据如果失败则可以查看日志
tail -100 ~/nas/164_mysql/backup.log九、数据库恢复
执行备份脚本
sudo bash /home/kudoxi/mysql-5.7.36/mysql_restore_backup.sh成功后可以查看日志
tail -100 ~/nas/164_mysql/restore.log