如何备份postgresql数据库


对于网站来说数据无疑是最重要的,而养成备份数据的习惯更加重要, 忽然想到一句经典台词

曾经有一份数据摆在我的面前,
可我没有备份,
直到数据丢失后才后悔莫及,
人世间最痛苦的事莫过于此,
如果上天能给我一次再来一次的机会,
我会对那份数据说五个字:我要备份你,
如果非要在这份备份上加一个期限,我希望是每天!

进入主题,这只是对数据进行简单的备份

怎么备份数据

shell脚本

#!/bin/bash

backup_time=`date +%Y%m%d`
pg_dump articledb > /home/xxx/backup/article_$backup_time.sql
# articledb是要备份的数据库名称
echo "backup finished"

保存为backup_db.sh
注意
xxx是数据库用户,并且是super权限
可以这样

$ sudo -i -u postgres
$ [sudo] xxx 的密码:
postgres~ $ createuser xxx --interactive 
# 创建数据库用户,我的是archlinux,不同系统可能有所不同

定时备份数据

crontab -e

输入

0 22 * * * /home/xxx/backup …

postgresql学习1——安装


最近从sqlite转到postgresql,虽然postgresql比sqlite更加复杂

archlinux

参考资料

$ sudo pacman -S postgresql
$ sudo mkdir /var/lib/postgres/data #如果已存在则可以不建立
$ sudo chmod -R postgres:postgres /var/lib/postgres/data
由于我安装系统时没有生成en_US_UTF-8本地化文件(如果已经生成了的就
不必再生成)
$ sudo vim /etc/locale.gen #找到en_US_UTF-8,注释掉
$ locale-gen

然后运行
$ sudo -i -u postgres #或者使用root账户su - postgres
$ initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'
$ createuser -i #输入你的账户名称,并给管理员权限

最好给postgres用户设置密码
(注意不是linux系统帐号)
# su - postgres
$ psql
>ALTER USER …

postgresql学习2——使用


postgresql的简单使用

python

参考资料

安装psycopg2

推荐使用venv虚拟环境

pip install psycopg2

这个API打开一个连接到PostgreSQL数据库。如果成功打开数据库时,它返回一个连接对象

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

该程序创建一个光标将用于整个数据库使用Python编程。

connection.cursor()

此例程执行SQL语句。可被参数化的SQL语句(即占位符,而不是SQL文字)。 psycopg2的模块支持占位符用%s标志

cursor.execute(sql [, optional parameters])

该程序执行SQL命令对所有参数序列或序列中的sql映射

curosr.executemany(sql, seq_of_parameters)

这个程序执行的存储数据库程序给定的名称。该程序预计为每一个参数,参数的顺序必须包含一个条目。

curosr.callproc(procname[, parameters])

这个只读属性,它返回数据库中的行的总数已修改,插入或删除最后 execute*().

cursor.rowcount

此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用commit()是不可见的,从其他的数据库连接 …