]> arthur.barton.de Git - MkMySqlDump.git/blob - bin/mkmysqlslave
Enable mkmysqlslave to handle data from stdin
[MkMySqlDump.git] / bin / mkmysqlslave
1 #!/bin/sh
2 #
3 # mkmysqlslave -- import MySQL master data and start slave
4 # Copyright (c)2015 Alexander Barton <alex@barton.de>
5 #
6
7 NAME=$(basename "$0")
8
9 # Defaults
10 MYHOST="localhost"
11 MYUSER="root"
12 MYPW=""
13 INFILE=""
14
15 Help() {
16         echo "$NAME [<options> ...] <file>"
17         echo
18         echo "  --host|-h <host>"
19         echo "      MySQL server hostname [\"$MYHOST\"]."
20         echo "  --user|-u <user>"
21         echo "      MySQL server user [\"$MYUSER\"]."
22         echo "  --password|-p <password>"
23         echo "      MySQL server password [\"$MYPW\"]".
24         echo
25         echo "  <file>"
26         echo "      Path and name of SQL dump file."
27         echo
28 }
29
30 Usage() {
31         Help
32         exit 2
33 }
34
35 while [ $# -gt 0 ]; do
36         case "$1" in
37           "--host"|"-h")
38                 [ $# -ge 2 ] || Usage
39                 MYHOST="$2"
40                 shift 2
41                 ;;
42           "--user"|"-u")
43                 [ $# -ge 2 ] || Usage
44                 MYHOST="$2"
45                 shift 2
46                 ;;
47           "--password"|"-p")
48                 [ $# -ge 2 ] || Usage
49                 MYPW="$2"
50                 shift 2
51                 ;;
52           "--help")
53                 Help
54                 exit 0
55                 ;;
56           *)
57                 [ $# -eq 1 ] || Usage
58                 INFILE="$1"
59                 break
60         esac
61 done
62
63 if [ -z "$INFILE" ]; then
64         Usage
65 fi
66 if [ ! -r "$INFILE" -a "$INFILE" != "-" ]; then
67         echo "$NAME: Can't read \"$INFILE\"!"
68         exit 1
69 fi
70
71 echo "Initializing MySQL server on \"$MYHOST\" (user \"$MYUSER\") as replication slave:"
72
73 [ -n "$MYPW" ] && PWSWITCH="--password='$MYPW'" || PWSWITCH=""
74
75 echo "Stopping running slave threads ..."
76 mysql -h "$MYHOST" -u "$MYUSER" $PWSWITCH -e 'stop slave'; r=$?
77 if [ $r -ne 0 ]; then
78         echo "Warning: FAILED to stop MySQL slave threads, code $r!" >&2
79 fi
80
81 echo "Start: $(date)"
82 if [ "$INFILE" != "-" ]; then
83         echo "Importing \"$INFILE\" ..."
84         mysql -h "$MYHOST" -u "$MYUSER" $PWSWITCH <"$INFILE"; r=$?
85 else
86         echo "Importing from standard input ..."
87         mysql -h "$MYHOST" -u "$MYUSER" $PWSWITCH; r=$?
88 fi
89 echo "End: $(date)"
90 if [ $r -ne 0 ]; then
91         echo "MySQL import FAILED, code $r!" >&2
92         exit $r
93 fi
94
95 echo "Starting slave threads ..."
96 mysql -h "$MYHOST" -u "$MYUSER" $PWSWITCH -e 'start slave'; r=$?
97 if [ $r -ne 0 ]; then
98         echo "FAILED to start MySQL slave threads, code $r!" >&2
99         exit $r
100 fi
101
102 echo "MySQL slave initialized."
103 exit 0