copy命令-备份/恢复
COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] ( option [, ...] ) ]COPY { table_name [ ( column_name [, ...] ) ] | ( query ) } TO { 'filename' | STDOUT } [ [ WITH ] ( option [, ...] ) ]where option can be one of: FORMAT format_name OIDS [ boolean ] DELIMITER 'delimiter_character' NULL 'null_string' HEADER [ boolean ] QUOTE 'quote_character' ESCAPE & ...
postgresql使用copy保存文件时报错
保存文件时遇到好几个错误,做个记录。
错误1:relative path not allowed for COPY to file
COPY tablename TO ‘D:/a.txt’字面意思是文件路径不能是相对路径。虽然报错是这个错,但是实际上是因为我的服务器是linux服务器,写的路径是本地windows路径造成的。
知道只能保存到服务器上之后改了下保存路径,而且根据前面错误1的提示用的绝对路径而不是相对路径,于是遇到了错误2。
错误2:could not open file “/home/a.sql” for writing: 权限不够
COPY tablename TO ‘/home/a.txt’这个也是字面意思,权限不够,保存文件用的postgres账号,没有在/home里创建文件的权限。
最后成功保存在/home/postgres文件夹里了。
COPY tablename TO ‘/home/postgres/a.txt’
postgresql备份与恢复数据库
postgresql备份与恢复数据库原创 PostgreSQL 作者:jaymarco 时间:2020-12-15 14:57:20 2810 0
一、pg_dump含义
pg_dump 是一个用于备份 Postgresql 数据库的实用程序。由 pg_dump 备份的转储文件是完全一致的,因为转储是 pg_dump 开始运行时数据的快照。 pg_dump 不会阻止其他用户访问数据库。如果普通用户已被授予数据库权限,则可以运行 pg_dump 。 pg_dump 只能备份一个数据库。 Pg_dumpall 用于备份整个集群或备份集群中所有数据库共有的公共对象。
二、pg_dump文件类型
转储文件可以脚本或存档文件格式导出。
脚本转储文件是纯文本文件,其中包含将数据库恢复到保存时所处状态所需的 SQL 命令。使用以此方式创建的脚本;使用 psql 或其他工具运行生成的 sql 文件将数据库恢复到当前状态就足够了。必须先创建相关的数据库,然后才能运行此命令,否则默认情况下将在 postgres 数据库中创建对象。
如果不想手动创建数据库,则必须使用 pg_dump 以存档文件格式,以自定 ...
psql 命令语法参数说明
PostgreSQL psql 命令语法参数说明psql是PostgreSQL数据库提供的命令行终端程序,它允许我们交互地输入、编辑、执行SQL命令。使用psql进行数据库管理非常简单、轻量、高效,本站所有介绍PostgreSQL文章中的示例全部基于psql操作。
psql语法格式
1.1 语法结构
1.2 参数说明
psql的一些用法
2.1 数据库登录
2.2 切换数据库
2.3 查看所有数据库
2.4 查看数据库中的表
2.5 查看表中的字段
2.6 查看表信息
2.7 退出登录
1. psql语法格式psql是一个使用命令行交互的PostgreSQL客户端(终端),它允许你输入查询语句,然后把它们发出给PostgreSQL,再将查询结果显示出来。交互方式不仅限于输入,也可以来自一个文件。
1.1 语法结构psql语法格式如下:
psql [OPTION]... [DBNAME [USERNAME]]
1.2 参数说明psql提供了一些可选参数,可以通过psql --help命令来查看所安装版本支持的参数。
通用选项
-c, --command=COMMAND:执 ...
会话管理
-- 所有执行sqlSELECT sa.* FROM pg_catalog.pg_stat_activity sa;-- 事务SELECT (SELECT sum(xact_commit) + sum(xact_rollback) AS "Total" FROM pg_stat_database), (SELECT sum(xact_commit) AS "Commit" FROM pg_stat_database), (SELECT sum(xact_rollback) AS "Rollback" FROM pg_stat_database)
查询并杀掉某个表的正在执行的sql进程并杀掉select pg_terminate_backend(pid), queryfrom pg_stat_activitywhere query ~* 'ipmp_home_page_status_image' and pid <> pg_backend_pid( ...
创建只读用户并赋权
create user hspipmptemp with password 'hspipmptemp';# 设置Postgres数据库为只读的transactionalter user hspipmptemp set default_transaction_read_only=on;# 赋予用户权限,查看public模式下所有表:(新建表也会有只读权限)grant usage on schema public to hspipmptemp;alter default privileges in schema public grant select on tables to hspipmptemp;# 赋予用户连接数据库权限grant connect on database zhong to hspipmptemp;# 切换到指定数据库\c hspipmp# 赋予用户表、序列查看权限grant usage on schema public to hspipmptemp;grant select on all sequences in schema public to ...
数据库操作
数据库操作基础数据库函数select uuid_generate_v4();select current_time(6);select now();
数据库进程操作数据库复制-流模式su - postgrespsql -c"create database hspipmptest"pg_dump hspipmp | psql hspipmptest
权限管理密码修改ALTER USER {user name} WITH PASSWORD '123456';
修改/赋予权限alter user {user name} superuser createrole createdb replication login;
修改数据库所有者alter database {database name} OWNER TO {new user name};
进程管理查询当前正在运行的访问到上述表的慢查询select * from pg_stat_activity where que ...
查询所有表及字段说明
SELECT relname AS 表名, cast(obj_description(relfilenode, 'pg_class') AS VARCHAR) AS 表说明, a.attname AS 字段名, col_description(a.attrelid, a.attnum) AS 字段说明, format_type(a.atttypid, a.atttypmod) AS 字段类型, a.attnotnull AS notnullFROM pg_class AS c, pg_attribute AS aWHERE a.attre ...
Redis
redis 简介
为什么要用 redis /为什么要用缓存
为什么要用 redis 而不用 map/guava 做缓存?
redis 和 memcached 的区别
redis 常见数据结构以及使用场景分析
1. String
2.Hash
3.List
4.Set
5.Sorted Set
redis 设置过期时间
redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
redis 事务
缓存雪崩和缓存穿透问题解决方案
如何解决 Redis 的并发竞争 Key 问题
如何保证缓存与数据库双写时的数据一致性?
参考:
redis 简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久 ...
Redis持久化
非常感谢《redis实战》真本书,本文大多内容也参考了书中的内容。非常推荐大家看一下《redis实战》这本书,感觉书中的很多理论性东西还是很不错的。
为什么本文的名字要加上春夏秋冬又一春,哈哈 ,这是一部韩国的电影,我感觉电影不错,所以就用在文章名字上了,没有什么特别的含义,然后下面的有些配图也是电影相关镜头。
很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。
Redis不同于Memcached的很重一点就是,Redis支持持久化,而且支持两种不同的持久化操作。Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF).这两种方法各有千秋,下面我会详细这两种持久化方法是什么,怎么用,如何选择适合自己的持久化方法。
快照(snapshotting)持久化Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行备份,可以将快照 ...
Redlock分布式锁
这篇文章主要是对 Redis 官方网站刊登的 Distributed locks with Redis 部分内容的总结和翻译。
什么是 RedLockRedis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性:
安全特性:互斥访问,即永远只有一个 client 能拿到锁
避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client crash 了或者出现了网络分区
容错性:只要大部分 Redis 节点存活就可以正常提供服务
怎么在单节点上实现分布式锁
SET resource_name my_random_value NX PX 30000
主要依靠上述命令,该命令仅当 Key 不存在时(NX保证)set 值,并且设置过期时间 3000ms (PX保证),值 my_random_value 必须是所有 client 和所有锁请求发生期间唯一的,释放锁的逻辑是:
if redis.call("get",KEYS[1]) == AR ...
如何做可靠的分布式锁,Redlock真的可行么
本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的原因就是看到了 Martin 的这篇文章,写得很好,特此翻译和总结。感兴趣的同学可以翻看原文,相信会收获良多。
开篇作者认为现在 Redis 逐渐被使用到数据管理领域,这个领域需要更强的数据一致性和耐久性,这使得他感到担心,因为这不是 Redis 最初设计的初衷(事实上这也是很多业界程序员的误区,越来越把 Redis 当成数据库在使用),其中基于 Redis 的分布式锁就是令人担心的其一。
Martin 指出首先你要明确你为什么使用分布式锁,为了性能还是正确性?为了帮你区分这二者,在这把锁 fail 了的时候你可以询问自己以下问题:
要性能的: 拥有这把锁使得你不会重复劳动(例如一个 job 做了两次),如果这把锁 fail 了,两个节点同时做了这个 Job,那么这个 Job 增加了你的成本。
要正确性的: 拥有锁可以防止并发操作污染你的系统或者数据,如果这把锁 fail 了两个节点同时操作了一份数据,结果可能是数据不一致、 ...
SpringBean
前言
一 bean的作用域
1. singleton——唯一 bean 实例
2. prototype——每次请求都会创建一个新的 bean 实例
3. request——每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效
4. session——每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session 内有效
5. globalSession
二 bean的生命周期
initialization 和 destroy
实现*Aware接口 在Bean中使用Spring框架的一些对象
BeanPostProcessor
总结
单例管理的对象
非单例管理的对象
三 说明
前言在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。
Spri ...
SpringMVC 工作原理详解
本文整理自网络,原文出处暂不知,对原文做了较大的改动,在此说明!
先来看一下什么是 MVC 模式MVC 是一种设计模式.
MVC 的原理图如下:
SpringMVC 简单介绍SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。
SpringMVC 使用需要在 web.xml 中配置 DispatcherServlet 。并且需要配置 Spring 监听器ContextLoaderListener
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><servlet> <servlet-name>springmvc</servlet-name> < ...
Spring学习与面试
Spring相关教程/资料:
官网相关
Spring官网
Spring系列主要项目
从配置到安全性,Web应用到大数据 - 无论您的应用程序的基础架构需求如何,都有一个Spring Project来帮助您构建它。 从小处着手,根据需要使用 - Spring是通过设计模块化的。
Spring官网指南
无论您在构建什么,这些指南都旨在尽可能快地提高您的工作效率 - 使用Spring团队推荐的最新Spring项目发布和技术。
Spring官方文档翻译(1~6章)
系统学习教程:
文档: 极客学院Spring Wiki
Spring W3Cschool教程
视频:网易云课堂——58集精通java教程Spring框架开发
慕课网相关视频
黑马视频(非常推荐):微信公众号:“Java面试通关手册”后台回复“资源分享第一波”免费领取。
一些常用的东西
Spring Framework 4.3.17.RELEASE API
默认浏览器打开,当需要查某个类的作用的时候,可以在浏览器通过ctrl+f搜索。
面试必备知识点
SpringAOP,IOC实现原理
AOP实现原理、动态代理和静态代 ...