· 9 years ago · Jun 22, 2017, 08:24 PM
1@echo off
2REM MySQL Super Backup Script v1.0 - Created by @gkaratsiolis (kudoz @eziogas)
3REM fast & accurate MySQL backup script for tables and views. Supports compression out of the box.
4REM requires GOW - https://github.com/bmatzelle/gow/releases
5
6set user=root
7set pass=""
8set database=cafepro
9set datestr=%date:~10,4%-%date:~7,2%-%date:~4,2%_%time:~0,2%-%time:~3,2%
10set exclude=''
11set file=cafepro
12set host="localhost"
13set port=3306
14set compress=yes
15
16:initial
17if "%1"=="" goto done
18set aux=%1
19if "%aux:~0,1%"=="-" (
20 set nome=%aux:~1,250%
21) else (
22 set "%nome%=%1"
23 set nome=
24)
25shift
26goto initial
27:done
28
29set filename=%file%_%datestr%.sql
30set filenamezip=%file%_%datestr%.zip
31
32set passoption=
33IF %pass% NEQ "" set passoption="--password=%pass%"
34
35echo Dumping database...
36
37REM Generate Dump of VIEWS
38mysql --default-character-set=utf8 --host=%host% --port=%port% --user=%user% --password=%pass% -e"select concat('DROP VIEW IF EXISTS ',table_name,';') from information_schema.views WHERE TABLE_SCHEMA = '%database%'" > dumpviews.sql
39tail -n +2 dumpviews.sql > dumpviews.sql.tmp && mv dumpviews.sql.tmp dumpviews.sql
40
41REM Generate Creation of VIEWS
42mysql --default-character-set=utf8 --host=%host% --port=%port% --user=%user% --password=%pass% -e"select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views WHERE TABLE_SCHEMA = '%database%'" | sed -e "s/\;/\\G/g" > createviews.sql
43tail -n +2 createviews.sql > createviews.sql.tmp && mv createviews.sql.tmp createviews.sql
44mysql --default-character-set=utf8 --host=%host% --port=%port% --user=%user% --password=%pass% < createviews.sql > views.sql
45sed -i "/^*/ d" views.sql
46sed -i "s/\(^.*\)\(CREATE.*\)/\2;/g" views.sql
47sed -ni "/CREATE/p" views.sql
48sed -i "s/DEFINER=[^[:space:]]\+ //" views.sql
49sed -i "s/`%database%`.//g" views.sql
50type views.sql >> dumpviews.sql
51mv dumpviews.sql views.sql
52
53REM Generate Creation of TABLES
54mysql --default-character-set=utf8 --host=%host% --port=%port% --user=%user% --password=%pass% -e"SET group_concat_max_len = 10240; SELECT CONCAT('DUMPCOMMMAND ', GROUP_CONCAT(table_name separator ' ')) FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema='%database%' AND table_name NOT IN (%exclude%)" | sed -e "s/\;/\\G/g" > createdb.bat
55tail -n +2 createdb.bat > createdb.bat.tmp && mv createdb.bat.tmp createdb.bat
56sed -i "s/DUMPCOMMMAND/mysqldump --default-character-set=utf8 --host=%host% --port=%port% --extended-insert=FALSE --hex-blob --user=%user% %passoption% %database%/g" createdb.bat
57call createdb.bat > %filename%
58cat views.sql >> %filename%
59
60if "%compress%"=="yes" (
61zip %filenamezip% %filename% > null
62rm %filename%
63)
64
65rm createdb.bat
66rm views.sql
67rm createviews.sql
68
69echo DONE