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>