· 9 years ago · Jun 22, 2017, 08:36 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=backup
9set datestr=_%date:~10,4%-%date:~7,2%-%date:~4,2%_%time:~0,2%-%time:~3,2%
10set exclude=''
11set file=database
12set host="localhost"
13set port=3306
14set compress=yes
15set nodate=no
16
17:initial
18if "%1"=="" goto done
19set aux=%1
20if "%aux:~0,1%"=="-" (
21 set nome=%aux:~1,250%
22) else (
23 set "%nome%=%1"
24 set nome=
25)
26shift
27goto initial
28:done
29
30if "%nodate%"=="yes" set datestr=
31
32set filename=%file%%datestr%.sql
33set filenamezip=%file%%datestr%.zip
34
35set passoption=
36IF %pass% NEQ "" set passoption="--password=%pass%"
37
38REM Generate Dump of VIEWS
39mysql --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
40tail -n +2 dumpviews.sql > dumpviews.sql.tmp && mv dumpviews.sql.tmp dumpviews.sql
41
42REM Generate Creation of VIEWS
43mysql --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
44tail -n +2 createviews.sql > createviews.sql.tmp && mv createviews.sql.tmp createviews.sql
45mysql --default-character-set=utf8 --host=%host% --port=%port% --user=%user% --password=%pass% < createviews.sql > views.sql
46sed -i "/^*/ d" views.sql
47sed -i "s/\(^.*\)\(CREATE.*\)/\2;/g" views.sql
48sed -ni "/CREATE/p" views.sql
49sed -i "s/DEFINER=[^[:space:]]\+ //" views.sql
50sed -i "s/`%database%`.//g" views.sql
51type views.sql >> dumpviews.sql
52mv dumpviews.sql views.sql
53
54REM Generate Creation of TABLES
55mysql --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
56tail -n +2 createdb.bat > createdb.bat.tmp && mv createdb.bat.tmp createdb.bat
57sed -i "s/DUMPCOMMMAND/mysqldump --default-character-set=utf8 --host=%host% --port=%port% --extended-insert=FALSE --hex-blob --user=%user% %passoption% %database%/g" createdb.bat
58call createdb.bat > %filename%
59cat views.sql >> %filename%
60
61if "%compress%"=="yes" (
62zip %filenamezip% %filename% > null
63rm %filename%
64echo %filenamezip%
65) else (
66echo %filename%
67)
68rm createdb.bat
69rm views.sql
70rm createviews.sql