6 |
fi |
fi |
7 |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
8 |
- mysqldump --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
- mysqldump --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
9 |
+ mysqldump --force --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
+ mysqldump --force --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
10 |
if [ "$fixtables" = "enabled" ]; then |
if [ "$fixtables" = "enabled" ]; then |
11 |
repair="failure" |
repair="failure" |
12 |
message="$message \nTrying to auto-repair the db and do a backup after..." |
message="$message \nTrying to auto-repair the db and do a backup after..." |
13 |
mysqlcheck -s --auto-repair -c "$db" && \ |
mysqlcheck -s --auto-repair -c "$db" && \ |
14 |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
15 |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
16 |
message="$message \n => $repair" |
message="$message \n => $repair" |
17 |
fi |
fi |
18 |
echo $message |
echo $message |
30 |
for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
31 |
do |
do |
32 |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
33 |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
34 |
+done |
+done |
35 |
+ |
+ |
36 |
+# Backup the users and privileges |
+# Backup the users and privileges |
39 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
40 |
+# inspired by https://stackoverflow.com/a/56588240 |
+# inspired by https://stackoverflow.com/a/56588240 |
41 |
+# for mariadb 5.5 we replace authentication_string with Password |
+# for mariadb 5.5 we replace authentication_string with Password |
42 |
+mysql $@ -sNe " \ |
+mysql -sNe " \ |
43 |
+ SELECT \ |
+ SELECT \ |
44 |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', Password, '\'\;' ) AS User \ |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', Password, '\'\;' ) AS User \ |
45 |
+ FROM mysql.user \ |
+ FROM mysql.user \ |
46 |
+ WHERE \ |
+ WHERE \ |
47 |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
48 |
+" >/home/e-smith/db/mysql/mysql.privileges.dump |
+" >/home/e-smith/db/mysql/mysql.privileges.dump |
49 |
+mysql $@ -sNe " \ |
+mysql -sNe " \ |
50 |
+ SELECT \ |
+ SELECT \ |
51 |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
52 |
+ WHERE \ |
+ WHERE \ |
54 |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
55 |
+" | sort | while read u ; |
+" | sort | while read u ; |
56 |
+ do echo "-- $u">> /home/e-smith/db/mysql/mysql.privileges.dump |
+ do echo "-- $u">> /home/e-smith/db/mysql/mysql.privileges.dump |
57 |
+ mysql $@ -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mysql/mysql.privileges.dump |
+ mysql -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mysql/mysql.privileges.dump |
58 |
done |
done |
59 |
+echo >> /home/e-smith/db/mysql/mysql.privileges.dump |
+echo >> /home/e-smith/db/mysql/mysql.privileges.dump |
60 |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mysql/mysql.privileges.dump |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mysql/mysql.privileges.dump |
66 |
fi |
fi |
67 |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
68 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
69 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
70 |
if [ "$fixtables" = "enabled" ]; then |
if [ "$fixtables" = "enabled" ]; then |
71 |
repair="failure" |
repair="failure" |
72 |
message="$message \nTrying to auto-repair the db and do a backup after..." |
message="$message \nTrying to auto-repair the db and do a backup after..." |
73 |
/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqlcheck --socket=!!!SOCKET!!! -s --auto-repair -c "$db" && \ |
/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqlcheck --socket=!!!SOCKET!!! -s --auto-repair -c "$db" && \ |
74 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
75 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
76 |
message="$message \n => $repair" |
message="$message \n => $repair" |
77 |
fi |
fi |
78 |
echo $message |
echo $message |
90 |
for db in $(/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql --socket=!!!SOCKET!!! -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
for db in $(/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql --socket=!!!SOCKET!!! -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
91 |
do |
do |
92 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
93 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.user --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
94 |
+done |
+done |
95 |
+ |
+ |
96 |
+# Backup the users and privileges |
+# Backup the users and privileges |
98 |
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
99 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
100 |
+# inspired by https://stackoverflow.com/a/56588240 |
+# inspired by https://stackoverflow.com/a/56588240 |
101 |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql -sNe " \ |
102 |
+ SELECT \ |
+ SELECT \ |
103 |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', authentication_string, '\'\;' ) AS User \ |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', authentication_string, '\'\;' ) AS User \ |
104 |
+ FROM mysql.user \ |
+ FROM mysql.user \ |
105 |
+ WHERE \ |
+ WHERE \ |
106 |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
107 |
+" >/home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
+" >/home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
108 |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql -sNe " \ |
109 |
+ SELECT \ |
+ SELECT \ |
110 |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
111 |
+ WHERE \ |
+ WHERE \ |
113 |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
114 |
+" | sort | while read u ; |
+" | sort | while read u ; |
115 |
+ do echo "-- $u">> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
+ do echo "-- $u">> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
116 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
117 |
done |
done |
118 |
+echo >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
+echo >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
119 |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |