两台服务器均为Linux服务器,其中数据库服务器的MySQL使用docker部署

一、使用SCP实现服务器间无需输入密码传输文件

本地备份的服务器IP:10.0.0.223
异地备份的服务器IP:10.0.0.195

1、在服务器10.0.0.223上执行如下命令来生成配对密钥:

# 运行命令
ssh-keygen -t rsa

提示的地方一般直接回车就行,我这边之前已经执行过命令了,目录下已经存在文件了

2、将 /root/.ssh/ 目录中的 id_rsa.pub 文件复制到服务器10.0.0.195的 /root/.ssh/ 目录中,并改名为 authorized_keys
附:如果远程服务器中已经存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时将验证文件内容附加上去即可。先在本地服务器上执行脚本 scp ~/.ssh/id_rsa.pub root@10.0.0.195:/root/.ssh/s.pub,然后在远程服务器上执行 cat ~/.ssh/s.pub >> ~/.ssh/authorized_keys

# 运行命令
scp .ssh/id_rsa.pub root@10.0.0.195:/root/.ssh/authorized_keys

3、尝试传输文件验证是否生效,可以看到传输已经不需要输入密码了

二、编写备份脚本

该脚本主要实现本地备份数据库脚本后,再将数据库脚本复制到指定服务器的指定目录下,目录和文件名按需替换

#!/bin/bash
# 异地备份服务器IP,备份目录
db_backup_host=10.0.0.195
db_backup_host_dir=/vdb/backup/10.0.0.223_mysql/
# 本地备份的数据库容器名,端口,用户名,密码,数据库名
db_container=mysql
db_container_port=5306
db_user=user
db_password=password
db_name=test
db_backup_dir=/vdb/backup/mysql/
# 定义以当前日期,当前时间命名的变量
ymd=$(date +'%Y%m%d')
hms=$(date +'%H%M%S')
# 本地以当前日期命名的文件备份目录
filepath=/vdb/backup/mysql/$ymd
# 异地以当前日期命名的文件备份目录
backup_host_filepath=/vdb/backup/10.0.0.223_mysql/$ymd
echo '开始备份数据库...'if [ ! -d $filepath ];thenecho '不存在目录则创建以当前时间命名的目录'mkdir -p $filepathecho '成功创建目录'echo '备份数据库到创建的文件夹下'docker exec -it  $db_container mysqldump -u$db_user -p$db_password -P$db_container_port $db_name > $filepath/$db_name$hms'.sql'echo '复制备份数据库到远程服务器的目录下'scp -r $filepath root@$db_backup_host:$db_backup_host_direlseecho '备份数据库到创建的文件夹下'   docker exec -it  $db_container mysqldump -u$db_user -p$db_password -P$db_container_port $db_name > $filepath/$db_name$hms'.sql'echo '复制备份数据库到远程服务器的目录下'      scp $filepath/$db_name$hms.sql root@$db_backup_host:$backup_host_filepath/fi
echo '备份成功,文件名为: '$filepath/$db_name$hms'.sql'

三、为备份脚本设置定时任务

# 本地服务器的目录
/
└──vdb└── backup # 备份目录├── mysql # mysql备份目录├── mysqlbackup.sh # 备份脚本├── 20220406 ├── test3151424.sql # 数据库备份文件├── test3145604.sql # 数据库备份文件
└──usr└── lib├── systemd ├── system├── mysqlbackup.service├── mysqlbackup.timer# 异地服务器的目录
/
└──vdb└── backup # 备份目录├── 10.0.0.223_mysql # mysql备份目录├── 20220406 ├── test3151424.sql # 数据库备份文件├── test3145604.sql # 数据库备份文件

配置定时任务,比如每天11点10分进行一次备份

1、进入/usr/lib/systemd/system/目录中,vim mysqlbackup.service创建mysqlbackup.service文件

[Unit]
Description=mysqlbackup service[Service]
ExecStart=/bin/bash /vdb/backup/mysql/mysql_backup.sh

2、进入/usr/lib/systemd/system/目录中,vim mysqlbackup.timer创建mysqlbackup.timer文件

[Unit]
Description=每天11点10分执行[Timer]
# OnCalendar:基于绝对时间,而不是相对时间执行
OnCalendar=*-*-* 11:10:00
# Unit:真正要执行的任务,默认是同名的带有.service后缀的单元
Unit=mysqlbackup.service[Install]
WantedBy=multi-user.target

3、启动Timer单元

systemctl daemon-reload
systemctl enable mysqlbackup.timer
systemctl start mysqlbackup.timer

附:删除定时器

# 关闭开机启动(即删除目录链接)
systemctl disable mytimer.timer
# 关闭单元
systemctl stop mytimer.timer
# 关闭服务
systemctl stop mytimer.service
#之后删除timer 和Service文件
# 重新加载配置
systemctl daemon-reload

四、实现效果

最终可以实现本地备份后,往指定的服务器的指定目录上传备份文件

Linux下实现Mysql的本地备份,异地备份相关推荐

  1. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据

    本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: ...

  2. 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离

    表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...

  3. mysql安装设置数据目录下,linux下安装mysql数据+配置

    <linux下安装mysql数据+配置>由会员分享,可在线阅读,更多相关<linux下安装mysql数据+配置(2页珍藏版)>请在人人文库网上搜索. 1.Redhat下安装My ...

  4. Linux下开启mysql数据库的远程访问权限

    摘要:今天在Linux服务器上安装了msyql数据库,在本地访问的时候可以访问,但是我想通过远程的方式访问的时候就不能访问了,查询资料后发现,Linux下mysql默认安装完成后只有本地访问的权限,没 ...

  5. linux下执行mysql的sql文件

    linux下执行mysql的sql文件 mysql -uroot -proot 进入到mysql 然后执行source /var/ftp/pub/sogoodsoft.sql; 即可. www.2ct ...

  6. 脚本同步mysql数据_windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  7. Linux下安装mysql后无法启动的解决方法

    在Linux下安装完mysql后,mysql服务无法启动,总是failer.       这个不是因为mysql安装失败,而是因为启动了SELinux.       进入/etc/selinux/co ...

  8. linux下无mysql命令_linux下mysql命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  9. linux下转移mysql目录

    linux下转移mysql目录 先停止mysql,备份以防出问题 第一种是mv原目录到新目录,设置相同权限,my.cnf中指定datadir 第二种是mv原目录到新目录,设置相同权限,然后ln目录到原 ...

最新文章

  1. 讨论oracle的反腐,关于oracle SCN 的讨论
  2. 鸽巢原理(The Pigeonhole Principle)(抽屉原理)
  3. new vue 方法参数_vue源码解析 lt;1gt; 数据驱动
  4. MXNet半精度(FP16)
  5. zookeeper运维管理
  6. [SCOI2015]情报传递(主席树+lca)
  7. java indexof效率_Java indexOf函数比Rabin-Karp更有效吗?文字搜寻效率
  8. LoadRunner常遇见的问题
  9. keras保存的h5、hdf5模型,加载时出现“AttributeError: ‘str‘ object has no attribute ‘decode‘ “
  10. Invoke-WebRequest Invoke-RestMethod 乱码研究
  11. 迅雷禁止更新设置方法【禁止升级】【禁止更新】
  12. 【axure手机原型】Axure实现iPhone推动切换效果
  13. AI智能与C语言pdf,AI:人工智能的本质与未来 完整版pdf 含epub+mobi+azw3
  14. 【SQL基础】SQLzoo练习
  15. 锐捷 linux共享wifi,电脑共享wifi都弱爆了,无线路由器直接共享锐捷
  16. 通信协议:CAN总线
  17. R数据分析——回归分析
  18. cat全链路监控_全链路监控选型
  19. [kaggle]泰坦尼克预测(代码解析)
  20. 69、弱电综合布线网络篇基础知识

热门文章

  1. mblock控制SG90舵机模块
  2. 基于javaweb+mysql的网上图书商城网上书店(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)
  3. 【ZZULIOJ】1085: 求奇数的乘积(多实例测试)
  4. 3C认证---GB4943-2011 、YD1032、GB 19484.1
  5. Vue2构建项目实战
  6. 软考高级(信息系统项目管理师)高频考点:项目质量管理
  7. 【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
  8. SonarQube 9.x集成阿里p3c代码规范检测java代码;
  9. ElasticJob使用与封装
  10. Java编辑工具——IDEA图标含义大全