PostgreSQL是一种广泛使用的关系型数据库管理系统,它采用开放源代码进行开发和维护。在Linux系统中使用PostgreSQL数据库管理系统是很常见的,但是备份却是一项需要高度专业知识和技巧的任务。在这篇文章中,我们将教授如何备份Linux系统中的PGSQL数据库。
创新互联建站主营榆社网站建设的网络公司,主营网站建设方案,app软件开发公司,榆社h5微信小程序开发搭建,榆社网站营销推广欢迎榆社等地区企业咨询
备份前的准备工作
在开始备份之前,有一些准备工作需要完成。确认你有备份所需的权限,你需要使用该系统的超级用户或拥有很高的权限来备份数据库。另外,在备份之前,确认系统的硬盘空间足够用于存储备份文件。
1. 安装PGSQL备份工具
备份PGSQL数据库需要使用pg_dump和pg_restore命令。这些命令可以在Linux系统的包管理器中安装,使用以下命令:
“`
sudo apt-get install postgresql-client
“`
如果你使用的不是Debian/Ubuntu系统,可以使用以下命令:
“`
sudo yum install postgresql-client
“`
2. 创建备份目录
在备份数据库之前,需要创建一个备份目录。这个目录可以放在本地硬盘或者远程共享的硬盘上。使用以下命令创建一个本地目录:
“`
sudo mkdir /var/pgsql_backup
“`
在本地硬盘创建目录后,如果你需要将备份文件存储到远程共享的硬盘上,可以使用以下命令挂载共享的硬盘:
“`
sudo mount -t cifs //192.168.0.100/backup /var/pgsql_backup -o username=backupuser,password=backuppass
“`
3. 编写备份脚本
备份脚本有助于简化备份过程,避免重复性工作。在备份脚本中,你需要设置连接数据库的用户名和密码以及备份文件的位置。使用以下命令创建备份脚本:
“`
sudo nano /home/user/backup_pgsql.sh
“`
编辑脚本:
“`
#!/bin/sh
PGPASSWORD=Your_password
PGUSER=Your_username
PGDATABASE=Your_database
PGHOST=localhost
PGPORT=5432
BACKUP_DIR=/var/pgsql_backup
DATE=`date +%F_%H-%M`
pg_dump -F c -b -v -U$PGUSER -h$PGHOST -p$PGPORT $PGDATABASE | gzip > $BACKUP_DIR/$PGDATABASE-$DATE.sql.gz
“`
4. 设定备份计划
在备份数据库之前,需要设置备份计划。备份计划可以是每天、每周或每月进行备份,这需要根据你的数据库使用情况和备份需求来确定。使用以下命令打开计划任务:
“`
sudo crontab -e
“`
在任务编辑器中,添加如下计划:
“`
0 0 * * * /bin/bash /home/user/backup_pgsql.sh
“`
这将在每天午夜12点进行备份,备份文件将储存在/var/pgsql_backup目录中。
5. 检查备份文件
备份后,你需要检查备份文件是否已正确地生成,并且能够被还原。使用以下命令检查备份文件:
“`
cd /var/pgsql_backups
ls
“`
如果备份文件存在,你将看到文件的列表。你可以使用以下命令还原备份文件:
“`
gzip -d dbname-2023-08-02.sql.gz
psql -U postgres -d dbname
“`
这将还原2023年8月2日备份的dbname数据文件。
备份PGSQL数据库可能对于初学者来说是一项艰巨的任务,但是通过掌握这些技能,我们可以创建出一个完整的备份和恢复计划。在实践中,你可能会遇到不同的挑战,但在我们展示的基本备份技术上,你应该可以很好地开展工作。记住,在备份和恢复重要数据时,始终要保持周密的计划,小心谨慎的实践,以确保成功。
相关问题拓展阅读:
(1)用户实用程序:
createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE DATABASE 相同)
createuser 创建一个新的PostgreSQL的用户(和SQL语句:CREATE USER 相同)
dropdb 删除数据库
dropuser 删除穗空用户
pg_dump 将PostgreSQL数据库导出到一个脚本文件
pg_dumpall 将所有的PostgreSQL数据库导出到一个脚本文件
pg_restore 从一个由pg_dump或pg_dumpall程序导出的脚本文件中恢复PostgreSQL数据库
psql 一个基于命令行的PostgreSQL交互式客户端程序
vacuumdb 清理和分析一个PostgreSQL数据库,它是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同
(2)系统实用程序
initdb 创建一个用于存储数据库的PostgreSQL数据目录,并创建预定义的模板数据库template0和游族困template1,生成共享目录表 catalog;此程序通常只在安装PostgreSQL时运行一次
initlocation 创建一个辅助的PostgreSQL数据库存储区域
ipcclean 从停止的PostgreSQL服务器中清神念除共享内在和孤立信号标志
pg_ctl 启动、停止、重启PostgreSQL服务(比如:pg_ctl start 启动PostgreSQL服务,它和service postgresql start相同)
pg_controldata 显示PostgreSQL服务的内部控制信息
postgres PostgreSQL单用户模式的数据库服务
postmaster PostgreSQL多用户模式的数据库服务
4.这里面最重要的是psql这个客户端程序最为重要。启用客户端程序psql的方法是:
切换到PostgreSQL预定义的数据库超级用户postgres,启用客户端程序psql,并连接到自己想要的数据库,比如说:
psql template1
出现以下界面,说明已经进入到想要的数据库,可以进行想要的操作了。
template1=#
5.在数据库中的一些命令:
template1=# \l 查看系统中现存的数据库
template1=# \q 退出客户端程序psql
template1=# \c 从一个数据库中转到另一个数据库中,如template1=# \c sales 从template1转到sales
template1=# \dt 查看表
template1=# \d 查看表结构
template1=# \di 查看索引
========================
*创建数据库:
create database ;
*查看数据库列表:
\d
*删除数据库:
drop database ;
创建表:
create table ( ;, ,……;);
*查看表名列表:
\d
*查看某个表的状况:
\d
*重命名一个表:
alter table rename to ;
*删除一个表:
drop table ;
========================================
==========================
*在已有的表里添加字段:
alter table add column ;
*删除表中的字段:
alter table drop column ;
*重命名一个字段:
alter table rename column to ;
*给一个字段设置缺省值:
alter table alter column set default ;
*去除缺省值:
alter table alter column drop default;
在表中插入数据:
insert into 表名 (,,……) values (,,……);
修改表中的某行某列的数据:
update set = where ;
删除表中某行数据:
delete from where ;
delete from ;–删空整个表
6.要注意随时对数据库进行清理、收回磁盘空间并更新统计信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 对所有的数据库操作
-z 保证不断地删除失效的行,节约磁盘空间,将统计信息更新为最近的状态
7.PostgreSQL用户认证
PostgreSQL数据目录中的pg_hba.conf的作用就是用户认证,可以在/var/lib/pgsql/data中找到。
有以下几个例子可以看看:
(1)允许在本机上的任何身份连接任何数据库
TYPE DATABASEUSER IP-ADDRESS IP-MASK METHOD
local allall trust(无条件进行连接)
(2)允许IP地址为192.168.1.x的任何主机与数据库sales连接
TYPE DATABASEUSER IP-ADDRESS IP-MASK METHOD
host salesall.168.1..255.255.0 ident sameuser(表明任何操作系统用户都能够以同名数据库用户进行连接)
8.看了那么多,来一个完整的创建PostgreSQL数据库用户的示例吧
(1)进入PostgreSQL高级用户
(2)启用客户端程序,并进入template1数据库
psql template1
(3)创建用户
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD’zhenzhen’
(4)因为设置了密码,所以要编辑pg_hba.conf,使用户和配置文件同步。
在原有记录上面添加md5
local all hellen md5
(4)使用新用户登录数据库
template1=# \q
psql -U hellen -d template1
PS:在一个数据库中如果要切换用户,要使用如下命令:
template1=# \!psql -U tk -d template1
9.设定用户特定的权限
还是要用例子来说明:
创建一个用户组:
sales=# CREATE GROUP sale;
添加几个用户进入该组
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用户级sale针对表employee和products的SELECT权限
sales=# GRANT SELECT ON employee,products TO GROUP sale;
在sale中将用户user2删除
sales=# ALTER GROP sale DROP USER sale2;
10.备份数据库
可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
1. 安装Linux操作系统
注意把gdb、Emacs或DDD这些开发工具都安装上。如果是在虚拟机上安装,依然需要设置Linux系统的网络环境;另外需要设置文件共享,方便windows下面的postgreSQL源码能在Linux下面访问到。
2. 安装PostgreSQL
useradd postgre
(自动建立 postgre 组;设计人员为了安全考虑,PostgreSQL 不能以root 用户运行,所以必须建立对应的用户和组。)
解压到 /usr/local/src
tar xvfz postgresql-8.4.tar.gz
cd postgresql-8.4
./configure –prefix=/usr/local/pgsql –enable-debug –enable-assert –without-readline –without-zlib
make
make install
chown -R postgre.postgre /usr/local/pgsql
3. 设置Postgres环境变量(非必须)
vi ~postgre/.bash_profile
添加:
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH
4. 建立数据库
以 postgres 用户登录:
su postgre
建立数据库目录:
mkdir data
启动数据库引擎:
initdb –D “数据库目录”
之后可以根据提示,通过psql进入数据库
5. 构造PostgreSQL调试环境
先 psql template1进去,然后
select pg_backend_pid();
获得id,就是gdb后面用到的数字
gdb /usr/local/pgsql/bin/postgres 997(pid的数字)
如果只使用gdb,全部是命令行界面;而Emac、DDD分别是彩色、黑白用户交互式图形界面。
6. 使用gdb进行调试
关于linux pgsql备份的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
分享标题:LinuxPGSQL数据库备份教程(linuxpgsql备份)
网站地址:http://www.shufengxianlan.com/qtweb/news40/395190.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联