|
@@ -39,248 +39,249 @@ BACKUP_INCLUDES_DATABASES="no"
|
39
|
39
|
DATABASE_PASSWORD_FILE=/root/dbpass
|
40
|
40
|
|
41
|
41
|
function backup_database_local {
|
42
|
|
- # Makes local backups of databases which can then be automatically rolled
|
43
|
|
- # back if corruption is detected
|
44
|
|
- database_name=$1
|
45
|
|
-
|
46
|
|
- backup_databases_script=/usr/bin/backupdatabases
|
47
|
|
- echo '' >> $backup_databases_script
|
48
|
|
- echo "# Backup the ${database_name} database" >> $backup_databases_script
|
49
|
|
- echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
50
|
|
- echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
51
|
|
- echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
52
|
|
- echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
53
|
|
- echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
54
|
|
- echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
55
|
|
- echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
56
|
|
- echo '' >> $backup_databases_script
|
57
|
|
- echo ' # try to restore yesterdays database' >> $backup_databases_script
|
58
|
|
- echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
59
|
|
- echo '' >> $backup_databases_script
|
60
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
61
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
62
|
|
- echo ' else' >> $backup_databases_script
|
63
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
64
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
65
|
|
- echo ' fi' >> $backup_databases_script
|
66
|
|
- echo 'else' >> $backup_databases_script
|
67
|
|
- echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
68
|
|
- echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
69
|
|
- echo '' >> $backup_databases_script
|
70
|
|
- echo ' # Make the backup readable only by root' >> $backup_databases_script
|
71
|
|
- echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
72
|
|
- echo 'fi' >> $backup_databases_script
|
73
|
|
-
|
74
|
|
- weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
|
75
|
|
- if ! grep -q "${database_name}" ${weekly_backup_script}; then
|
76
|
|
- echo '' >> ${weekly_backup_script}
|
77
|
|
- echo "# ${database_name}" >> ${weekly_backup_script}
|
78
|
|
- echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
|
79
|
|
- echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
|
80
|
|
- echo 'fi' >> ${weekly_backup_script}
|
81
|
|
- echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
|
82
|
|
- echo " cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
|
83
|
|
- echo 'fi' >> ${weekly_backup_script}
|
84
|
|
- fi
|
85
|
|
-
|
86
|
|
- monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
|
87
|
|
- if ! grep -q "${database_name}" ${monthly_backup_script}; then
|
88
|
|
- echo '' >> ${monthly_backup_script}
|
89
|
|
- echo "# ${database_name}" >> ${monthly_backup_script}
|
90
|
|
- echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
|
91
|
|
- echo " cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
|
92
|
|
- echo 'fi' >> ${monthly_backup_script}
|
93
|
|
- echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
|
94
|
|
- echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
|
95
|
|
- echo 'fi' >> ${monthly_backup_script}
|
96
|
|
- fi
|
97
|
|
-
|
98
|
|
- if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
|
99
|
|
- echo "${PROJECT_NAME}-repair-database ${database_name}" >> /etc/cron.hourly/repair
|
100
|
|
- # remove legacy stuff
|
101
|
|
- sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
|
102
|
|
- fi
|
|
42
|
+ # Makes local backups of databases which can then be automatically rolled
|
|
43
|
+ # back if corruption is detected
|
|
44
|
+ database_name=$1
|
|
45
|
+
|
|
46
|
+ backup_databases_script=/usr/bin/backupdatabases
|
|
47
|
+ echo '' >> $backup_databases_script
|
|
48
|
+ echo "# Backup the ${database_name} database" >> $backup_databases_script
|
|
49
|
+ echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
|
50
|
+ echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
|
51
|
+ echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
|
52
|
+ echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
|
53
|
+ echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
|
54
|
+ echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
|
55
|
+ echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
|
56
|
+ echo '' >> $backup_databases_script
|
|
57
|
+ echo ' # try to restore yesterdays database' >> $backup_databases_script
|
|
58
|
+ echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
|
59
|
+ echo '' >> $backup_databases_script
|
|
60
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
61
|
+ echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
62
|
+ echo ' else' >> $backup_databases_script
|
|
63
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
64
|
+ echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
65
|
+ echo ' fi' >> $backup_databases_script
|
|
66
|
+ echo 'else' >> $backup_databases_script
|
|
67
|
+ echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
|
68
|
+ echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
|
69
|
+ echo '' >> $backup_databases_script
|
|
70
|
+ echo ' # Make the backup readable only by root' >> $backup_databases_script
|
|
71
|
+ echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
|
72
|
+ echo 'fi' >> $backup_databases_script
|
|
73
|
+
|
|
74
|
+ weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
|
|
75
|
+ if ! grep -q "${database_name}" ${weekly_backup_script}; then
|
|
76
|
+ echo '' >> ${weekly_backup_script}
|
|
77
|
+ echo "# ${database_name}" >> ${weekly_backup_script}
|
|
78
|
+ echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
|
|
79
|
+ echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
|
|
80
|
+ echo 'fi' >> ${weekly_backup_script}
|
|
81
|
+ echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
|
|
82
|
+ echo " cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
|
|
83
|
+ echo 'fi' >> ${weekly_backup_script}
|
|
84
|
+ fi
|
|
85
|
+
|
|
86
|
+ monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
|
|
87
|
+ if ! grep -q "${database_name}" ${monthly_backup_script}; then
|
|
88
|
+ echo '' >> ${monthly_backup_script}
|
|
89
|
+ echo "# ${database_name}" >> ${monthly_backup_script}
|
|
90
|
+ echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
|
|
91
|
+ echo " cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
|
|
92
|
+ echo 'fi' >> ${monthly_backup_script}
|
|
93
|
+ echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
|
|
94
|
+ echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
|
|
95
|
+ echo 'fi' >> ${monthly_backup_script}
|
|
96
|
+ fi
|
|
97
|
+
|
|
98
|
+ if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
|
|
99
|
+ echo "${PROJECT_NAME}-repair-database ${database_name}" >> /etc/cron.hourly/repair
|
|
100
|
+ # remove legacy stuff
|
|
101
|
+ sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
|
|
102
|
+ fi
|
103
|
103
|
}
|
104
|
104
|
|
105
|
105
|
function get_mariadb_password {
|
106
|
|
- if [ -f /home/$MY_USERNAME/README ]; then
|
107
|
|
- if grep -q "MariaDB password" /home/$MY_USERNAME/README; then
|
108
|
|
- if [ -f $DATABASE_PASSWORD_FILE ]; then
|
109
|
|
- MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
|
110
|
|
- else
|
111
|
|
- MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
112
|
|
- echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
|
113
|
|
- chmod 600 $DATABASE_PASSWORD_FILE
|
114
|
|
- fi
|
115
|
|
- fi
|
116
|
|
- fi
|
|
106
|
+ if [ -f /home/$MY_USERNAME/README ]; then
|
|
107
|
+ if grep -q "MariaDB password" /home/$MY_USERNAME/README; then
|
|
108
|
+ if [ -f $DATABASE_PASSWORD_FILE ]; then
|
|
109
|
+ MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
|
|
110
|
+ else
|
|
111
|
+ MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
|
112
|
+ echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
|
|
113
|
+ chmod 600 $DATABASE_PASSWORD_FILE
|
|
114
|
+ fi
|
|
115
|
+ fi
|
|
116
|
+ fi
|
117
|
117
|
}
|
118
|
118
|
|
119
|
119
|
function install_mariadb {
|
120
|
|
- if grep -Fxq "install_mariadb" $COMPLETION_FILE; then
|
121
|
|
- return
|
122
|
|
- fi
|
123
|
|
- apt-get -y install python-software-properties debconf-utils
|
124
|
|
- apt-get -y install software-properties-common
|
125
|
|
- apt-get -y update
|
126
|
|
-
|
127
|
|
- function_check get_mariadb_password
|
128
|
|
- get_mariadb_password
|
129
|
|
- if [ ! $MARIADB_PASSWORD ]; then
|
130
|
|
- if [ -f $IMAGE_PASSWORD_FILE ]; then
|
131
|
|
- MARIADB_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
|
132
|
|
- else
|
133
|
|
- MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
|
134
|
|
- fi
|
135
|
|
- echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
|
136
|
|
- chmod 600 $DATABASE_PASSWORD_FILE
|
137
|
|
-
|
138
|
|
- echo '' >> /home/$MY_USERNAME/README
|
139
|
|
- echo '' >> /home/$MY_USERNAME/README
|
140
|
|
- echo 'MariaDB / MySql' >> /home/$MY_USERNAME/README
|
141
|
|
- echo '===============' >> /home/$MY_USERNAME/README
|
142
|
|
- echo $"Your MariaDB password is: $MARIADB_PASSWORD" >> /home/$MY_USERNAME/README
|
143
|
|
- echo '' >> /home/$MY_USERNAME/README
|
144
|
|
- chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
|
145
|
|
- chmod 600 /home/$MY_USERNAME/README
|
146
|
|
- fi
|
147
|
|
-
|
148
|
|
- debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
|
149
|
|
- debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password $MARIADB_PASSWORD"
|
150
|
|
- apt-get -y install mariadb-server
|
151
|
|
- apt-get -y remove --purge apache*
|
152
|
|
- if [ -d /etc/apache2 ]; then
|
153
|
|
- rm -rf /etc/apache2
|
154
|
|
- echo $'Removed Apache installation after MariaDB install'
|
155
|
|
- fi
|
156
|
|
-
|
157
|
|
- if [ ! -d /etc/mysql ]; then
|
158
|
|
- echo $"ERROR: mariadb-server does not appear to have installed. $CHECK_MESSAGE"
|
159
|
|
- exit 54
|
160
|
|
- fi
|
161
|
|
-
|
162
|
|
- mysqladmin -u root password "$MARIADB_PASSWORD"
|
163
|
|
- echo 'install_mariadb' >> $COMPLETION_FILE
|
|
120
|
+ if grep -Fxq "install_mariadb" $COMPLETION_FILE; then
|
|
121
|
+ return
|
|
122
|
+ fi
|
|
123
|
+ apt-get -y install python-software-properties debconf-utils
|
|
124
|
+ apt-get -y install software-properties-common
|
|
125
|
+ apt-get -y update
|
|
126
|
+
|
|
127
|
+ function_check get_mariadb_password
|
|
128
|
+ get_mariadb_password
|
|
129
|
+ if [ ! $MARIADB_PASSWORD ]; then
|
|
130
|
+ if [ -f $IMAGE_PASSWORD_FILE ]; then
|
|
131
|
+ MARIADB_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
|
|
132
|
+ else
|
|
133
|
+ MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
|
|
134
|
+ fi
|
|
135
|
+ echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
|
|
136
|
+ chmod 600 $DATABASE_PASSWORD_FILE
|
|
137
|
+
|
|
138
|
+ echo '' >> /home/$MY_USERNAME/README
|
|
139
|
+ echo '' >> /home/$MY_USERNAME/README
|
|
140
|
+ echo 'MariaDB / MySql' >> /home/$MY_USERNAME/README
|
|
141
|
+ echo '===============' >> /home/$MY_USERNAME/README
|
|
142
|
+ echo $"Your MariaDB password is: $MARIADB_PASSWORD" >> /home/$MY_USERNAME/README
|
|
143
|
+ echo '' >> /home/$MY_USERNAME/README
|
|
144
|
+ chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
|
|
145
|
+ chmod 600 /home/$MY_USERNAME/README
|
|
146
|
+ fi
|
|
147
|
+
|
|
148
|
+ debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
|
|
149
|
+ debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password $MARIADB_PASSWORD"
|
|
150
|
+ apt-get -y install mariadb-server
|
|
151
|
+ apt-get -y remove --purge apache*
|
|
152
|
+ if [ -d /etc/apache2 ]; then
|
|
153
|
+ rm -rf /etc/apache2
|
|
154
|
+ echo $'Removed Apache installation after MariaDB install'
|
|
155
|
+ fi
|
|
156
|
+
|
|
157
|
+ if [ ! -d /etc/mysql ]; then
|
|
158
|
+ echo $"ERROR: mariadb-server does not appear to have installed. $CHECK_MESSAGE"
|
|
159
|
+ exit 54
|
|
160
|
+ fi
|
|
161
|
+
|
|
162
|
+ mysqladmin -u root password "$MARIADB_PASSWORD"
|
|
163
|
+ echo 'install_mariadb' >> $COMPLETION_FILE
|
164
|
164
|
}
|
165
|
165
|
|
166
|
166
|
function backup_databases_script_header {
|
167
|
|
- if [ ! -f /usr/bin/backupdatabases ]; then
|
168
|
|
- # daily
|
169
|
|
- echo '#!/bin/sh' > /usr/bin/backupdatabases
|
170
|
|
- echo '' >> /usr/bin/backupdatabases
|
171
|
|
- echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
|
172
|
|
- echo '' >> /usr/bin/backupdatabases
|
173
|
|
- echo -n 'MYSQL_PASSWORD=$(cat ' >> /usr/bin/backupdatabases
|
174
|
|
- echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
|
175
|
|
- echo 'umask 0077' >> /usr/bin/backupdatabases
|
176
|
|
- echo '' >> /usr/bin/backupdatabases
|
177
|
|
- echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
|
178
|
|
- echo "if [ -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backupdatabases
|
179
|
|
- echo ' exit 1' >> /usr/bin/backupdatabases
|
180
|
|
- echo 'fi' >> /usr/bin/backupdatabases
|
181
|
|
- chmod 600 /usr/bin/backupdatabases
|
182
|
|
- chmod +x /usr/bin/backupdatabases
|
183
|
|
-
|
184
|
|
- echo '#!/bin/sh' > /etc/cron.daily/backupdatabasesdaily
|
185
|
|
- echo '/usr/bin/backupdatabases' >> /etc/cron.daily/backupdatabasesdaily
|
186
|
|
- chmod 600 /etc/cron.daily/backupdatabasesdaily
|
187
|
|
- chmod +x /etc/cron.daily/backupdatabasesdaily
|
188
|
|
-
|
189
|
|
- # weekly
|
190
|
|
- echo '#!/bin/sh' > /etc/cron.weekly/backupdatabasesweekly
|
191
|
|
- echo '' >> /etc/cron.weekly/backupdatabasesweekly
|
192
|
|
- echo 'umask 0077' >> /etc/cron.weekly/backupdatabasesweekly
|
193
|
|
-
|
194
|
|
- chmod 600 /etc/cron.weekly/backupdatabasesweekly
|
195
|
|
- chmod +x /etc/cron.weekly/backupdatabasesweekly
|
196
|
|
-
|
197
|
|
- # monthly
|
198
|
|
- echo '#!/bin/sh' > /etc/cron.monthly/backupdatabasesmonthly
|
199
|
|
- echo '' >> /etc/cron.monthly/backupdatabasesmonthly
|
200
|
|
- echo 'umask 0077' >> /etc/cron.monthly/backupdatabasesmonthly
|
201
|
|
-
|
202
|
|
- chmod 600 /etc/cron.monthly/backupdatabasesmonthly
|
203
|
|
- chmod +x /etc/cron.monthly/backupdatabasesmonthly
|
204
|
|
- fi
|
|
167
|
+ if [ ! -f /usr/bin/backupdatabases ]; then
|
|
168
|
+ # daily
|
|
169
|
+ echo '#!/bin/sh' > /usr/bin/backupdatabases
|
|
170
|
+ echo '' >> /usr/bin/backupdatabases
|
|
171
|
+ echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
|
|
172
|
+ echo '' >> /usr/bin/backupdatabases
|
|
173
|
+ echo -n 'MYSQL_PASSWORD=$(cat ' >> /usr/bin/backupdatabases
|
|
174
|
+ echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
|
|
175
|
+ echo 'umask 0077' >> /usr/bin/backupdatabases
|
|
176
|
+ echo '' >> /usr/bin/backupdatabases
|
|
177
|
+ echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
|
|
178
|
+ echo "if [ -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backupdatabases
|
|
179
|
+ echo ' exit 1' >> /usr/bin/backupdatabases
|
|
180
|
+ echo 'fi' >> /usr/bin/backupdatabases
|
|
181
|
+ chmod 600 /usr/bin/backupdatabases
|
|
182
|
+ chmod +x /usr/bin/backupdatabases
|
|
183
|
+
|
|
184
|
+ echo '#!/bin/sh' > /etc/cron.daily/backupdatabasesdaily
|
|
185
|
+ echo '/usr/bin/backupdatabases' >> /etc/cron.daily/backupdatabasesdaily
|
|
186
|
+ chmod 600 /etc/cron.daily/backupdatabasesdaily
|
|
187
|
+ chmod +x /etc/cron.daily/backupdatabasesdaily
|
|
188
|
+
|
|
189
|
+ # weekly
|
|
190
|
+ echo '#!/bin/sh' > /etc/cron.weekly/backupdatabasesweekly
|
|
191
|
+ echo '' >> /etc/cron.weekly/backupdatabasesweekly
|
|
192
|
+ echo 'umask 0077' >> /etc/cron.weekly/backupdatabasesweekly
|
|
193
|
+
|
|
194
|
+ chmod 600 /etc/cron.weekly/backupdatabasesweekly
|
|
195
|
+ chmod +x /etc/cron.weekly/backupdatabasesweekly
|
|
196
|
+
|
|
197
|
+ # monthly
|
|
198
|
+ echo '#!/bin/sh' > /etc/cron.monthly/backupdatabasesmonthly
|
|
199
|
+ echo '' >> /etc/cron.monthly/backupdatabasesmonthly
|
|
200
|
+ echo 'umask 0077' >> /etc/cron.monthly/backupdatabasesmonthly
|
|
201
|
+
|
|
202
|
+ chmod 600 /etc/cron.monthly/backupdatabasesmonthly
|
|
203
|
+ chmod +x /etc/cron.monthly/backupdatabasesmonthly
|
|
204
|
+ fi
|
205
|
205
|
}
|
206
|
206
|
|
207
|
207
|
function repair_databases_script {
|
208
|
|
- if [ -f /etc/cron.hourly/repair ]; then
|
209
|
|
- sed -i "s|/usr/bin/repairdatabase|${PROJECT_NAME}-repair-database|g" /etc/cron.hourly/repair
|
210
|
|
- fi
|
|
208
|
+ if [ -f /etc/cron.hourly/repair ]; then
|
|
209
|
+ sed -i "s|/usr/bin/repairdatabase|${PROJECT_NAME}-repair-database|g" /etc/cron.hourly/repair
|
|
210
|
+ fi
|
211
|
211
|
|
212
|
|
- if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
|
213
|
|
- return
|
214
|
|
- fi
|
|
212
|
+ if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
|
|
213
|
+ return
|
|
214
|
+ fi
|
215
|
215
|
|
216
|
|
- if [ ! -f $DATABASE_PASSWORD_FILE ]; then
|
217
|
|
- return
|
218
|
|
- fi
|
|
216
|
+ if [ ! -f $DATABASE_PASSWORD_FILE ]; then
|
|
217
|
+ return
|
|
218
|
+ fi
|
219
|
219
|
|
220
|
|
- echo '#!/bin/bash' > /etc/cron.hourly/repair
|
221
|
|
- echo '' >> /etc/cron.hourly/repair
|
222
|
|
- chmod 600 /etc/cron.hourly/repair
|
223
|
|
- chmod +x /etc/cron.hourly/repair
|
|
220
|
+ echo '#!/bin/bash' > /etc/cron.hourly/repair
|
|
221
|
+ echo '' >> /etc/cron.hourly/repair
|
|
222
|
+ chmod 600 /etc/cron.hourly/repair
|
|
223
|
+ chmod +x /etc/cron.hourly/repair
|
224
|
224
|
|
225
|
|
- echo 'repair_databases_script' >> $COMPLETION_FILE
|
|
225
|
+ echo 'repair_databases_script' >> $COMPLETION_FILE
|
226
|
226
|
}
|
227
|
227
|
|
228
|
228
|
function remove_database {
|
229
|
|
- app_name="$1"
|
230
|
|
- if [ ! -d $INSTALL_DIR ]; then
|
231
|
|
- mkdir $INSTALL_DIR
|
232
|
|
- fi
|
233
|
|
- echo "drop database ${app_name};
|
|
229
|
+ app_name="$1"
|
|
230
|
+ if [ ! -d $INSTALL_DIR ]; then
|
|
231
|
+ mkdir $INSTALL_DIR
|
|
232
|
+ fi
|
|
233
|
+ echo "drop database ${app_name};
|
234
|
234
|
quit" > $INSTALL_DIR/batch.sql
|
235
|
|
- chmod 600 $INSTALL_DIR/batch.sql
|
236
|
|
- mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
|
237
|
|
- shred -zu $INSTALL_DIR/batch.sql
|
|
235
|
+ chmod 600 $INSTALL_DIR/batch.sql
|
|
236
|
+ mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
|
|
237
|
+ shred -zu $INSTALL_DIR/batch.sql
|
238
|
238
|
}
|
239
|
239
|
|
240
|
240
|
function create_database {
|
241
|
|
- app_name="$1"
|
242
|
|
- app_admin_password="$2"
|
243
|
|
- app_admin_username=$3
|
244
|
|
- if [ ! -d $INSTALL_DIR ]; then
|
245
|
|
- mkdir $INSTALL_DIR
|
246
|
|
- fi
|
247
|
|
- if [ ! $app_admin_username ]; then
|
248
|
|
- app_admin_username=${app_name}admin
|
249
|
|
- fi
|
250
|
|
- echo "create database ${app_name};
|
|
241
|
+ app_name="$1"
|
|
242
|
+ app_admin_password="$2"
|
|
243
|
+ app_admin_username=$3
|
|
244
|
+ if [ ! -d $INSTALL_DIR ]; then
|
|
245
|
+ mkdir $INSTALL_DIR
|
|
246
|
+ fi
|
|
247
|
+ if [ ! $app_admin_username ]; then
|
|
248
|
+ app_admin_username=${app_name}admin
|
|
249
|
+ fi
|
|
250
|
+ echo "create database ${app_name};
|
251
|
251
|
CREATE USER '$app_admin_username@localhost' IDENTIFIED BY '${app_admin_password}';
|
252
|
252
|
GRANT ALL PRIVILEGES ON ${app_name}.* TO '$app_admin_username@localhost';
|
253
|
253
|
quit" > $INSTALL_DIR/batch.sql
|
254
|
|
- chmod 600 $INSTALL_DIR/batch.sql
|
255
|
|
- mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
|
256
|
|
- shred -zu $INSTALL_DIR/batch.sql
|
|
254
|
+ chmod 600 $INSTALL_DIR/batch.sql
|
|
255
|
+ mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
|
|
256
|
+ shred -zu $INSTALL_DIR/batch.sql
|
257
|
257
|
}
|
258
|
258
|
|
259
|
259
|
function initialise_database {
|
260
|
|
- database_name=$1
|
261
|
|
- database_file=$2
|
262
|
|
- mysql -u root --password="$MARIADB_PASSWORD" -D $database_name < $database_file
|
263
|
|
- if [ ! "$?" = "0" ]; then
|
264
|
|
- exit 62952
|
265
|
|
- fi
|
|
260
|
+ database_name=$1
|
|
261
|
+ database_file=$2
|
|
262
|
+ mysql -u root --password="$MARIADB_PASSWORD" -D $database_name < $database_file
|
|
263
|
+ if [ ! "$?" = "0" ]; then
|
|
264
|
+ exit 62952
|
|
265
|
+ fi
|
266
|
266
|
}
|
267
|
267
|
|
268
|
268
|
function run_query {
|
269
|
|
- database_name=$1
|
270
|
|
- database_query=$2
|
271
|
|
- mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name
|
|
269
|
+ database_name=$1
|
|
270
|
+ database_query=$2
|
|
271
|
+ mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name
|
272
|
272
|
}
|
273
|
273
|
|
274
|
274
|
function drop_database {
|
275
|
|
- database_name=$1
|
276
|
|
- mysqladmin -uroot -p"$MARIADB_PASSWORD" -f drop $database_name
|
|
275
|
+ database_name=$1
|
|
276
|
+ get_mariadb_password
|
|
277
|
+ mysqladmin -uroot -p"$MARIADB_PASSWORD" -f drop $database_name
|
277
|
278
|
}
|
278
|
279
|
|
279
|
280
|
function database_reinstall {
|
280
|
|
- apt-get -y purge mariadb*
|
281
|
|
- rm -rf /var/lib/mysql
|
282
|
|
- rm -rf /etc/mysql
|
283
|
|
- apt-get -y install mariadb-server
|
|
281
|
+ apt-get -y purge mariadb*
|
|
282
|
+ rm -rf /var/lib/mysql
|
|
283
|
+ rm -rf /etc/mysql
|
|
284
|
+ apt-get -y install mariadb-server
|
284
|
285
|
}
|
285
|
286
|
|
286
|
287
|
# NOTE: deliberately there is no "exit 0"
|