postgresql如何备份数据库

Python017

postgresql如何备份数据库,第1张

postgresql中可以使用pg_dump来备份数据库。pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。

用法:

pg_dump [选项]... [数据库名字]

一般选项:

-f, --file=FILENAME output file or directory name

-F, --format=c|d|t|poutput file format (custom, directory, tar, plain text)

-v, --verbose详细模式

-Z, --compress=0-9 被压缩格式的压缩级别

--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败

--help 显示此帮助信息, 然后退出

--versoin输出版本信息, 然后退出

示例:

备份数据库,指令如下:

pg_dump -h 164.82.233.54 -U postgres databasename >C:databasename.bak

开始-运行-cmd 弹出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:

cd C:Program FilesPostgreSQL9.0bin

最后执行备份指令:

pg_dump -h 164.82.233.54 -U postgres databasename >C:databasename.bak

指令解释:

pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;

postgres 是数据库的用户名;databasename 是数据库名。

>意思是导出到C:databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C: Program FilesPostgreSQL9.0bin 文件夹里。

推荐学习《Python教程》。

阶段一:Python开发基础

Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等。

阶段二:Python高级编程和数据库开发

Python全栈开发与人工智能之Python高级编程和数据库开发知识学习内容包括:面向对象开发、Socket网络编程、线程、进程、队列、IO多路模型、Mysql数据库开发等。

阶段三:前端开发

Python全栈开发与人工智能之前端开发知识学习内容包括:Html、CSS、JavaScript开发、Jquery&bootstrap开发、前端框架VUE开发等。

阶段四:WEB框架开发

Python全栈开发与人工智能之WEB框架开发学习内容包括:Django框架基础、Django框架进阶、BBS+Blog实战项目开发、缓存和队列中间件、Flask框架学习、Tornado框架学习、Restful API等。

阶段五:爬虫开发

Python全栈开发与人工智能之爬虫开发学习内容包括:爬虫开发实战。

阶段六:全栈项目实战

Python全栈开发与人工智能之全栈项目实战学习内容包括:企业应用工具学习、CRM客户关系管理系统开发、路飞学城在线教育平台开发等。

阶段七:算法&设计模式

阶段八:数据分析

Python全栈开发与人工智能之数据分析学习内容包括:金融量化分析。

阶段九:机器学习、图像识别、NLP自然语言处理

Python全栈开发与人工智能之人工智能学习内容包括:机器学习、图形识别、人工智能玩具开发等。

阶段十:Linux系统&百万级并发架构解决方案

阶段十一:高并发语言GO开发

Python全栈开发与人工智能之高并发语言GO开发学习内容包括:GO语言基础、数据类型与文件IO操作、函数和面向对象、并发编程等。

第步:我数据库备份某目录注明间:

运行备份脚本(注意备份目录我/home/dbback/)

查看目录否备份文件细同能发现我mysqldump没指定用户名密码啥我运行候费用输入密码呢莫着急马揭晓答案mysql5.6(具体版本编号记)密码写脚本运行警告告诉要密码写脚本危险我伙伴该办呢官给解决案期望配置my.cnf文件所现打my.cnf加入字段:

两条运行脚本提示要输入密码马测试看否功没问题我进入步

第二步:何自备份oss始前我要做两件事

1、登录阿云控制台点右管理控制台点左产品与服务第二列点击象存储OSS没通要通通直接点击右新建bucket创建bucket记住buket名字(注:其实通api直接创建bucket操作所我用控制台创建降低理解难度)

2、始写传脚本要导入osssdk所要安装比较简单跟安装其python包没啥区别解压进入目录运行python setup.py install 安装完毕接看我何使用全部代码:

#!/usr/bin/python env

#autor:glacier

#date:2015-11-16

import os,os.path,time

import operator

import time

from oss.oss_api import *

prefix = '/home/dbback'

logtime = time.strftime(time.ctime())

#filelist = [ file for file in os.listdir(os.path.dirname(os.path.abspath(__file__))) if os.path.isfile(file) ]

filelist = [ file for file in os.listdir(prefix) if os.path.isfile(prefix + '/' + file) ]

def get_time(filename):

ft = os.stat(filename)

return ft.st_ctime

#def get_max():

# flist = []

# for file in filelist:

# flist.append(os.stat(file).st_ctime)

# return max(flist)

def get_dist():

d = {}

for file in filelist:

d[file] = get_time(prefix + '/' + file)

return d

if __name__ == '__main__':

#maxtime = get_max()

d = get_dist()

#dic= sorted(d.iteritems(), key=lambda d:d[1], reverse = True)

upfile = max(d.iteritems(), key=operator.itemgetter(1))[0]

endpoint = "your aliyun endpoint"

accessKeyId, accessKeySecret="your accessKeyId","your accessKeySecret "

oss = OssAPI(endpoint, accessKeyId, accessKeySecret)

res = oss.put_object_from_file("bucketname",upfile,prefix + '/' + upfile)

if res.status != 200:

with open('/var/log/dbback.log', 'a+') as f:

f.write(logtime + ' back failed' + '\n')

我接析脚本内容其脚本注释行都用看我编写程测试用始我设定备份文件目录记录志间备份目录所文件列表(列表其实式我用简单式文件列表慢)定义两函数get_time()函数获取文件创建间戳get_dist()函数获取文件名间戳字典主函数部比较难理解根据字典value排序获文件名d.iteritems()获字典每key,valuekey指定函数operator.itemgetter(1)表示用value排序(两元素key 0value1)间戳排序完返key[0]做工作脚本其部内容我说都见用没难于理解脚本介绍接进入我步

第三步:脚本写入crontab具体候执行根据家各自业务同设置没特别