找回密码
 立即注册
首页 业界区 安全 linux备份mysql到另一个linux,异地定时备份 ...

linux备份mysql到另一个linux,异地定时备份

趣侮 6 小时前

  • 163,备份服务器
  • 165,mysql服务器
  • 使用NFS文件共享
  • ubuntu系统
  • mysql8
首先确认服务器版本
  1. uname -a
  2. 或者
  3. uname -r
复制代码
1.png

确认为ubuntu系统
安装nfs

nfs分为服务端(实际文件储存的服务器163)和客户端(存入者165)
服务端
  1. sudo apt update && sudo apt install nfs-kernel-server
复制代码
客户端
  1. sudo apt update && sudo apt install nfs-common
复制代码
安装中会有确认,需要填入【Y】进行继续
创建和配置文件夹

服务端
  1. sudo mkdir /shared
  2. sudo chmod 777 /shared
复制代码
编辑配置文件/etc/exports,添加共享规则:
  1. /shared 192.168.13.3/24(rw,sync,no_subtree_check,no_root_squash)
复制代码
其中ip是客户端的ip
可以在客户端使用
  1. ip a
复制代码
进行查询
也可以使用*号来同意所有ip的访问(可能不安全),如:
  1. /shared *(rw,sync,no_subtree_check,no_root_squash)
复制代码
其他参数

  • rw:读写权限。
  • sync:同步写入磁盘。
  • no_root_squash:允许客户端root用户保留权限(谨慎使用)。
启用

服务端
  1. sudo systemctl start rpcbind nfs-server
  2. sudo systemctl enable rpcbind nfs-server
复制代码
应用配置
  1. sudo exportfs -arv
复制代码
客户端挂载共享文件夹
  1. sudo mkdir /nfs_shared/163
复制代码
此处文件名(163)请自定义
指定服务端的文件夹
  1. sudo mount -t nfs 服务端IP:/shared /nfs_shared/163
复制代码
此处的服务端ip同样使用(ip a)去服务端获取
校验
  1. df -h
复制代码
mysql定时备份

mysql使用linux的定时器执行命令行进行备份
进入mysql的服务器(也就是客户端)
创建脚本

一般放在
/usr/local/bin/mysql_backup.sh
可以自定义
进入目录
cd /usr/local/bin/
创建脚本
nano mysql_backup.sh
配置内容(每天备份,删除超过7天的)
  1. #!/bin/bash
  2. # 检查NFS挂载点是否存在
  3. if ! mountpoint -q "/nfs_shared/163"; then
  4.     echo "Error: NFS not mounted. Attempting to remount..."
  5.     mount /nfs_shared/163 || exit 1
  6. fi
  7. # 数据库凭据
  8. DB_USER="用户名"
  9. DB_PASSWORD="密码"
  10. DB_NAME="数据库名称"
  11. # 备份目录(这里使用的是共享的目录
  12. BACKUP_DIR="/nfs_shared/163/mysqlBackups"
  13. DATE=$(date +"%Y%m%d%H%M%S")
  14. # 创建备份目录(如果不存在)
  15. mkdir -p $BACKUP_DIR
  16. # 备份数据库
  17. mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
  18. # 压缩备份文件
  19. gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
  20. # 删除超过7天的备份文件
  21. find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;
复制代码
ctrl+x退出
按Y保存
按回车退出
赋予脚本执行权限
  1. sudo chmod +x /usr/local/bin/mysql_backup.sh
复制代码
设置 cron 定时任务

创建文件夹
  1. mkdir /nfs_shared/163/mysqlBackups/
复制代码
使用 crontab -e 添加每天凌晨2点执行的备份任务:
  1. crontab -e
复制代码
执行crontab -e后会让你选择打开的编辑工具,一般是nano或者vim,无所谓
在新的一行添加:
  1. 0 2 * * * /usr/local/bin/mysql_backup.sh >> /nfs_shared/163/mysqlBackups/mysql_backup.log 2>&1
复制代码
查看root的定时任务
  1. sudo crontab -u root -l
复制代码
测试

可以手动执行脚本立刻继续备份进行。
并在两台服务器中访问共享地址来确认是否成功挂载。
经过7天以上查看备份文件查看是否删除了过期文件。
end


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册