postgresql

PostgreSQL踩坑现场

 ̄綄美尐妖づ 提交于 2020-11-24 08:39:22
1.PostgreSQL表名、字段名、别名等大小敏感,默认都会转化成小写形式。如果名字中有大写字母,必须分别添加双引号。在写后台时,注意添加\ 如表名:TestTable中有个字段名userName 写sql查询时: select "TestTable"."userName" from "TestTable"; 后台拼装sql语句时: String sql = "select \"TestTable\".\"userName\" from \"TestTable\""; 2.如果需要将已经创建的表字段,改为自增长,不能使用serial类型(有些客户端软件有bug,会提供这个类型,但是更改会报错)。最好是自己创建sequence,然后设置默认值。 3.在PostgreSQL环境使用WallFilter时,校验很严格,sql传入类型和数据库字段类型必须匹配。 在mysql中可以这样写 String sql = "select * from rock_log_web where id in (?,?) and requestTime >= ?"; List<String> para = Lists.newArrayList(); para.add("1"); para.add("2"); para.add("2018-11-10 10:00:00"); Db.find(sql, para

Linux环境安装使用postgresql

浪尽此生 提交于 2020-11-24 04:39:25
postgresql对比MySQL,详见: PostgreSQL 与 MySQL 相比,优势何在? Postgresql安装 Linux Debian系列安装命令如下,不同于MySQL,安装过程会自动创建postgres这个Linux用户 sudo apt update sudo apt install postgresql postgresql-contrib 切换当前登录用户(角色)为postgres sudo -i -u postgres 指定数据库 psql是postgresql的client,-d选项指定需要选择的数据库实例postgres,psql还有很多选项,可以通过--help参数查看。 postgres@PC:~$ psql -d postgres Postgresql默认安装很多工具,在/usr/bin目录下,多以“pg_”开头,例如pg_isready。下面导入官方数据库样本 创建新的数据库 进入到postgres数据库后,命令行提示变为:postgres=#,postgres是指当前的数据库;创建新的数据库dvdrental postgres=# CREATE DATABASE dvdrental; 至此,我们新增了一个数据库dvdrental 导入官方样本Sakila 退出数据库client,到postgres用户(角色)下面

postgres主从基于流复制

江枫思渺然 提交于 2020-11-24 02:26:12
环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64 node1:192.168.216.130 node2:192.168.216.132 node3:192.168.216.134 一、首先在3个节点分别安装postgres,这里由于线上环境使用9.5.3,故本人直接使用9.5.3用于实验测试,其他版本的编译安装方式是相同的 yum install gcc readline-devel zlib-devel cd /tmp/ wget https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.gz tar -xf postgresql-9.5.3.tar.gz useradd postgres ./configure --prefix=/usr/local/postgresql make -j2 make install chown -R postgres:postgres /usr/local/postgresql/ 二、 在2个节点上分别配置环境变量并执行初始化操作 1、切换用户 su - postgres 2、配置环境变量 vi .bash_profile [postgres@localhost ~]$

pg_lightool-postgres数据库基于wal日志的坏页修复

百般思念 提交于 2020-11-23 23:45:03
2019-4-10更新: blockrecover命令可以依托pg_basebackup生成的基础备份完成坏块修复(使用-r参数即可) 一、前言 当前postgres数据库可选的恢复工具(PITR,pg_rman)都需要一个基础备份。恢复原理就是以基础备份为base,通过重演wal日志使数据库达到一个用户满意 的状态。 如果没有基础备份,那么数据库一旦有页损坏,那么这个页的数据会恢复困难。实际上在wal日志足够多的情况下,是可以做到不依靠基础备份,就能完成坏块恢复的。鉴于这个情况和一些工作经验,我创建了一个pg_lightool项目,此项目中含有一个blockrecover工具,它不需要基础备份,只需要扫描wal日志就可 以完成坏块的恢复,当然这需要相对较完整的wal日志。 废不多说,下面就介绍一下这款工具的使用情况。 二、源码 下载地址: http://gitee.com/movead/pg_lightool 目前只有源码编译安装版本。 三、代码编译安装 1.首先需要配置postgres的PATH路径 2.进入下载的代码的pg_lightool目录 3.make;make install; 这样就pg_lightool工具就成功安装到postgres的bin目录下了。 四、工具使用 创建测试表,并关闭数据库 postgres=# create table t3(i int,j

pg_lightool基于basebackup的单表恢复和块恢复

时光总嘲笑我的痴心妄想 提交于 2020-11-23 22:49:46
开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客: https://my.oschina.net/lcc1990/blog/1931485 。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对pg_lightool的代码做了升级,它可以基于一个basebackup和basebackup之后的wal日志完成某个数据表的恢复或者某些page的恢复。项目开源地址: https://gitee.com/movead/pg_lightool 。 工具的安装方法在之前的博客里有详细说明,不再赘述。本文主要说明一下pg_lightool新功能的使用方法。新功能的主要应用场景:有基础备份的数据量级比较大的数据库,在发生表或者块数据损坏时,用于损坏数据的快速恢复。 一、实验数据准备 1.初始化数据库后设置归档目录 2.创建表插入测试数据 3.如下闭库后删除刚才产生的wal日志。用于保证数据是从basebackup获取的。 4.启动数据库做基础备份 5.测试数据修改(涂掉的地方是log输出有点串行,忽略即可) 二、基于basebackup 和wal 日志的单表完全恢复 1.关闭数据库,模拟表破坏 2.闭库,执行恢复命令后查看数据 说明: 使用 -b 参数为 -1 即为全表恢复。 使用 -r 参数指定 basebackup 的路径。 命令执行成功后

centos7安装kong和kong-dashboard

为君一笑 提交于 2020-11-23 08:26:00
1、安装Kong yum install -y https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm 2.安装好后可以使用命令whereis kong查看安装路径。 3.去/etc/kong/目录下,此时只有一个文件 kong.conf.default ,复制这个文件到当前目录下,并重命名为 kong.conf(我就是把他复制到外层目录,重命名后在拷贝回来),修改kong.conf的配置文件为下边: $ cp /etc/kong/kong.conf. default /etc/ $ mv /etc/kong.conf. default /etc/ kong.conf $ cp /etc/kong.conf /etc/kong/ $ rm -rf /etc/ kong.conf $ vi /etc/kong/kong.conf 4.初始化数据库表 $ kong migrations up -c /etc/kong/kong.conf 5.启动kong服务 $ kong start Kong started 6.验证Kong是否成功启动 $ curl 127.0 . 0.1 : 8001 7.安装配置 PostgreSQL

Redmine使用教程

做~自己de王妃 提交于 2020-11-22 17:25:42
Redmine使用教程 一、 Redmine 简介 Redmine是基于ROR框架开发的一套跨平台项目管理系统,是项目管理系统的后起之秀,据说是源于Basecamp的ror版而来,支持多种数据库,除了和DotProject的功能大致相当外,还有不少自己独特的功能,例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等,还可以集成其他版本管理系统和BUG跟踪系统,例如SVN、CVS、TD等等。 它具有以下功能: ● 多项目和子项目支持 ● 可配置的用户角色控制 ● 可配置的问题追踪系统 ● 自动日历和甘特图绘制 ● 支持 Blog 形式的新闻发布、 Wiki 形式的文档撰写和文件管理 ● RSS 输出和邮件通知 ● 每个项目可以配置独立的 Wiki 和论坛模块 ● 简单的任务时间跟踪机制 ● 用户、项目、问题支持自定义属性 ● 支持多种版本控制系统绑定( SVN 、 CVS 、 Git 、 Mercurial 、 Darcs ) ● 支持多 LDAP 用户认证 ● 支持用户自注册和用户激活 ● 多语言支持(已经内置了简体中文) ● 多数据库支持( MySQL 、 SQLite 、 PostgreSQL ) ● 外观模版化定制(可以使用 Basecamp 、 Ruby 安装) 接下来详细介绍 redmine 的使用。 二、 Redmine 操作详解 2.1 、 登录系统 使用

(十三)VMware Harbor 身份验证模式

霸气de小男生 提交于 2020-11-21 23:56:59
VMware Harbor 修改Harbor仓库admin用户 参考: https://blog.csdn.net/qq_40460909 https://blog.csdn.net/qq_40460909/article/details/90212254 一 前言 Harbor有2个认证方式 :db_auth , ldap auth_mode:使用的身份验证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。 二 数据库(db_auth)---PostgreSQL 用户存储在本地数据库中。 用户可以在此模式下在Harbor中自行注册。要禁用用户自行注册,可以在安装的时候初始配置,或则管理员禁用此功能。禁用自注册后,系统管理员可以将用户添加到Harbor。 注册或添加新用户时,用户名和电子邮件在Harbor系统中必须是唯一的。 密码必须至少包含8个字符,包含1个小写字母,1个大写字母和1个数字字符。 2.1 登陆数据库: 2.2 找到harbor的数据库,并进入容器 docker exec -it DB容器ID 2.3 登陆登陆postgresql psql -U postgres -h postgresql -p 5432 密码在harbor.yml中,没改的话是root123 三 常用数据库操作(postgresql

ceph的体系结构

醉酒当歌 提交于 2020-11-21 14:44:04
本文翻译自:http://docs.ceph.com/docs/hammer/architecture/ 一些名词的翻译方式: scalable :可扩展性 high availability:高可用 map:图 cluster map:集群运行图 monitor:监视器 acting set:运行集 up set:在线集 hyperscale:超大规模 data scrub:数据清洗 peering:互联 rebalance:重平衡 full write:一次完整地写 tiering:层 cache tiering:缓存层 ceph体系结构图: ceph集群 根据ceph的相关论文,ceph基于RADOS来提供无限扩展的能力,一个ceph存储集群包含两种类型的守护进程: 监视器(Monitor) OSD守护进程( OSD Daemon,以下称osd ) 数据的存储 ceph集群从ceph客户端接收数据(客户端可以是一个ceph的块设备,ceph的对象存储网关,ceph的文件系统或者是基于librados写的程序),并以对象的形式存储起来。每个对象就像文件系统中的一个文件,osd负责在存储设备上的读写操作。 osd在一个扁平的命名空间内以对象的形式保存数据。每个对象都包含标识符(identifier),二进制数据(binary data)和以name/value对组成的元数据

Linux信号(Understanding Linux Kernel 3rd)

烈酒焚心 提交于 2020-11-21 06:13:39
总览 产生 内核或应用程序产生,一份简短的信息。 传递 挂起状态 非挂起状态 信号类型 发给进程的信号(所有线程共享) 发给线程的信号 处理者 进程信号是其中一个没有屏蔽这个信号的线程处理。 线程就是指定线程处理。 处理方式 do_signal 处理 创建对应的特定栈帧来处理。 信号处理函数 整个进程中的线程共享。 有默认也有自定义。 需要的信息也可以自定义。 信号的作用 简讯 一份简短的信息。 生产者是内核或进程。 处理者是具体的线程或者是进程组中符合处理条件的线程。 内容 标准的信号就只有一个数字。 32 位的整数,每一位对应一个信号位。 支持实时信号的系统是 64 位,即两个 long . 信号定义 trap -l 用上面的指令罗列出支持的信号。 在编程中一般是宏定义,然后每个宏对应一个数字。 #define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SIGILL 4 #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT 6 #define SIGBUS 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGUSR1 10 #define SIGSEGV 11 #define SIGUSR2 12 #define