1.postgresql
postgresql 的备份主要采用pg_dump命令
常用指令:
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储前运行SET ROLE
-t, --table=TABLE 只转储指定名称的表
-T, --exclude-table=TABLE 不转储指定名称的表
例如要导出:mymap数据
需要手动输入密码写法 pg_dump -h 127.0.0.1 -p 5432 -U postgres mymap > E:\mymap.bak
不需要手动输入密码写法:pg_dump “host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=postgres password=123456 dbname=mymap” > “E:\mymap.bak”
导入:
psql -h 127.0.0.1 -p 5432 -U postgres mymap < E:\mymap.bak
bat 脚本 (全库备份,且过期备份文件不会删除,需要人工定期去删除过期文件)
@echo off
set dbpath=E:\backup
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
IF NOT EXIST "%dbpath%\%Ymd%" md "%dbpath%\%Ymd%"
"E:\PostgreSQL\10\bin\pg_dump.exe" "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=postgres password=123456 dbname=mymap" > "%dbpath%\%Ymd%\backup_%Ymd%_mymap.bak"
备份的同时删除两天前的文件(需要支持forfiles)
@echo off
set dbpath=E:\backup
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
forfiles /p "%dbpath%" /s /m *.* /d -2 /c "cmd /c del @path"
IF NOT EXIST "%dbpath%\%Ymd%" md "%dbpath%\%Ymd%"
"E:\PostgreSQL\10\bin\pg_dump.exe" "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=postgres password=qwerty123 dbname=jg" > "%dbpath%\%Ymd%\backup_%Ymd%_jg.bak"
"E:\PostgreSQL\10\bin\pg_dump.exe" "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=postgres password=qwerty123 dbname=slj" > "%dbpath%\%Ymd%\backup_%Ymd%_slj.bak"
2.oracle
由于oracle 11g中当表无数据时,不分配segment,若是采用exp指令,就会出现少表的情况,所以采用expdp的方式进行导出
在使用expdp时,需要先创建一个导出目录
查询oracle现有目录:
select * from dba_directories;
创建导出目录:
1.登陆数据库
sqlplus system/123456@orcl
2.创建备份目录(此处创建的目录,并不会在磁盘上创建,需要你自己在磁盘上手动创建)
create directory dpdata1 as 'D:\temp\dmp'; (dpdata1是目录名创建路径对应的是as后面的)
2.1查看是否创建成功
select * from dba_directories;
3.赋予权限
grant read,write on directory dpdata1 to user; (此处的user对应的是你的数据库中的用户名)
导出:
expdp user/password@orcl directory=dpdata1 dumpfile=aa.dmp logfile=aa.log schemas=user
对应导入:
impdp user/password directory=dpdata1 dumpfile=aa.dmp remap_schema=user1:user full=y;
windows下bat脚本备份(此备份为全库备份):
@echo off
expdp dbhzt/123456@orcl directory=LOG_FILE_DIR dumpfile=aa.dmp logfile=aa.log schemas=dbhzt
3.mysql 备份
mysql 的备份主要采用mysqldump指令
导出
mysqldump -hlocalhost -P3306 -uroot -p123456 dbname > "filepath/test.sql"
windows 下bat脚本
@echo off
set dbpath=E:\backup
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
"E:\mariadb-10.0.17-winx64\bin\mysqldump" -hlocalhost -P3306 -uroot -p123456 dbname > "%dbpath%\%Ymd%\backup_%Ymd%.sql"