GP完整安装手册

参考GP的安装手册,结合自己安装过程中的点点滴滴,重新梳理了配置的步骤和顺序,绝对比GP的手册更方便,防止在安装的过程中走岔路,尤其是在多台机器进行安装配置的时候。

------------------------------------------------------------------------------------
对于PC服务器自带的存储考虑
------------------------------------------------------------------------------------
PC服务器的推荐配置:
2*4 CPU
8个千兆网卡(master节点需要增加两张网卡,对外提供服务)
24*1TSAS盘配置 该盘用于放置数据库数据文件,建议的raid配置为4组raid10,
每组6块盘,raid10的条带设置为128K,不配置hotspare盘
2*300G 用于安装操作系统

------------------------------------------------------------------------------------
文件系统设置要求
------------------------------------------------------------------------------------
MASTER NODE
/        48G  EXT3
swap      48G  SWAP
/data   200G XFS

SEGMENT NODE
/         48G  EXT3
swap      48G  SWAP
/data1   6T  XFS
/data2   6T  XFS

##############################################################################################
1)修改IO调度算法
由于修改的是/boot/grub/menu.lst文件,稍有不慎会导致系统无法启动
并且/boot/grub/menu.lst在同样的安装下,经常会有些差异,不建议直接分发Master修改的结果
建议单独到每台机器上进行配置,包括Master,Standby Master,Segment Host,ETL Host
主机名很多时候也需要重新设置,也需要每台单独设置
##############################################################################################
------------------------------------------------------------------------------------
1.1)修改IO调度算法
------------------------------------------------------------------------------------
vi /boot/grub/menu.lst
root=/dev/VolGroup00/LogVol00 rhgb noapic quiet elevator=deadline
After the next reboot, use this command to verify that the correct scheduler is in use:
cat /sys/block/*/queue/scheduler
Each line of output shown should have the word [deadline] surrounded as shown in square brackets.
noop anticipatory [deadline] cfq

2.6内核的四种调度算法
In the 2.6 kernel series, there are four interchangeable schedulers, as follows:
cfq- “Completely Fair Queuing” makes a good default for most workloads on general-purpose servers.
as - “Anticipatory Scheduler” is best for workstations and other systems with slow, single-spindle storage.
deadline - “Deadline” is a relatively simple scheduler which tries to minimize I/O latency by re-ordering requests to improve performance.
noop- “NOOP” is the most simple scheduler of all, and is really just a single FIFO queue.
With newer Linux kernels (Red Hat Enterprise Linux v3 Update 3 does not have this feature. It is present in the main Linux tree as of 2.6.15), one can change the scheduler while running.
在运行中,也可以修改IO调度算法:
比如:
echo deadline > /sys/block/sdb/queue/scheduler

------------------------------------------------------------------------------------
1.2)设置主机名
------------------------------------------------------------------------------------
hostname mdw

vi /etc/sysconfig/network
HOSTNAME=mdw

#vi /etc/hosts
这一步可以先不做,后面会有完整的配置

##############################################################################################
2)
接下来的配置基本都是单独在Master上执行的
如果特别需要在segment进行配置的,会单独进行说明
##############################################################################################
------------------------------------------------------------------------------------
2.1)设置全局的profile
------------------------------------------------------------------------------------
vi /etc/profile
# Set user prompt by xigua
if [ $LOGNAME = "root" ]; then
PS1=`hostname`':$PWD#'
else
PS1=`hostname`':$PWD$'
umask 022
fi
set -o vi
# End set

------------------------------------------------------------------------------------
2.2)设置启动级别到3
------------------------------------------------------------------------------------
vi /etc/inittab
id:3:initdefault:

------------------------------------------------------------------------------------
2.3)配置内核参数和用户限额
------------------------------------------------------------------------------------
vi /etc/sysctl.conf
# Set for GreenPlum
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmni = 4096
kernel.shmmax = 500000000
kernel.shmall = 4000000000
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_max_syn_backlog=4096
net.core.netdev_max_backlog=10000
vm.overcommit_memory=2
net.ipv4.conf.all.arp_filter = 1
# End set of GreenPlum

执行下面的命令使上面的配置生效:
sysctl -p

vi /etc/security/limits.conf
#Set for GreenPlum
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
#End set of GreenPlum

------------------------------------------------------------------------------------
2.4)配置时钟同步服务
------------------------------------------------------------------------------------
vi /etc/ntp.conf
server 132.224.200.3 prefer
server mdw

------------------------------------------------------------------------------------
2.5)设置read-ahead到rc.local
------------------------------------------------------------------------------------
The changes to this file force the disk read-ahead buffers to larger than normal.
Each disk device file should have a read-ahead value of 16384.
vi /etc/rc.local
#Change the disk read-ahead buffers to larger than normal.
#Change for Dell
blockdev --setra 16384 /dev/sd*
#Change for HP
blockdev --setra 16384 /dev/cciss/c?d?*

After the next reboot, issue this command to verify the setting:
blockdev --getra /dev/sd*

------------------------------------------------------------------------------------
2.6)关闭selinux
------------------------------------------------------------------------------------
vi /etc/selinux/config
SELINUX=disabled

------------------------------------------------------------------------------------
2.7)配置/etc/hosts
------------------------------------------------------------------------------------
vi /etc/hosts
#Master node
132.224.36.207 mdw-ext
192.168.1.250   mdw-1 mdw
192.168.2.250   mdw-2
192.168.3.250   mdw-3
192.168.4.250   mdw-4

#Standby master node
132.224.36.208  smdw-ext
192.168.1.251   smdw-1 smdw
192.168.2.251   smdw-2
192.168.3.251   smdw-3
192.168.4.251   smdw-4

#Segment node1
192.168.1.1   sdw1-1 sdw1
192.168.2.1   sdw1-2
192.168.3.1   sdw1-3
192.168.4.1   sdw1-4
#Segment node2
192.168.1.2   sdw2-1 sdw2
192.168.2.2   sdw2-2
192.168.3.2   sdw2-3
192.168.4.2   sdw2-4
#Segment node3
192.168.1.3   sdw3-1 sdw3
192.168.2.3   sdw3-2
192.168.3.3   sdw3-3
192.168.4.3   sdw3-4
#Segment node4
192.168.1.4   sdw4-1 sdw4
192.168.2.4   sdw4-2
192.168.3.4   sdw4-3
192.168.4.4   sdw4-4
#Segment node5
192.168.1.5   sdw5-1 sdw5
192.168.2.5   sdw5-2
192.168.3.5   sdw5-3
192.168.4.5   sdw5-4
#Segment node6
192.168.1.6   sdw6-1 sdw6
192.168.2.6   sdw6-2
192.168.3.6   sdw6-3
192.168.4.6   sdw6-4

#ETL node1
132.224.36.203 etl1-ext1
132.224.36.204 etl1-ext2
132.224.36.203 etl1-1 etl1
132.224.36.204 etl1-2
#ETL node2
132.224.36.205 etl2-ext1
132.224.36.206 etl2-ext2
132.224.36.205 etl2-1 etl2
132.224.36.206 etl2-2

为方便后面GP配置命令使用,配置一个包含所有节点的host文件
cat > /root/allhost
mdw-ext
mdw
mdw-1
mdw-2
mdw-3
mdw-4
smdw-ext
smdw
smdw-1
smdw-2
smdw-3
smdw-4
sdw1
sdw1-1
sdw1-2
sdw1-3
sdw1-4
sdw2
sdw2-1
sdw2-2
sdw2-3
sdw2-4
sdw3
sdw3-1
sdw3-2
sdw3-3
sdw3-4
sdw4
sdw4-1
sdw4-2
sdw4-3
sdw4-4
sdw5
sdw5-1
sdw5-2
sdw5-3
sdw5-4
sdw6
sdw6-1
sdw6-2
sdw6-3
sdw6-4
etl1-ext1
etl1-ext2
etl1
etl1-1
etl1-2
etl2-ext1
etl2-ext2
etl2
etl2-1
etl2-2

配置一个不包含ETL节点的host文件
grep -v etl allhost > /root/allgphost

配置一个包含所有Segment host节点的host文件
grep sdw[0-9]-[0-9] allhost > /root/allgpseg

配置一个包含所有ETL host节点的host文件
grep etl[0-9] allhost |grep -v - > /root/alletl

------------------------------------------------------------------------------------
2.8)设置master节点到所有segment节点的ssh互信,root用户的
     互信的配置可以极大的简化后面配置的复杂度,如果对于上百台机器
     的配置,那可以巨大的节约工作量
------------------------------------------------------------------------------------
方法一:
mkdir ~/.ssh
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys

将公共密钥分发到所有的segment节点
for iter in `cat /etc/hosts | grep sdw[0-9]-[0-9.] | awk '{print $2}'`; do
   ssh root@${iter}    " mkdir ~/.ssh ; chmod 700 ~/.ssh "
   scp authorized_keys root@${iter}:~/.ssh
done

将公共密钥分发到master的standby节点
for iter in `cat /etc/hosts | grep smdw | awk '{print $2}'`; do
   ssh root@${iter}    " mkdir ~/.ssh ; chmod 700 ~/.ssh "
   scp authorized_keys root@${iter}:~/.ssh
done

方法二:(推荐使用)
对于互信的设置,更为简单的方法是利用GP自带的命令进行设置,因此可以在Master节点先上传和安装GP软件
mkdir /gpsoft
ftp && put greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.zip
unzip greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.zip
sh greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.bin
安装完gp软件之后,就可以利用GP提供的gpssh-exkeys命令来简单的配置互信了。
source /usr/local/greenplum-db/greenplum_path.sh
gpssh-exkeys -f /root/allhost


##############################################################################################
3)
互信配置好了,接下来的配置工作就相对来说轻松的多了
以上的配置基本都是在Master完成,然后利用配置的互信和GP的分发命令分发到
包括Master,Standby Master,Segment Host,ETL Host在内的所有服务器上。
接下来的配置和安装,都在Master利用GP分发命令直接执行了
为大家清晰所有操作所属的节点,特意在此说明
##############################################################################################
------------------------------------------------------------------------------------
3.1)首先将前面Master的设置分发到所有Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
利用GP提供的基于互信的命令进行分发,注意在分发之前先进行备份
source /usr/local/greenplum-db/greenplum_path.sh
cd /root

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/profile /etc/profile.bak'
gpscp -f allhost /etc/profile =:/etc/profile

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/inittab /etc/inittab.bak'
gpscp -f allhost /etc/inittab =:/etc/inittab

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/sysctl.conf /etc/sysctl.conf.bak'
gpscp -f allhost /etc/sysctl.conf =:/etc/sysctl.conf

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/security/limits.conf /etc/security/limits.conf.bak'
gpscp -f allhost /etc/security/limits.conf =:/etc/security/limits.conf

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/hosts /etc/hosts.bak'
gpscp -f allhost /etc/hosts =:/etc/hosts

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/ntp.conf /etc/ntp.conf.bak'
gpscp -f allhost /etc/ntp.conf =:/etc/ntp.conf

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/rc.local /etc/rc.local.bak'
gpscp -f allhost /etc/rc.local =:/etc/rc.local

gpssh -f /root/allhost -v -e '/bin/cp -f /etc/selinux/config /etc/selinux/config.bak'
gpscp -f allhost /etc/selinux/config =:/etc/selinux/config

------------------------------------------------------------------------------------
3.2)配置服务,包括Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
gpssh -f /root/allhost -v -e 'service sendmail stop'
gpssh -f /root/allhost -v -e 'chkconfig sendmail off'
gpssh -f /root/allhost -v -e 'service ipmi start'
gpssh -f /root/allhost -v -e 'chkconfig ipmi on'
gpssh -f /root/allhost -v -e 'service iptables stop'
gpssh -f /root/allhost -v -e 'chkconfig iptables off'
gpssh -f /root/allhost -v -e 'service ip6tables stop'
gpssh -f /root/allhost -v -e 'chkconfig ip6tables off'
gpssh -f /root/allhost -v -e 'chkconfig avahi-daemon off'
gpssh -f /root/allhost -v -e 'chkconfig avahi-dnsconfd off'
gpssh -f /root/allhost -v -e 'chkconfig conman off'
gpssh -f /root/allhost -v -e 'chkconfig bluetooth off'
gpssh -f /root/allhost -v -e 'chkconfig cpuspeed off'
gpssh -f /root/allhost -v -e 'chkconfig setroubleshoot off'
gpssh -f /root/allhost -v -e 'chkconfig hidd off'
gpssh -f /root/allhost -v -e 'chkconfig hplip off'
gpssh -f /root/allhost -v -e 'chkconfig isdn off'
gpssh -f /root/allhost -v -e 'chkconfig kudzu off'
gpssh -f /root/allhost -v -e 'chkconfig yum-updatesd off'
gpssh -f /root/allhost -v -e 'chkconfig ntpd on'
gpssh -f /root/allhost -v -e 'service ntpd start'

------------------------------------------------------------------------------------
3.3)创建xfs文件系统,包括Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
上传安装文件然后分发
kmod-xfs-0.4-2.x86_64.rpm
xfsprogs-2.9.4-4.el5.x86_64.rpm

gpscp -f /root/allhost kmod-xfs-0.4-2.x86_64.rpm =:/root
gpscp -f /root/allhost xfsprogs-2.9.4-4.el5.x86_64.rpm =:/root
安装rpm包
gpssh -f allhost -ev 'rpm -ivh kmod-xfs-0.4-2.x86_64.rpm xfsprogs-2.9.4-4.el5.x86_64.rpm'
手工加载xfs模块
gpssh -f allhost -ev 'modprobe xfs'
检查结果
gpssh -f allhost -ev 'lsmod | grep xfs'

检查需要格式化的盘,在我这里每台机器的配置相同,需要格式化的盘有两块:/dev/sdb,/dev/sdd
gpssh -f allhost -ev 'fdisk -l |grep Disk'
格式硬盘
gpssh -h etl1 -h etl2 -ev 'mkfs.xfs -f /dev/sdb'
gpssh -h etl1 -h etl2 -ev 'mkfs.xfs -f /dev/sdd'
gpssh -f /root/allgpseg -ev 'mkfs.xfs -f /dev/sdb'
gpssh -f /root/allgpseg -ev 'mkfs.xfs -f /dev/sdd'
创建文件系统挂载目录
gpssh -h etl1 -h etl2 -ev 'mkdir –p /data1'
gpssh -h etl1 -h etl2 -ev 'mkdir –p /data2'
gpssh -f /root/allgpseg -ev 'mkdir –p /data1'
gpssh -f /root/allgpseg -ev 'mkdir –p /data2'

gpssh -f /root/allgpseg -ev 'echo "/dev/sdb /data1 xfs noatime,inode64,allocsize=16m 1 1" >> /etc/fstab '
gpssh -f /root/allgpseg -ev 'echo "/dev/sdd /data2 xfs noatime,inode64,allocsize=16m 1 1" >> /etc/fstab '
gpssh -h etl1 -h etl2 -ev 'echo   "/dev/sdb /data1 xfs noatime,inode64,allocsize=16m 1 1" >> /etc/fstab '
gpssh -h etl1 -h etl2 -ev 'echo   "/dev/sdd /data2 xfs noatime,inode64,allocsize=16m 1 1" >> /etc/fstab '

gpssh -h etl1 -h etl2 -ev 'mount /data1'
gpssh -h etl1 -h etl2 -ev 'mount /data2'
gpssh -f /root/allgpseg -ev 'mount /data1'
gpssh -f /root/allgpseg -ev 'mount /data2'

gpssh -f /root/allhost -ev 'df -h'

------------------------------------------------------------------------------------
3.4)在master上创建组和用户,包括Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
gpssh -f /root/allhost -ev 'groupadd -g 3030 gpadmin'
gpssh -f /root/allhost -ev 'groupadd -g 3040 gpmon'

gpssh -f /root/allhost -ev 'useradd -u 3030 -g gpadmin -d /home/gpadmin -s /bin/bash -m gpadmin'
gpssh -f /root/allhost -ev 'useradd -u 3040 -g gpmon -d /home/gpmon -s /bin/bash -m gpmon'

修改密码:
gpssh -f /root/allhost -ev 'echo "gpadmin" > /tmp/tmp.txt && passwd gpadmin --stdin < /tmp/tmp.txt && rm -f /tmp/tmp.txt'
gpssh -f /root/allhost -ev 'echo "gpmon" > /tmp/tmp.txt && passwd gpadmin --stdin < /tmp/tmp.txt && rm -f /tmp/tmp.txt'

------------------------------------------------------------------------------------
3.5)安装gp软件,包括Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
首先在Master上安装GP软件,上传安装文件greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.zip
mdw#cd /tmp
mdw#unzip greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.zip
mdw#sh greenplum-db-4.2.0.0-build-5-RHEL5-x86_64.bin
mdw#source /usr/local/greenplum-db/greenplum_path.sh
其实在步骤2.8)中已经完成Master节点的安装了


在segment节点上分发安装gp软件,root用户直接用gpseginstall命令分发安装
首先将allhost之类的文件拷贝到gpadmin用户目录下
cp /root/all* /home/gpadmin
chown gpadmin:gpadmin /home/gpadmin/all*
chmod 644 /home/gpadmin/all*

分发软件有两种方法一(推荐):
gpscp -f allgphost -r /usr/local/greenplum-db-4.2.0.0 =:/usr/local/greenplum-db-4.2.0.0
gpssh -f allgphost -ev 'cd /usr/local; rm -rf greenplum-db; ln -fs greenplum-db-4.2.0.0 greenplum-db'
gpssh -f allgphost -ev 'chown -R gpadmin:gpadmin /usr/local/greenplum-db*'

gpscp -h etl1 -h etl2 -r /usr/local/greenplum-db-4.2.0.0 =:/usr/local/greenplum-db-4.2.0.0
gpssh -h etl1 -h etl2 -ev 'cd /usr/local; rm -rf greenplum-db; ln -fs greenplum-db-4.2.0.0 greenplum-db'
gpssh -h etl1 -h etl2 -ev 'chown -R gpadmin:gpadmin /usr/local/greenplum-db*'

方法二:
gpseginstall -f allgphost -u gpadmin -p gpadmin

检查所有segment节点的安装结果
gpssh -f allseg -e ll $GPHOME

------------------------------------------------------------------------------------
3.6)配置gpadmin的环境变量,包括Master,Standby Master,Segment Host,ETL Host
------------------------------------------------------------------------------------
在Master和Standby Master上创建/gpmaster目录
mkdir /gpmaster ; chown -R gpadmin:gpadmin /gpmaster

切换到gpadmin用户
su - gpadmin
vi /home/gpadmin/.bash_profile
. /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/gpmaster/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpyxpt

分发到所有的其他节点
su - gpadmin
gpscp -f allhost .bash_profile =:/home/gpadmin

------------------------------------------------------------------------------------
3.7)配置数据文件目录
------------------------------------------------------------------------------------
su - root
gpssh -f /home/gpadmin/allgpseg -e 'chown -R gpadmin:gpadmin /data1'
gpssh -f /home/gpadmin/allgpseg -e 'chown -R gpadmin:gpadmin /data2'

su - gpadmin
gpssh -f /home/gpadmin/allgpseg -ev 'mkdir -p /data1/primary'
gpssh -f /home/gpadmin/allgpseg -ev 'mkdir -p /data2/primary'
gpssh -f /home/gpadmin/allgpseg -ev 'mkdir -p /data1/mirror'
gpssh -f /home/gpadmin/allgpseg -ev 'mkdir -p /data2/mirror'

最后一次重启主机
gpssh -f /home/gpadmin/allhost -ev 'init 6'

------------------------------------------------------------------------------------
3.8)配置gp的配置文件
------------------------------------------------------------------------------------
su - gpadmin
mkdir gpconfigs
cd gpconfigs
cat > gpinitsystem_config
ARRAY_NAME="EMC Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary /data2/primary /data2/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/gpmaster
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data2/mirror /data2/mirror)
MASTER_MAX_CONNECT=25
DATABASE_NAME=gpyxpt
MACHINE_LIST_FILE=/home/gpadmin/allgpseg

------------------------------------------------------------------------------------
3.9)创建gp实例
------------------------------------------------------------------------------------
方法一:连带Standby Master一起创建
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -s smdw -S

方法二:先创建Master,然后单独添加Standby Master
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config
gpinitstandby -s smdw

检查数据库创建完后的情况:
mdw:/home/gpadmin$gpstate -s | grep Address |wc -l
48

$psql
psql (8.2.15)
Type "help" for help.

gpyxpt=# select * from gp_segment_configuration ;
 dbid | content | role | preferred_role | mode | status | port  | hostname | address | replication_port | san_mounts
------+---------+------+----------------+------+--------+-------+----------+---------+------------------+------------
    1 |      -1 | p    | p              | s    | u      |  5432 | mdw      | mdw     |                  |
    2 |       0 | p    | p              | s    | u      | 40000 | sdw1     | sdw1-1  |            41000 |
    6 |       4 | p    | p              | s    | u      | 40000 | sdw2     | sdw2-1  |            41000 |
   10 |       8 | p    | p              | s    | u      | 40000 | sdw3     | sdw3-1  |            41000 |
   14 |      12 | p    | p              | s    | u      | 40000 | sdw4     | sdw4-1  |            41000 |
   18 |      16 | p    | p              | s    | u      | 40000 | sdw5     | sdw5-1  |            41000 |
   22 |      20 | p    | p              | s    | u      | 40000 | sdw6     | sdw6-1  |            41000 |
    3 |       1 | p    | p              | s    | u      | 40001 | sdw1     | sdw1-2  |            41001 |
    7 |       5 | p    | p              | s    | u      | 40001 | sdw2     | sdw2-2  |            41001 |
   11 |       9 | p    | p              | s    | u      | 40001 | sdw3     | sdw3-2  |            41001 |
   15 |      13 | p    | p              | s    | u      | 40001 | sdw4     | sdw4-2  |            41001 |
   19 |      17 | p    | p              | s    | u      | 40001 | sdw5     | sdw5-2  |            41001 |
   23 |      21 | p    | p              | s    | u      | 40001 | sdw6     | sdw6-2  |            41001 |
    4 |       2 | p    | p              | s    | u      | 40002 | sdw1     | sdw1-3  |            41002 |
    8 |       6 | p    | p              | s    | u      | 40002 | sdw2     | sdw2-3  |            41002 |
   12 |      10 | p    | p              | s    | u      | 40002 | sdw3     | sdw3-3  |            41002 |
   16 |      14 | p    | p              | s    | u      | 40002 | sdw4     | sdw4-3  |            41002 |
   20 |      18 | p    | p              | s    | u      | 40002 | sdw5     | sdw5-3  |            41002 |
   24 |      22 | p    | p              | s    | u      | 40002 | sdw6     | sdw6-3  |            41002 |
    5 |       3 | p    | p              | s    | u      | 40003 | sdw1     | sdw1-4  |            41003 |
    9 |       7 | p    | p              | s    | u      | 40003 | sdw2     | sdw2-4  |            41003 |
   13 |      11 | p    | p              | s    | u      | 40003 | sdw3     | sdw3-4  |            41003 |
   17 |      15 | p    | p              | s    | u      | 40003 | sdw4     | sdw4-4  |            41003 |
   21 |      19 | p    | p              | s    | u      | 40003 | sdw5     | sdw5-4  |            41003 |
   25 |      23 | p    | p              | s    | u      | 40003 | sdw6     | sdw6-4  |            41003 |
   46 |      20 | m    | m              | s    | u      | 50000 | sdw1     | sdw1-2  |            51000 |
   26 |       0 | m    | m              | s    | u      | 50000 | sdw2     | sdw2-2  |            51000 |
   30 |       4 | m    | m              | s    | u      | 50000 | sdw3     | sdw3-2  |            51000 |
   34 |       8 | m    | m              | s    | u      | 50000 | sdw4     | sdw4-2  |            51000 |
   38 |      12 | m    | m              | s    | u      | 50000 | sdw5     | sdw5-2  |            51000 |
   42 |      16 | m    | m              | s    | u      | 50000 | sdw6     | sdw6-2  |            51000 |
   43 |      17 | m    | m              | s    | u      | 50001 | sdw1     | sdw1-3  |            51001 |
   47 |      21 | m    | m              | s    | u      | 50001 | sdw2     | sdw2-3  |            51001 |
   27 |       1 | m    | m              | s    | u      | 50001 | sdw3     | sdw3-3  |            51001 |
   31 |       5 | m    | m              | s    | u      | 50001 | sdw4     | sdw4-3  |            51001 |
   35 |       9 | m    | m              | s    | u      | 50001 | sdw5     | sdw5-3  |            51001 |
   39 |      13 | m    | m              | s    | u      | 50001 | sdw6     | sdw6-3  |            51001 |
   40 |      14 | m    | m              | s    | u      | 50002 | sdw1     | sdw1-4  |            51002 |
   44 |      18 | m    | m              | s    | u      | 50002 | sdw2     | sdw2-4  |            51002 |
   48 |      22 | m    | m              | s    | u      | 50002 | sdw3     | sdw3-4  |            51002 |
   28 |       2 | m    | m              | s    | u      | 50002 | sdw4     | sdw4-4  |            51002 |
   32 |       6 | m    | m              | s    | u      | 50002 | sdw5     | sdw5-4  |            51002 |
   36 |      10 | m    | m              | s    | u      | 50002 | sdw6     | sdw6-4  |            51002 |
   37 |      11 | m    | m              | s    | u      | 50003 | sdw1     | sdw1-1  |            51003 |
   41 |      15 | m    | m              | s    | u      | 50003 | sdw2     | sdw2-1  |            51003 |
   45 |      19 | m    | m              | s    | u      | 50003 | sdw3     | sdw3-1  |            51003 |
   49 |      23 | m    | m              | s    | u      | 50003 | sdw4     | sdw4-1  |            51003 |
   29 |       3 | m    | m              | s    | u      | 50003 | sdw5     | sdw5-1  |            51003 |
   33 |       7 | m    | m              | s    | u      | 50003 | sdw6     | sdw6-1  |            51003 |
   50 |      -1 | m    | m              | s    | u      |  5432 | smdw     | smdw    |                  |
(50 rows)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10867315/viewspace-714283/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10867315/viewspace-714283/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值