MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
relocate_binlogs.inc
1 # ==== Purpose ====
2 #
3 # Relocates the relay logs and index file from
4 # a directory into another. The logs relocated
5 # are the one listed in the index file.
6 #
7 # ==== Usage ====
8 #
9 # [--let $relocate_disable_query_log= 1]
10 # [--let $rpl_debug= 1]
11 # [--let $relocate_is_windows= 0]
12 # [--let $relocate_recreate_index= 0]
13 # [--let $relocate_fix_relay_log_info= 0]
14 # --let $relocate_from= DIR
15 # --let $relocate_to= DIR
16 # --let $relocate_index_file= FNAME
17 # --source include/relocate_binlogs.inc
18 
19 if ($relocate_disable_query_log)
20 {
21  --disable_query_log
22 }
23 
24 --let $_path_separator=/
25 if ($relocate_is_windows)
26 {
27  --let $_path_separator=\
28 }
29 
30 if ($relocate_index_file)
31 {
32  SET SQL_LOG_BIN=0;
33  CREATE TEMPORARY TABLE tmp(id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(1024));
34 
35  --let $write_var=
36  --let $_index_file= $relocate_index_file
37  --let $_index_file_basename= `SELECT RIGHT(RTRIM("$_index_file"), LOCATE("$_path_separator",REVERSE(RTRIM("$_index_file"))) -1)`
38  --let $_from= $relocate_from
39  --let $_to= $relocate_into
40 
41  # chmod to allow the following LOAD DATA
42  --chmod 0666 $_index_file
43 
44  --eval LOAD DATA INFILE '$_index_file' INTO TABLE tmp (filename)
45  --let $count= `SELECT count(*) FROM tmp`
46 
47  while ($count)
48  {
49  --let $_filename= `select filename from tmp where id=$count`
50 
51  --let $_filename= `SELECT RIGHT(RTRIM("$_filename"), LOCATE("$_path_separator",REVERSE(RTRIM("$_filename"))) -1)`
52  --move_file $_from/$_filename $_to/$_filename
53 
54  if ($relocate_recreate_index)
55  {
56 
57  if ($relocate_is_windows)
58  {
59  --let $_write_var=$_to\$_filename\n
60  }
61  if (!$relocate_is_windows)
62  {
63  --let $_write_var=$_to/$_filename\n
64  }
65  if (!$write_var)
66  {
67  --let $write_var=$_write_var
68  }
69 
70  if (!`SELECT STRCMP('$write_var', '$_write_var') = 0`)
71  {
72  --let $write_var=$_write_var$write_var
73  }
74  }
75 
76  --dec $count
77  }
78 
79  if (!$relocate_recreate_index)
80  {
81  --move_file $_index_file $_to/$_index_file_basename
82  }
83 
84  if ($relocate_recreate_index)
85  {
86  --let $write_to_file= $_to/$_index_file_basename
87  --source include/write_var_to_file.inc
88  --remove_file $_index_file
89  }
90 
91  DROP TEMPORARY TABLE tmp;
92 
93  if ($relocate_fix_relay_log_info)
94  {
95  CREATE TEMPORARY TABLE tmp(id INT AUTO_INCREMENT PRIMARY KEY, entry VARCHAR(1024));
96  --let $write_var=
97 
98  # chmod to allow the following LOAD DATA
99  --chmod 0666 $relocate_fix_relay_log_info
100 
101  --eval LOAD DATA INFILE '$relocate_fix_relay_log_info' INTO TABLE tmp (entry)
102  --let $count= `SELECT count(*) FROM tmp`
103 
104  --let $_curr_entry= `SELECT entry FROM tmp WHERE id=2`
105  --let $_curr_entry_basename= `SELECT RIGHT(RTRIM("$_curr_entry"), LOCATE("$_path_separator",REVERSE(RTRIM("$_curr_entry"))) -1)`
106 
107  if ($relocate_is_windows)
108  {
109  --eval UPDATE tmp SET entry='$_to\$_curr_entry_basename' WHERE id=2
110  }
111  if (!$relocate_is_windows)
112  {
113  --eval UPDATE tmp SET entry='$_to/$_curr_entry_basename' WHERE id=2
114  }
115 
116  --remove_file $relocate_fix_relay_log_info
117 
118  while($count)
119  {
120  --let $_write_var= `SELECT entry FROM tmp WHERE id= $count`
121  --let $write_var=$_write_var\n$write_var
122  --dec $count
123  }
124 
125  --let $write_to_file= $relocate_fix_relay_log_info
126  --source include/write_var_to_file.inc
127 
128  DROP TEMPORARY TABLE tmp;
129  }
130  SET SQL_LOG_BIN=1;
131 }
132 
133 
134 if ($relocate_disable_query_log)
135 {
136  --enable_query_log
137 }