gp和pg数据库运维常用命令
<p>1、 在gp数据库上执行如下命令,
COPY (select <em> from g_viprecord) TO '/home/a_list_g_viprecord.txt’;
   
或者
COPY g_viprecord TO '/home/a_list_g_viprecord.txt’;
如果需要导出csv格式包含表头
COPY (select </em> from g_viprecord) TO '/data/a_list_g_viprecord.csv’; CSV HEADER;</p>
<p>2、 在pg上相同结构的表中执行如下命令
COPY g_viprecord FROM '/home/a_list_g_viprecord.txt’
3、用select count(*) from g_viprecord 检查记录数量是否一致
4、 查看版本信息
SELECT version();</p>
<p>5、 整个数据库导出
pg_dumpall -h 192.168.91.82 -p 5432 -U postgres >/data/younger20150110.sql</p>
<p>备份或者还原时候,先切换用户# su postgres
如果权限不足;先 cd/data 然后在执行命令;</p>
<p>在postgres用户下 执行还原命令
 psql -f /data/younger20150110.sql postgres
还原时如果不想看输出信息 加上 -q 参数、、
  只备份某个数据库;</p>
<p>在postgres用户下 执行备份命令
pg_dump -U  postgres  -h  192.168.91.82  -p 5432   honggu_9i  >  /data/younger20150110_honggu_9i.sql
或者
pg_dump  honggu_9i  >  /data/younger20150110_honggu_9i.sql </p>
<p>或者在这个目录执行cd  /usr/bin/  或者在cd /usr/pgsql-9.5/bin</p>
<p>如果有多个库,会要求多次输入数据库密码</p>
<p>卸载旧版本postgresql
yum remove postgresql*p</p>
<p>6.恢复数据库
    pg_dump创建的备份文件可以被工具psql识别。因此可以使用psql来读取pg_dump创建的备份文件,实现恢复数据库的功能。例如:
先切换为postgres用户;然后执行 
注意命令行之间没有空格
psql  honggu_9i<  /data/younger20150110_honggu_9i.sql
或者用root用户执行
psql zgs80 -h pos.9isoft.com -U postgres   < /data/younger20150206_zgs80.sql</p>
<p>或者
手动还原服务器上面的数据库
cd  /data       ---进入备份文件所在目录
 su postgres   ---进入 postgres 
 bash-4.1$ pg_restore  -d zgs80 zgs80.backup  ---恢复  ZGS80 为数据库名 zgs80.backup 为备份文件
 </p>
<p>7.  数据字典查看表结构
SELECT column_name, data_type from information_schema.columns where table_name = 'g_spdm’;
8.  查看客户端连接情况
SELECT client_addr ,client_port,waiting,query_start FROM pg_stat_activity;</p>
<ol>
<li>查看数据库大小
select pg_size_pretty(pg_database_size('zgs80')); </li>
</ol>
<p>10 .安装最新版postgres</p>
<p>yum install <a href="https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm">https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm</a>
yum install postgresql10
yum install postgresql10-server
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10</p>
<p>配置pgsql:修改数据库的安全认证方式
 
/var/lib/pgsql/10/data/pg_hba.conf
`` # ipv4 local connections: 中
host    all         all         127.0.0.1/32           ident
host    all         all         127.0.0.1/24           md5
host    all         all         0.0.0.0/0             md5
 </p>
<h5>host all all 0.0.0.0/0 </h5>
<p>配置postgresql.conf
/var/lib/pgsql/10/data/postgresql.conf
前面去掉#号
listen_addresses = '*'   监听所有地址,让外部IP地址可以访问数据库
port = 5432      监听端口</p>
<p> 
重启pgsql服务
 
service postgresql10-server restart
11.为了数据库存在/data目录下,所以需要创建表空间</p>
<p>创建表空间
用winscp在/data中创建zgsplace文件夹,赋予用户postgres用户写入和读取权限
<code># mkdir /data/zgsplace </code> # chown postgres:postgres /data/zgsplace/
$ su postgres
$ psql
$ CREATE TABLESPACE zgsplace LOCATION '/data/zgsplace';
 \q 退出psql
16.切换用户
su postgres
psql
修改数据库密码
ALTER USER postgres PASSWORD 'bearsoft’;
20.bearsoft.sh脚本内容
使用前先chmod 777 bearsoft.sh
再通过 ./bearsoft.sh 运行
cd /home
yum install wget -y
wget <a href="http://www.9isoft.com/pgdg-centos95-9.5-2.noarch.rpm">http://www.9isoft.com/pgdg-centos95-9.5-2.noarch.rpm</a>
rpm -ivh pgdg-centos95-9.5-2.noarch.rpm
yum install postgresql95-server -y
service postgresql-9.5 initdb
service postgresql-9.5 start
yum install httpd php php-pgsql -y
service httpd start
chkconfig httpd on
chkconfig postgresql-9.5 on
echo '<?php phpinfo() ?>' >/var/www/html/phpinfo.php
sed -i 's/;date.timezone =/date.timezone = "PRC"/g' /etc/php.ini
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/9.5/data/postgresql.conf
``#sed -i "s/#client_encoding = sql_ascii/client_encoding = GBK/g" /var/lib/pgsql/9.5/data/postgresql.conf
mkdir /data
mkdir /data/zgsplace
chown postgres:postgres /data/
chown postgres:postgres /data/zgsplace/
su postgres -c "psql <<EOF
ALTER USER postgres PASSWORD 'sh9ihyn2012n’;
CREATE TABLESPACE zgsplace LOCATION '/data/zgsplace';
CREATE DATABASE zgs80 tablespace zgsplace;
EOF"
service postgresql-9.5 restart
service httpd restart
打开浏览器输入http://ip地址/phpinfo.php查看是否安装正确
手动修改pg_hba.conf
21.pg自己建立用户,数据库</p>
<p>CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine</p>
<p>  WITH ENCODING='UTF8'</p>
<p>       OWNER=redmine</p>
<p>       CONNECTION LIMIT=-1</p>
<p>       TABLESPACE=zgsplace;</p>
<p>22 pg根据一个数据库复制新数据库命令</p>
<p> su postgres</p>
<p>createdb  -T templatedb  demo</p>
<ol>
<li>
<p>定时备份pg数据库
`` #!/bin/sh
mkdir /data/backup
chown postgres:postgres /data/backup
cd /data/backup
TODAY=$(date "+%Y%m%d%H")
su postgres -c "pg<em>dump -U postgres zhengshi>zhengshi</em>${TODAY}.sql"</p>
</li>
<li>修改数据库名称</li>
</ol>
<p>ALTER DATABASE eb3 RENAME TO eb3_hongmei</p>
<p>25.查看哪个表有n_id字段</p>
<p>select c.* from pg_class c, pg_attribute a where c.relfilenode=a.attrelid and a.attname='n_id'</p>
<p>26.查看所有表行数 </p>
<p>SELECT relname, reltuples 
FROM pg_class r JOIN pg_namespace n 
ON (relnamespace = n.oid) 
WHERE relkind = 'r' AND n.nspname = 'public';</p>