1 |
jpp |
1.1 |
diff -Nur --no-dereference smeserver-mysql-2.7.0.old/root/etc/e-smith/events/actions/mysql-dump-tables smeserver-mysql-2.7.0/root/etc/e-smith/events/actions/mysql-dump-tables |
2 |
|
|
--- smeserver-mysql-2.7.0.old/root/etc/e-smith/events/actions/mysql-dump-tables 2022-03-11 10:32:13.000000000 -0500 |
3 |
|
|
+++ smeserver-mysql-2.7.0/root/etc/e-smith/events/actions/mysql-dump-tables 2024-09-01 00:17:19.404000000 -0400 |
4 |
|
|
@@ -18,24 +18,53 @@ |
5 |
|
|
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
6 |
|
|
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." |
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 |
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 |
10 |
|
|
if [ "$fixtables" = "enabled" ]; then |
11 |
|
|
repair="failure" |
12 |
|
|
message="$message \nTrying to auto-repair the db and do a backup after..." |
13 |
|
|
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" |
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" |
16 |
|
|
message="$message \n => $repair" |
17 |
|
|
fi |
18 |
|
|
echo $message |
19 |
|
|
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
20 |
|
|
} |
21 |
|
|
|
22 |
|
|
+# Do nothing if disabled |
23 |
|
|
if [ "$status" = "disabled" ] |
24 |
|
|
then |
25 |
|
|
echo "mysqld is disabled - no tables dumped" >&2 |
26 |
|
|
exit 0 |
27 |
|
|
fi |
28 |
|
|
+ |
29 |
|
|
+# Actual mysql db backup |
30 |
|
|
for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
31 |
|
|
do |
32 |
|
|
- 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 |
34 |
|
|
+done |
35 |
|
|
+ |
36 |
|
|
+# Backup the users and privileges |
37 |
|
|
+# backup of mysql/mariadb users excluding root for later restore. |
38 |
|
|
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
39 |
|
|
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
40 |
|
|
+# inspired by https://stackoverflow.com/a/56588240 |
41 |
|
|
+# for mariadb 5.5 we replace authentication_string with Password |
42 |
|
|
+mysql $@ -sNe " \ |
43 |
|
|
+ SELECT \ |
44 |
|
|
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', Password, '\'\;' ) AS User \ |
45 |
|
|
+ FROM mysql.user \ |
46 |
|
|
+ WHERE \ |
47 |
|
|
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
48 |
|
|
+" >/home/e-smith/db/mysql/mysql.privileges.dump |
49 |
|
|
+mysql $@ -sNe " \ |
50 |
|
|
+ SELECT \ |
51 |
|
|
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
52 |
|
|
+ WHERE \ |
53 |
|
|
+ User NOT LIKE 'mysql.%' \ |
54 |
|
|
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
55 |
|
|
+" | sort | while read u ; |
56 |
|
|
+ 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 |
58 |
|
|
done |
59 |
|
|
+echo >> /home/e-smith/db/mysql/mysql.privileges.dump |
60 |
|
|
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mysql/mysql.privileges.dump |
61 |
|
|
diff -Nur --no-dereference smeserver-mysql-2.7.0.old/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables smeserver-mysql-2.7.0/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables |
62 |
|
|
--- smeserver-mysql-2.7.0.old/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables 2024-08-31 23:52:18.590000000 -0400 |
63 |
|
|
+++ smeserver-mysql-2.7.0/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables 2024-09-01 00:16:51.103000000 -0400 |
64 |
|
|
@@ -35,24 +35,53 @@ |
65 |
|
|
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB !!!VER!!! database" admin |
66 |
|
|
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." |
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 |
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 |
70 |
|
|
if [ "$fixtables" = "enabled" ]; then |
71 |
|
|
repair="failure" |
72 |
|
|
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" && \ |
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" |
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" |
76 |
|
|
message="$message \n => $repair" |
77 |
|
|
fi |
78 |
|
|
echo $message |
79 |
|
|
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
80 |
|
|
} |
81 |
|
|
|
82 |
|
|
+# Do nothing if disabled |
83 |
|
|
if [ "$status" = "disabled" ] |
84 |
|
|
then |
85 |
|
|
echo "mysqld is disabled - no tables dumped" >&2 |
86 |
|
|
exit 0 |
87 |
|
|
fi |
88 |
|
|
+ |
89 |
|
|
+# Actual mysql db backup |
90 |
|
|
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 |
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 |
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 |
94 |
|
|
+done |
95 |
|
|
+ |
96 |
|
|
+# Backup the users and privileges |
97 |
|
|
+# backup of mysql/mariadb users excluding root for later restore. |
98 |
|
|
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
99 |
|
|
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
100 |
|
|
+# inspired by https://stackoverflow.com/a/56588240 |
101 |
|
|
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
102 |
|
|
+ SELECT \ |
103 |
|
|
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', authentication_string, '\'\;' ) AS User \ |
104 |
|
|
+ FROM mysql.user \ |
105 |
|
|
+ WHERE \ |
106 |
|
|
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
107 |
|
|
+" >/home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
108 |
|
|
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
109 |
|
|
+ SELECT \ |
110 |
|
|
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
111 |
|
|
+ WHERE \ |
112 |
|
|
+ User NOT LIKE 'mysql.%' \ |
113 |
|
|
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
114 |
|
|
+" | sort | while read u ; |
115 |
|
|
+ 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 |
117 |
|
|
done |
118 |
|
|
+echo >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
119 |
|
|
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
120 |
|
|
+ |