第七周作业

1. 总结pg和mysql的优劣势。

PostgreSQL

优势:1、PostgreSQL基于BSD协议开源,完全免费,没有被商业垄断

2、有强大的查询优化器,支持很复杂的查询处理

3、PostgreSQL是一个主进程带多个子进程,应对高并发场景,处理速度快

4、postgresSQL配合的开源软件很多,很容易做读写分类,负载均衡等方案

劣势:1、由于PostgreSQL是多进程运行,对设备的CPU资源利用率高。

MySQL

优势:1、MySQL是一个主进程和多个线程模式,对资源消耗比较少

2、资源消耗低,能支持更多的连接数

劣势:1、mysql被oracle收购,更新优化较少

2、查询和写入性能优化不足,对复杂查询的处理较弱

3、大部分查询只能使用表上的单一索引

4、不支持用户自定义类型和域

2. 总结pg二进制安装和编译安装。

pgsql二进制安装:二进制包安装方便快捷流程简单,但是自由度低,不能选择特定版本和安装路径。在postgresql.org官网上选择对应的操作系统,和数据库版本。官网有提供安装步骤流程代码,复制创建安装脚本,一件执行脚本即可安装。

选择系统
选择安装的版本
bash执行脚本即可安装
安装完成

源码编译安装:源码编译安装相比二进制包安装,自由度更大,可以自行选择安装特定版本和安装路径。但安装流程相对复杂。

流程:下载源码包,解压,编译安装

编译安装流程

1.解压后执行./configure文件,指定安装路径和端口号  (./configure --prefix=/pgsql/data --with-pgport=5432)

2.执行make和make install

3.创建postgres系统账号,用于管理pgsql服务 (useradd -d /home/postgres -s /bin/bash -m postgres)

4.对存放数据的目录授权    (chown -R postgres. /pgsql/data)

5.切换到postgres账号,initdb执行数据库初始化

6.启动数据库    (pg_ctl -l logfile start)

可用脚本实现:

3. 总结pg服务管理相关命令 pg_ctl 和psql命令选项及示例和不同系统的初始化操作。

pg_ctl命令是一个用于初始化、启动、停止或控制PostgreSQL服务器的实用程序。

常用命令:

pg_ctl --help #查看帮助

pg_ctl start #启动服务

pg_ctl stop #停止服务

pg_ctl status #服务状态

pg_ctl restart #重启服务

pg_ctl reload #加载配置文件

常用命令
pg_ctl --help查看命令帮助

psql命令用于连接登录PostgreSQL数据库,是一个客户端命令

常用命令格式:

psql -h -p<端口> -d [数据库名称] -U [用户名称]

pgsql示例初始化:使用命令 pg_ctl init -D $PGDATA

将数据库数据目录授权给pgsql管理员账号,切换账号,执行pg_ctl  init -D  /pgsql/data3 命令
更改端口号,避免冲突,/apps/pgsql/bin/pg_ctl -D /pgsql/data3 -l logfile start 启动实例

4. 总结pg数据库结构组织。

PostgreSQL结构

PostgreSQL为一个实例。实例内创建数据库,在数据库内可以再创建Schema(模式)来将一个数据库中的不同业务隔离,实现不同业务的表,视图,索引等数据内容能放在一个数据库中,彼此互不影响。也可以不创建Schema使用默认的public模式来存放表,视图,索引等数据内容,像MySQL一样使用。

5. 实现pg远程连接。输入密码和无密码登陆。

pgsql默认是不能远程连接的,要实现远程连接,需要修改两个配置文件,主配置文件:postgresql.conf 和具有类似防火墙功能的配置文件:pg_hba.conf

需要修改这段内容,将注释去掉,把localhost修改为 * 或者0.0.0.0/0或者你需要的特定网段
建议添加在ipv6记录的前后(效果类似iptables,从上到下,一旦匹配就停止)
更改完成配置文件后,重启pgsql服务
由于本地数据库账号登录无需密码验证,为确保安全,需要远程连接的数据库用户账号设置密码
远程连接到10.0.0.8的pgsql
本地可以查看到远程连接的ip地址

实现免密登录的方式:在远程主机的用户家目录下创建 .pgpass 文件,

按格式写入内容:hostname:port:database:username:password

为了安全起见,将 .pgpass 文件权限修改为600

再次执行psql -h 10.0.0.8 -p 5434 -d postgres -U postgres 就可以免密登录了(必须严格按照 .pgpass 文件内容登录才能免密,否则无效)

远程免密登录

6. 总结库,模式,表的添加和删除操作。表数据的CURD。同时总结相关信息查看语句。

创建数据库可以使用SQL语句:CREATE DATEBASE db_name ;  也可以利用CREATEDB命令创建数据库

CREATE DATABASE test_db;

删除数据库可以使用SQL语句 DROP DATABASE ;

DROP DATABASE test_db2;

创建模式:CREATE SCHEMA Schema_name;

删除模式:DROP SCHEMA Schema_name;

创建和删除Schema

创建表:CREATE TABLE table_name;

删除表:DROP TABLE table_name;

(如果未指定Schema,则会将表创建在默认的public模式中)

创建指定Schema的表:CREATE TABLE Schema_name.table_name;

创建和删除table

表数据的CURD操作(可以使用标准SQL语句,和MySQL一样)

插入数据,删除数据,更改数据,清空表
创建索引,删除索引

select version();        #查看版本信息

select pg_posmaster_start_time();        #查看数据启动的时间

select now();    #查看当前时间

select user;    #查看当前用户

select inet_server_addr(),inet_server_port();    #查看连接的数据库服务器ip地址和端口

show all;    #可查看参数

show name;

explain可以查看SQL的执行计划

7. 总结pg的用户和角色管理。

角色是一系列相关权限的集合,用户和角色在整个数据库实例中都是全局的,即在同一个实例的不同数据库中,看到是用户也都是相同的。

CREATE USER name [option]     #创建用户

CREATE ROLE name [option]     #创建角色

两个命令都可以创建用户,不同的是CREATE USER创建的用户默认可以登录,而CREATE ROLE创建的角色默认不可以登录,除此以外没有其他任何区别。

user默认能登录,role默认不能登录

ALTER USER name        #修改用户

DROP USER name        #删除用户

用户管理常用操作

8. 添加mage用户,magedu模式,准备zabbix库,配置mage用户的默认模式magedu,要求mage用户给zabbix库有所有权限。

postgres=# create database zabbix;        #创建zabbix数据库

postgres=# \c zabbix            #进入zabbix数据库

zabbix=# create user mage with password '123345';        #创建账号

zabbix=# create schema magedu;        #创建模式

zabbix=# ALTER USER mage SET search_path TO magedu;        #将用户mage的默认模式设置为magedu

zabbix=# GRANT ALL PRIVILEGES ON DATABASE zabbix TO mage;        #用户mage获得zabbix数据库所有权限

zabbix=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO mage;

再次登录后查询默认Schema为magedu,zabbix数据库有权限

9. 总结pgsql的进程结构,说明进程间如何协同工作的。

pgsql主进程和子进程

PostgreSQL实例包括进程和内存存储结构,一个主进程和多个子进程,主进程Postmaster,生成会话子进程Postgres处理用户请求,辅助子进程处理数据写入,并管理它们。

由主进程postmaster接收用户端访问申请,并生成会话子进程Postgres处理用户请求。

各种修改操作事务会提前记录到WalWriter进程的预写式日志中(先于数据更新),如果出现意外,数据库回到旧状态,日志中完整的事务会重新加载到数据库,不完整的事务会回滚,避免数据库数据的破坏。

检查点进程:各种修改操作的事务在完成提交后会生成一个checkpointer检查点,标记事务的完整性,将更新数据写入磁盘。

为提高插入,删除和更新数据的效率,不会直接将数据持久化到数据文件中,会执行Bgwriter进程先将内存中的脏数据写入Buffer中,然后再周期性的将内存中的脏数据刷新到磁盘中实现永久保存。

10. 总结pgsql的数据目录中结构,说明每个文件的作用,并可以配上一些示例说明文件的作用。

pgsql目录结构

数据库数据目录存放在环境变量PGDATA指向的目录,这个目录在安装的时候指定,每个数据库实例都要有一个单独的数据库目录。主要分为6个部分,File segment用于存放数据,Tablespace用于存放表空间(存放数据的目录),Control file控制文件,Online WAL log在线日志(类似MySQL事务日志),ARCH WAL log存档日志(类似MySQL二进制日志)和log file其他日志文件。

数据库数据目录

初始化会生成三个配置文件:

postgresql.conf       数据库实例的主配置文件,几乎所有的配置参数都在这个文件中

pg_hba.conf            认证配置文件,配置允许哪些ip的主机可以连接访问数据库

pg_ident.conf          认证方式ident的用户映射文件

和其他数据库记录文件:

PG_VERSION      记录数据库版本号

postmaster.opts    记录数据库启动时的命令

postmaster.pid      数据库启动的进程信息文件

数据库记录文件的内容
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容