Linux下实现Mysql的本地备份,异地备份
两台服务器均为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的本地备份,异地备份相关推荐
- linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据
本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: ...
- 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离
表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...
- mysql安装设置数据目录下,linux下安装mysql数据+配置
<linux下安装mysql数据+配置>由会员分享,可在线阅读,更多相关<linux下安装mysql数据+配置(2页珍藏版)>请在人人文库网上搜索. 1.Redhat下安装My ...
- Linux下开启mysql数据库的远程访问权限
摘要:今天在Linux服务器上安装了msyql数据库,在本地访问的时候可以访问,但是我想通过远程的方式访问的时候就不能访问了,查询资料后发现,Linux下mysql默认安装完成后只有本地访问的权限,没 ...
- linux下执行mysql的sql文件
linux下执行mysql的sql文件 mysql -uroot -proot 进入到mysql 然后执行source /var/ftp/pub/sogoodsoft.sql; 即可. www.2ct ...
- 脚本同步mysql数据_windows下数据库文件使用脚本同步到linux下的mysql数据库中
1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...
- Linux下安装mysql后无法启动的解决方法
在Linux下安装完mysql后,mysql服务无法启动,总是failer. 这个不是因为mysql安装失败,而是因为启动了SELinux. 进入/etc/selinux/co ...
- linux下无mysql命令_linux下mysql命令
1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...
- linux下转移mysql目录
linux下转移mysql目录 先停止mysql,备份以防出问题 第一种是mv原目录到新目录,设置相同权限,my.cnf中指定datadir 第二种是mv原目录到新目录,设置相同权限,然后ln目录到原 ...
最新文章
- 讨论oracle的反腐,关于oracle SCN 的讨论
- 鸽巢原理(The Pigeonhole Principle)(抽屉原理)
- new vue 方法参数_vue源码解析 lt;1gt; 数据驱动
- MXNet半精度(FP16)
- zookeeper运维管理
- [SCOI2015]情报传递(主席树+lca)
- java indexof效率_Java indexOf函数比Rabin-Karp更有效吗?文字搜寻效率
- LoadRunner常遇见的问题
- keras保存的h5、hdf5模型,加载时出现“AttributeError: ‘str‘ object has no attribute ‘decode‘ “
- Invoke-WebRequest Invoke-RestMethod 乱码研究
- 迅雷禁止更新设置方法【禁止升级】【禁止更新】
- 【axure手机原型】Axure实现iPhone推动切换效果
- AI智能与C语言pdf,AI:人工智能的本质与未来 完整版pdf 含epub+mobi+azw3
- 【SQL基础】SQLzoo练习
- 锐捷 linux共享wifi,电脑共享wifi都弱爆了,无线路由器直接共享锐捷
- 通信协议:CAN总线
- R数据分析——回归分析
- cat全链路监控_全链路监控选型
- [kaggle]泰坦尼克预测(代码解析)
- 69、弱电综合布线网络篇基础知识
热门文章
- mblock控制SG90舵机模块
- 基于javaweb+mysql的网上图书商城网上书店(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)
- 【ZZULIOJ】1085: 求奇数的乘积(多实例测试)
- 3C认证---GB4943-2011 、YD1032、GB 19484.1
- Vue2构建项目实战
- 软考高级(信息系统项目管理师)高频考点:项目质量管理
- 【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
- SonarQube 9.x集成阿里p3c代码规范检测java代码;
- ElasticJob使用与封装
- Java编辑工具——IDEA图标含义大全