Project

General

Profile

1
to test the import:
2
# -> "to set up the VM"
3
# restore the "booted" snapshot under "+pg_restore"
4
# start the VM
5
ssh -t 128.111.220.240
6
# update system time so wait times can be calculated correctly:
7
sudo service ntp stop; sudo ntpdate -s time.nist.gov; sudo service ntp start
8
* to test a different revision:
9
# {
10
# pick [rev] from r12025 (2014-2-2, last success)..r13002 (2014-3-30, 1st failure)
11
svn revert --depth infinity .
12
svn up --force -r [rev] # runtime: 1 min ("0m50.945s")
13
# fix concurrent regressions (which occurred during the revision range):
14
for patch in r12689 r12760 r12865 r12872 r12994; do
15
	svn di -c "$patch"|patch --force --fuzz=3 -p 0
16
done
17
	# use `patch` instead of `svn merge` because `svn merge` sometimes inexplicably
18
	# doens't apply patches
19
	# --fuzz: allow patching even when surrounding lines have changed
20
# if any of the commands below are broken, try a different revision
21
yes|make mk_db rm_initial_public schemas/reinstall # mk_db: install new extensions
22
yes|make inputs/.TNRS/reinstall
23
yes|make schemas/public/reinstall # sanity check before running the import
24
# }
25
$0 # nested shell
26
export version=test_import
27
declare -ax inputs; inputs=(inputs/ARIZ/)
28
. bin/import_all # runtime: 50 min ("0:45:07.105389"+"4:05.03")
29
# at "This will delete the test_import schema", type y and press ENTER
30
# determine if the revision works:
31
# {
32
# wait 8-10 min
33
# wait until pg_stat_activity shows an in# query
34
# see if pg_stat_activity shows the buggy query
35
#  (https://projects.nceas.ucsb.edu/nceas/issues/902) -> the revision is broken,
36
#  or an in# query after in#6 -> the revision is OK
37
# }
38
# stop the import:
39
# {
40
kill % # cancel after_import()
41
. bin/stop_imports
42
sudo pkill -f 'postgres: bien vegbien'
43
# }
44

    
45
to set up the VM:
46
ln -s /Volumes/vegbiendev/vegbiendev.vdi ~/VirtualBox\ VMs/vegbiendev/vegbiendev.vdi
47
screen
48
# press ENTER
49
l=1 overwrite=1 inplace=1 src=/Volumes/vegbiendev/vegbiendev.vdi dest=~/VirtualBox\ VMs/vegbiendev/vegbiendev.file.vdi put # runtime: 5 h ("4:43:16")
50
	# move vegbiendev.vdi to the internal hard drive
51
# press Ctrl-D
52
(cd ~/VirtualBox\ VMs/vegbiendev/; mv vegbiendev.file.vdi vegbiendev.vdi)
53
# open VirtualBox
54
# select the vegbiendev VM
55
# restore the "+bootloader+VirtualBox Guest Additions+eth1" snapshot
56
# open Settings > System tab
57
# in the Motherboard subtab, set Base Memory to 2048 MB
58
# in the Processor subtab, set Processor(s) to 1
59
# boot the VM
60
# when asked whether to skip mounting, press S
61
ssh -t 128.111.220.240
62
rm inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql
63
sed --in-place -r 's/^(shared_buffers = )\S+/\11000MB/' schemas/postgresql.conf
64
	# = <1 GB; decrease to match VM's allocated memory (2 GB)
65
sudo mkdir -p /var/lib/postgresql/9.3/main/
66
sudo chown postgres:postgres /var/lib/postgresql/9.3/main/
67
sudo -E -u postgres /usr/lib/postgresql/9.3/bin/initdb -D /var/lib/postgresql/9.3/main/
68
sudo ln -sf /etc/postgresql/9.3/main/*.conf /var/lib/postgresql/9.3/main/
69
make postgres_reload
70
# at "Modifying postgresql.conf and pg_hba.conf", type y and press ENTER
71
# at "kernel.shmmax ... Press ENTER to continue", press ENTER
72
# at "restart PostgreSQL manually ... Press ENTER to continue":
73
# open a new window
74
ssh -t 128.111.220.240
75
# run what it says
76
# press Ctrl-D
77
# return to the previous window
78
# press ENTER
79
* to use a database backup:
80
# {
81
make mk_db rm_initial_public # do things that are not part of the backup
82
screen
83
# press ENTER
84
l=1 src='frenzy.nceas.ucsb.edu:~/bien/' dest=. put backups/vegbien.r12025.backup # runtime: 25 min ("0:25:24")
85
# press Ctrl-D
86
sudo chgrp postgres backups/vegbien.r12025.backup
87
sudo halt
88
# at "System halted", close the VM and *uncheck* Restore current snapshot
89
# create a VM snapshot named "+initdb+database backup file"
90
# boot the VM
91
# when asked whether to skip mounting, press S
92
ssh -t 128.111.220.240
93
screen
94
# press ENTER
95
time for schema in temp util py_util geoscrub herbaria IRMNG IUCN NCBI newWorld TNRS ARIZ; do
96
	bin/psql_verbose_vegbien <<<"CREATE SCHEMA \"$schema\";"
97
	"time" sudo -E -u postgres pg_restore --exit-on-error --verbose --dbname=vegbien --schema="$schema" backups/vegbien.r12025.backup
98
		# need to run as DB superuser to restore py_util
99
done # runtime: 15 min ("11:44:05" - ~11:30)
100
	# must use for loop because pg_restore doesn't support multiple --schema
101
	# options (it just uses the last one)
102
	# (http://postgresql.1045698.n5.nabble.com/pg-restore-should-accept-multiple-t-switches-td2399138.html)
103
# press Ctrl-D
104
sudo halt
105
# at "System halted", close the VM and *uncheck* Restore current snapshot
106
# create a VM snapshot named "+pg_restore"
107
# boot the VM
108
# when asked whether to skip mounting, press S
109
# create a VM snapshot named "booted"
110
# close the VM and *check* Restore current snapshot
111
# }
112
* to use a clean database:
113
# {
114
(cd inputs/; for dir in IRMNG IUCN newWorld; do mv "$dir" ."$dir"; done)
115
(cd inputs/; for dir in */; do dir="${dir%/}"; case "$dir" in analytical_db|ARIZ) : ;; *) mv "$dir" .archive/"$dir";; esac; done)
116
make misc-Linux db inputs/install schemas/public/reinstall # runtime: 15 min ("15:11:16".."15:26:28") @starscream.vegbiendev
117
# at "This will delete the current public schema of your VegBIEN DB", type y and press ENTER
118
# }
119

    
120
to install system updates:
121
# boot the VM
122
# when asked whether to skip mounting, press S
123
sudo apt-get update
124
sudo apt-get dist-upgrade # runtime: 12 min ("14:20:15".."14:31:50") @starscream.vegbiendev
125
sudo reboot # some system updates require system restart
126
# when asked whether to skip mounting, press S
127
sudo halt
128
# at "System halted", close the VM and *uncheck* Restore current snapshot
129
# create a VM snapshot named "+system updates"
130
# boot the VM
131
# when asked whether to skip mounting, press S
132
# create a VM snapshot named "booted"
133

    
134
to enable VM to access VirtualBox shared folders:
135
(currently doesn't work, likely because of a bug in VirtualBox Guest Additions when installed on something other than a clean Linux install)
136
sudo sed --in-place -r 's/^vboxsf:.*:$/&aaronmk/' /etc/group
137
# press Ctrl-D
138
ssh -t 128.111.220.240
139

    
140
to retrieve the original contents of the backup from the VM:
141
# open VirtualBox
142
# select the vegbiendev VM
143
# restore the "+LiveCD+ssh+root pw+mount" snapshot
144
# **IMPORTANT**: can't use inplace=1 optimization because this messes up the
145
#  shared hardlinks used by ~/Documents/BIEN/vegbiendev/
146
# --link-dest: relative to dest, not currdir, so need abs path
147
l=1 overwrite=1 src=root@128.111.220.198:/mnt/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev/ --exclude=/home/bien/svn/ --exclude=/home/aaronmk/Dropbox/
148
	# --exclude=/home/aaronmk/Dropbox/: this is not used by the BIEN scripts
149
sudo mkdir ~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/home/bien/svn/
150
# --exclude of specific files: these have compressed versions
151
l=1 overwrite=1 src=root@128.111.220.198:/mnt/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev/home/aaronmk/bien/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql --exclude='/inputs/FIA/_archive/2011-10-17/Organism/*_Extract.csv' --exclude='*.CSV' --exclude='*.gz' --exclude='*.log.sql' --exclude='*.zip'                                          home/bien/svn/
152
l=1 overwrite=1 src=root@128.111.220.198:/mnt/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev/home/aaronmk/bien/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql --include='/inputs/FIA/_archive/2011-10-17/Organism/*_Extract.csv' --include='*.CSV' --include='*.gz' --include='*.log.sql' --include='*.zip' --include='*/' --exclude='**' --no-perms home/bien/svn/
153
	# --no-perms: enable --link-dest to work in spite of perms changes (the
154
	#  perms on these files are not important to the BIEN scripts)
155
# generate list of all the files whose permissions were changed since the
156
#  backup, but which are extracted with their changed permissions instead of
157
#  their original ones in the backup:
158
l=  overwrite=1 src=root@128.111.220.198:/mnt/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev/home/aaronmk/bien/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql home/bien/svn/ >~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.perms_changed.txt
159

    
160
to retrieve the contents of the VM, with the VirtualBox changes added:
161
# open VirtualBox
162
# select the vegbiendev VM
163
# restore the "(+VirtualBox changes)+root pw" snapshot
164
# boot the VM
165
# **IMPORTANT**: can't use inplace=1 optimization because this messes up the
166
#  shared hardlinks used by ~/Documents/BIEN/vegbiendev/
167
# --link-dest: relative to dest, not currdir, so need abs path
168
l=1 overwrite=1 src=root@128.111.220.240:/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.VirtualBox/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/ --exclude=/home/bien/svn/ --exclude=/home/aaronmk/Dropbox/
169
	# --exclude=/home/aaronmk/Dropbox/: this is not used by the BIEN scripts
170
sudo mkdir ~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.VirtualBox/home/bien/svn/
171
# --exclude of specific files: these have compressed versions
172
l=1 overwrite=1 src=root@128.111.220.240:/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.VirtualBox/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/home/bien/svn/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql --exclude='/inputs/FIA/_archive/2011-10-17/Organism/*_Extract.csv' --exclude='*.CSV' --exclude='*.gz' --exclude='*.log.sql' --exclude='*.zip'                                          home/bien/svn/
173
l=1 overwrite=1 src=root@128.111.220.240:/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.VirtualBox/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/home/bien/svn/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql --include='/inputs/FIA/_archive/2011-10-17/Organism/*_Extract.csv' --include='*.CSV' --include='*.gz' --include='*.log.sql' --include='*.zip' --include='*/' --exclude='**' --no-perms home/bien/svn/
174
	# --no-perms: enable --link-dest to work in spite of perms changes (the
175
	#  perms on these files are not important to the BIEN scripts)
176
l=  overwrite=1 src=root@128.111.220.240:/ dest=~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.VirtualBox/ sudo -E put --link-dest="$HOME"/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT/home/bien/svn/ --no-owner --no-group --exclude=/backups/.vegbien.r10848.backup.aYCFxI --exclude='/backups/vegbien.*.backup' --exclude=/inputs/GBIF/_archive/Specimen/GBIF.txt --exclude=/inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.sql --exclude=/inputs/GBIF/raw_occurrence_record_plants/_archive/table.2013-5-13.tsv --exclude=/inputs/GBIF/raw_occurrence_record_plants/table.tsv --exclude=/inputs/VegBank/_archive/2012-8-30/vegbank.sql home/bien/svn/|diff /dev/stdin ~/Documents/BIEN/vegbiendev.2014-2-2_1-07-32PT.perms_changed.txt 
177
# ensure there are no file changes
178

    
179
to configure the VM to support VirtualBox:
180
# open VirtualBox
181
# select the vegbiendev VM
182
# restore the "restore of 2014-02-02 01:07:32 backup (DO NOT DELETE)" snapshot
183
# boot the VM from ~/software/ubuntu-12.04.4-desktop-amd64.iso
184
# install a bootloader
185
# shut down the VM
186
# eject the CD image
187
# boot the VM
188
# when asked whether to skip mounting, press S
189
# install VirtualBox Guest Additions
190
# set up the network connection:
191
# {
192
ssh -t aaronmk@128.111.220.240
193
sudo nano /etc/network/interfaces
194
# remove the entry for eth0 (which doesn't work under VirtualBox)
195
# add the following entry:
196
---
197
auto eth1
198
iface eth1 inet dhcp
199
---
200
# }
(1-1/2)