数据库备份
数据库备份
1. windows系统下的数据库备份脚本

windows 脚本需要先确认一下是不是GB2312
MySQL数据库
Oracle数据库
简单示例:https://blog.csdn.net/liangmengbk/article/details/130353606
@echo off
REM 获取当前日期和时间并格式化为YYYYMMDDHHmmss
set datetime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
REM 设置导出文件名和日志文件名
SET dumpfile=sdt_zhst_expdp_%datetime%.dmp
SET logfile=sdt_zhst_%datetime%.log
expdp sdt_zhst/sdt_zhst@127.0.0.1:1521/orcl directory=DPDATA1 dumpfile="%dumpfile%" logfile=%logfile%
REM 删除3天前的备份文件
FORFILES /P D:\temp /M sdt_zhst_*.dmp /D -3 /C "cmd /c echo %time% deleting..@file.. &del @file"
其中Oracle数据库 最好采用数据泵导出 expdp/impdp ,导出的文件小,而且快
上面的脚本 需要将备份的文件放在 D:\database_backup\Oracle,则需要先创建 逻辑目录 create directory dpdata1 as 'D:\database_backup\Oracle';
-- 创建
create directory dpdata1 as 'D:\database_backup\Oracle';
-- 修改
create or replace directory dpdata1 as 'E:\temp';
-- 删除
drop directory dpdata1;
-- 查看
select * from dba_directories;
注: 其中脚本中 WinRAR 命令,是主机安装了WinRAR并且配置了环境变量才能这样用
对于Oracle导出,设置的文件名比如 sdt_zhst_expdp.dmp --> 会被转为SDT_ZHST_EXPDP.DMP 导致后面找不到文件,比如压缩dmp则会以为找不到文件而被终止(Oracle需要注意的是大小写)
如果导出失败提示
mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
# 解决
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON yjydxj-cloud.* TO 'root'@'%';
FLUSH PRIVILEGES;
windows中bat脚本常用指令
2. Linux系统下的数据库备份脚本
mysql_bak.sh -- 目前没校验过
3. 数据库异地备份【windows传输到linux服务器上】
通过 scp 的方式进行文件传输实现数据库的备份
具体说明: 数据库服务器上先备份数据库文件,然后通过
scp实现文件传输,实现数据的异地备份
scp 命令用于在远程服务器与本地之间进行安全文件传输
scp /path/to/backup/file user@destination_host:/path/to/destination/directory
## 案例 将本机的D:\data\yjydxj-cloud.sql 文件 备份到192.168.110.130主机下的 home/temp目录下
scp -P 22 D:\data\yjydxj-cloud.sql root@192.168.110.130:/home/temp
scp -r /usr/local/redis/redis_backup.conf 192.168.110.231:/usr/local/redis
说明:
scp: 是 Secure Copy 的缩写,用于执行安全的文件复制操作。-P 22: 指定远程服务器的端口号,这里是 22。默认情况下,SSH(Secure Shell)使用 22 端口进行连接。D:\data\yjydxj-cloud.sql: 是本地系统上要传输的文件的路径和文件名。root@192.168.110.130:/home/temp: 是远程服务器的用户名、IP 地址和目标路径。其中,root是远程服务器的用户名,192.168.110.130是远程服务器的 IP 地址,/home/temp是远程服务器上的目标目录路径。
因此,该命令的作用是将本地系统上的 D:\data\yjydxj-cloud.sql 文件通过 SSH 连接到远程服务器,并将文件传输到远程服务器的 /home/temp 目录中。请确保本地文件路径和远程服务器的目标路径是正确的,并且您具有足够的权限执行该操作。
需要注意的是,执行此命令时,您需要在本地系统和远程服务器之间已经建立了 SSH 连接,并且具有适当的身份验证(例如,使用用户名和密码或 SSH 密钥)来进行文件传输。
特别说明
在默认情况下,SCP 命令需要提供远程主机的密码进行身份验证。如果您执行 SCP 命令时没有提供密码,它将提示您输入密码。
如果您希望在执行 SCP 命令时不需要手动输入密码,可以考虑使用 SSH 密钥进行身份验证。SSH 密钥由公钥和私钥组成,您可以将公钥添加到远程主机上的授权列表中,从而允许无密码访问。
使用 SSH 密钥进行无密码访问的一般步骤
需要支持 ssh命令,目前不确定是那个软件支持的,可以将windows下的
C:\Windows\System32\OpenSSH目录拷贝到目标服务器上,并且配置好环境变量(这时应该会报错提示缺少一个dll脚本,一并拷贝到目标服务器即可)
- windows安装ssh-client(可以从别的windows复制过去)
- 生成pub公钥文件(ssh-keygen),并将内容复制到目标服务器的~/.ssh/authorized_keys 中
- 加快sshd服务响应
/etc/ssh/sshd_config文件中修改- DNS关闭改为no
- GSSAPIAuthentication改为no
具体步骤
目前测试只用到了前2步,并且没有~/.ssh/authorized_keys 文件,通过创建authorized_keys 文件后实现。同时在
/etc/ssh/sshd_config中修改了配置用来加快传输
生成 SSH 密钥对:在您的本地计算机上生成 SSH 密钥对。可以使用
ssh-keygen命令来生成密钥对。例如:ssh-keygen -t rsa这将生成一个 RSA 密钥对,包括公钥和私钥。
C:\Users\lihuan\.ssh\id_rsa.pub中的内容将公钥复制到远程主机:将生成的公钥(通常是
~/.ssh/id_rsa.pub文件内容)复制到远程主机的~/.ssh/authorized_keys文件中如果在目标主机上找不到
~/.ssh/authorized_keys目录或文件,可能有以下几种情况:目录不存在:
~/.ssh/目录是用于存储 SSH 相关文件的默认目录,包括密钥文件和授权文件。如果目录不存在,您可以手动创建它。在目标主机上执行以下命令创建
~/.ssh/目录:mkdir -p ~/.ssh ## 创建authorized_keys 文件 touch ~/.ssh/authorized_keys ## 进入authorized_keys 文件将 主机生成的 id_rsa.pub内容粘贴到authorized_keys文件中,保存即可 vi ~/.ssh/authorized_keys文件权限问题:目标主机上的
~/.ssh/目录及其文件应具有适当的权限才能正常工作。确保~/.ssh/目录的权限设置为700,而~/.ssh/authorized_keys文件的权限设置为600。在目标主机上执行以下命令更改权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keysSSH 服务器配置问题:如果您仍然找不到
~/.ssh/authorized_keys文件,可能存在 SSH 服务器配置问题。请检查目标主机上的 SSH 服务器配置文件(通常位于/etc/ssh/sshd_config)中的配置项AuthorizedKeysFile,确保它指向正确的文件路径。
配置 SSH 代理:在您的本地计算机上启动 SSH 代理,以便在进行 SSH 连接时自动使用密钥进行身份验证。可以使用
ssh-agent命令来启动代理。例如:ssh-agent添加私钥到 SSH 代理:将生成的私钥添加到 SSH 代理中,以便进行身份验证。可以使用
ssh-add命令来添加私钥。例如:ssh-add ~/.ssh/id_rsa
完成上述步骤后,您应该能够在执行 SCP 命令时实现无密码访问。SCP 命令将使用 SSH 密钥进行身份验证,并自动进行文件传输,而无需手动输入密码。
请注意,使用 SSH 密钥进行身份验证可以提高安全性,并方便进行自动化脚本或批处理任务。确保妥善保管私钥,并仅将公钥添加到授权列表中的远程主机上。
检查 linux 上是否有安装 SSH 客户端rpm -qa | grep openssh-clients
4. windows 开启定时任务
- 创建任务
- 设置触发器(指定脚本执行时间)
- 选择执行脚本
win+R 下 打开
compmgmt.msc打开 计算机管理taskschd.msc打开 任务计划程序
创建任务

新建触发器,指定每天固定时间点执行

选择执行的脚本
