Bug #57824 | On windows, mysqlbackup fails when path to my.cnf contains spaces | ||
---|---|---|---|
Submitted: | 28 Oct 2010 21:34 | Modified: | 11 Aug 2011 20:46 |
Reporter: | Lee Stigile | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Enterprise Backup | Severity: | S2 (Serious) |
Version: | 3.5.2 | OS: | Any |
Assigned to: | Satya B | CPU Architecture: | Any |
[28 Oct 2010 21:34]
Lee Stigile
[3 Nov 2010 7:58]
Satya B
On a successful execution of ibbackup process (by mysqlbackup) will create ibbackup_export_variables.txt. In other words, failed backup operations due to ibbackup execution failures will not create ibbackup_export_variables.txt file. DOCS: Plz note. Regarding the backup operation failure, I think ibbackup doesn't recognize "." and a full path is necessary. (Have to test and confirmed)
[3 Nov 2010 9:33]
Satya B
ibbackup.exe --suspend-at-end my.ini .\2010-10-28_15-24-20\backup-my.cnf mysqlbackup: Error: The system cannot find the file specified. : 2 ibbackup is not able to find the backup-my.cnf.
[8 Nov 2010 11:27]
Satya B
Unable to reproduce this bug. ***UPDATE:**** the current directory "." is recognized even in WINDOWS @Lee Stigile If you are able to reprodcue this bug, plz report the necessary steps to reproduce.
[8 Nov 2010 11:29]
Satya B
On my windows box: ================== C:\WORK\meb-3.5.next\meb-innobackup-c>%INNOBACKUP% --user=root --port=13000 my. ini . mysqlbackup: Starting mysqlbackup with following arguments: C:\WORK\meb-3.5.next\meb-innobackup-c\Debug\innobackup.exe --user=root --port=13 000 my.ini . mysqlbackup: The unique backup id generated for the current backup operation is 12892154316377628 mysqlbackup: IMPORTANT: Please check that backup run completes successfully. At the end of a successful 'backup' run mysqlbackup prints "mysqlbackup completed OK!". mysqlbackup: Created backup directory '.\2010-11-08_16-53-51' mysqlbackup: Using ibbackup version 3.5.2 MySQL Enterprise Backup version 3.5.2 mysqlbackup: Using MySQL client version: 5.1.53 mysqlbackup: Using MySQL server version: 5.1.53-debug-log 101108 16:53:51 mysqlbackup: Starting ibbackup binary with args: ibbackup.exe --suspend-at-end my.ini .\2010-11-08_16-53-51\backup-my.cnf mysqlbackup: Waiting for ibbackup process to suspend mysqlbackup: Suspend file '.\2010-11-08_16-53-51\ibbackup_suspended' ibbackup version 3.5.2 MySQL Enterprise Backup version 3.5.2 Copyright (c) 2002, 2010, Oracle and/or its affiliates. Run 'ibbackup --help' for help and 'ibbackup --version' for version info. Contents of my.ini: innodb_data_home_dir got value C:/WORK/mysql-5.1-meb-win/mysql-test/var/mysqld.1 /data innodb_data_file_path got value ibdata1:10M;ibdata2:10M:autoextend datadir got value C:/WORK/mysql-5.1-meb-win/mysql-test/var/mysqld.1/data innodb_log_group_home_dir got value C:/WORK/mysql-5.1-meb-win/mysql-test/var/mys qld.1/data innodb_log_files_in_group got value 3 innodb_log_file_size got value 5242880 Contents of .\2010-11-08_16-53-51\backup-my.cnf: innodb_data_home_dir got value .\2010-11-08_16-53-51 innodb_data_file_path got value ibdata1:10M;ibdata2:10M:autoextend datadir got value .\2010-11-08_16-53-51 innodb_log_group_home_dir got value .\2010-11-08_16-53-51 innodb_log_files_in_group got value 3 innodb_log_file_size got value 5242880 ibbackup: System tablespace file format is Antelope. ibbackup: Found checkpoint at lsn 51417. ibbackup: Starting log scan from lsn 51200. 101108 16:53:51 ibbackup: Copying log... 101108 16:53:51 ibbackup: Log copied, lsn 51417. ibbackup: We wait 1 second before starting copying the data files... 101108 16:53:52 ibbackup: Copying C:\WORK\mysql-5.1-meb-win\mysql-test\var\mysq ld.1\data\ibdata1 (Antelope file format). 101108 16:53:53 ibbackup: Copying C:\WORK\mysql-5.1-meb-win\mysql-test\var\mysq ld.1\data\ibdata2 (Antelope file format). ibbackup: You specified the option --suspend-at-end. 101108 16:53:54 ibbackup: Suspending the backup procedure to wait ibbackup: until you delete the marker file .\2010-11-08_16-53-51\ibbackup_suspen ded. 101108 16:53:54 mysqlbackup: Continuing after ibbackup has suspended 101108 16:53:54 mysqlbackup: Starting to lock all the tables.... 101108 16:53:54 mysqlbackup: All tables are locked and flushed to disk mysqlbackup: Opening backup source directory 'C:\WORK\mysql-5.1-meb-win\mysql-te st\var\mysqld.1\data' 101108 16:53:54 mysqlbackup: Starting to backup all files in subdirectories of ' C:\WORK\mysql-5.1-meb-win\mysql-test\var\mysqld.1\data' mysqlbackup: Backing up the database directory 'mtr' mysqlbackup: Backing up the database directory 'mysql' mysqlbackup: Backing up the database directory 'test' mysqlbackup: Resuming ibbackup 101108 16:53:55 ibbackup: Suspension ends. Continuing the backup procedure. 101108 16:53:55 ibbackup: Copying of the last data file is close to ending... ibbackup: We still once copy the latest flushed log to ibbackup_logfile. ibbackup: A copied database page was modified at 51417. ibbackup: Scanned log up to lsn 53076. ibbackup: Was able to parse the log up to lsn 53076. ibbackup: Maximum page number for a log record 51 101108 16:53:55 ibbackup: Full backup completed! 101108 16:53:55 mysqlbackup: All tables unlocked mysqlbackup: All MySQL tables were locked for 1.114 seconds mysqlbackup: start_lsn: 51200 mysqlbackup: incremental_base_lsn: 51417 mysqlbackup: end_lsn: 53076 101108 16:53:55 mysqlbackup: mysqlbackup completed OK!
[9 Nov 2010 22:11]
Lee Stigile
Hello, I believe that I've identified the problem. When running mysqlbackup.exe, if I pass a path to the my.ini file which contains a space such as c:\program files\mysql\mysql server 5.5\my.ini the backup fails. It fails, even if the path is surrounded by double quotes. In the output of my unsuccessful backup, there was a message that an invalid parameter was passed to ibbackup "server". I deteremined that server was from the invalid parsing of the path. For instance: the following fails: C:\Program Files\MySQL\MySQL Enterprise Backup 3.5.next>mysqlbackup "C:\program files\mysql\MySQL Server 5.5\my.ini" c:\backup --user=root But, the following succeeds: C:\Program Files\MySQL\MySQL Enterprise Backup 3.5.next>mysqlbackup "C:\backup\my.ini" c:\backup --user=root
[10 Nov 2010 11:02]
Satya B
TEST 1: No quotes used at all ============================== C:\WORK\mysql-5.1-meb-win\mysql-test>%INNOBACKUP% --ibbackup=%IBBACKUP% --user=r oot --port=13000 C:\work\test with space\my.cnf . mysqlbackup: Error: incorrect number of command line arguments, use --help for usage TEST 2: quotes around the directory which has spaces ======================================================== C:\WORK\mysql-5.1-meb-win\mysql-test>%INNOBACKUP% --ibbackup=%IBBACKUP% --user=r oot --port=13000 C:\work\"test with space"\my.cnf . mysqlbackup: Error: incorrect number of command line arguments, use --help for usage TEST 3: quotes used around the entire path to my.cnf ====================================================== C:\WORK\mysql-5.1-meb-win\mysql-test>%INNOBACKUP% --ibbackup=%IBBACKUP% --user=r oot --port=13000 "C:\work\test with space\my.cnf" . mysqlbackup: Starting mysqlbackup with following arguments: C:\WORK\meb-3.5.next\meb-innobackup-c\Debug\innobackup.exe --ibbackup=C:\WORK\me b-3.5.next\meb-ibbackup\bin\Debug\ibbackup.exe --user=root --port=13000 C:\work\ test with space\my.cnf . mysqlbackup: The unique backup id generated for the current backup operation is 12893866176562516 mysqlbackup: IMPORTANT: Please check that backup run completes successfully. At the end of a successful 'backup' run mysqlbackup prints "mysqlbackup completed OK!". mysqlbackup: Created backup directory '.\2010-11-10_16-26-57' mysqlbackup: Using ibbackup version 3.5.2 MySQL Enterprise Backup version 3.5.2 mysqlbackup: Using MySQL client version: 5.1.53 mysqlbackup: Using MySQL server version: 5.1.53-debug-log 101110 16:26:58 mysqlbackup: Starting ibbackup binary with args: C:\WORK\meb-3.5.next\meb-ibbackup\bin\Debug\ibbackup.exe --suspend-at-end C:\wor k\test with space\my.cnf .\2010-11-10_16-26-57\backup-my.cnf mysqlbackup: Waiting for ibbackup process to suspend mysqlbackup: Suspend file '.\2010-11-10_16-26-57\ibbackup_suspended' ibbackup version 3.5.2 MySQL Enterprise Backup version 3.5.2 Copyright (c) 2002, 2010, Oracle and/or its affiliates. Run 'ibbackup --help' for help and 'ibbackup --version' for version info. ibbackup: Error: extraneous argument space\my.cnf. ibbackup: Run 'ibbackup --help' for help. mysqlbackup: Error: ibbackup process has died mysqlbackup: Error: mysqlbackup "backup" failed mysqlbackup: Warning: Backup Logging: The LSN fields from ibbackup cannot be log ged. Cannot open ibbackup_export_variables.txt file to read No such file or dir ectory: (Errcode: 2) mysqlbackup: Warning: Backup Logging: The fields start_lsn, incremental_base_lsn , end_lsn will be zeros. This is indeed a bug.
[10 Nov 2010 11:07]
Satya B
@Lee Stigile Thanks for the reporting and analyzing the bug!
[18 Nov 2010 12:33]
Satya B
can be solved by using the windows api GetShortPathName(). See http://msdn.microsoft.com/en-us/library/Aa364989
[22 Mar 2011 22:02]
Hema Sridharan
Hi, Yes, this test is reproducible in MEB 3.5.2 as well as in MEB 3.6 versions. I also noticed that when backup dir path name contains space, mysqlbackup fails with error "Error: Found extraneous commands at the end." hema@HEMA_SRIDHARAN /cygdrive/c/mysql-server/MEB/meb-36-windows/src/build/Debug $ ./mysqlbackup.exe --datadir=C:\\mysql-server\\meb-server-tree\\mysql-5.1-meb -new\\mysql-test\\var\\mysqld.1\\data\\ --innodb_log_file_size=5M --innodb_log_ files_in_group=4 --backup_innodb_log_files_in_group=4 --backup_innodb_log_file_ size=5M --innodb_data_home_dir=C:\\mysql-server\\meb-server-tree\\mysql-5.1-meb \\mysql-test\\var\\mysqld.1\\data\\ --backup-dir=C:\\mysql-server\\meb-server-t ree\\Dir with space\\backuptest\\ --socket=C:\\mysql-server\\meb-server-tree\\m ysql-test\\var\\tmp\\mysqld.1.sock --user=root --port=13000 --protocol=tcp back up InnoDB Backup Utility v3.6.0 [Tue 03/22/2011 ] Copyright (c) 2003, 2011, Oracle and/or its affiliates. All Rights Reserved. INFO: Starting with following command line ... C:\mysql-server\MEB\meb-36-windows\src\build\Debug\mysqlbackup.exe --datadir=C:\mysql-server\meb-server-tree\mysql-5.1-meb-new\mysql-test\v ar\mysqld.1\data\ --innodb_log_file_size=5M --innodb_log_files_in_group=4 --backup_innodb_log_files_in_group=4 --backup_innodb_log_file_size=5M --innodb_data_home_dir=C:\mysql-server\meb-server-tree\mysql-5.1-meb\mys ql-test\var\mysqld.1\data\ --backup-dir=C:\mysql-server\meb-server-tree\Dir with space\backuptest\ --socket=C:\mysql-server\meb-server-tree\mysql-test\var\tmp\mysqld.1.soc k --user=root --port=13000 --protocol=tcp backup Error: Found extraneous commands at the end. Use --help option for usage description.
[17 Apr 2011 10:52]
Valeriy Kravchuk
Bug #60898 was marked as a duplicate of this one.
[11 Aug 2011 18:50]
Sveta Smirnova
Bug is fixed in version 3.6 Please upgrade.
[11 Aug 2011 20:46]
John Russell
Added to 3.6 changelog: The mysqlbackup command could fail on Windows systems if the path to the MySQL configuration file contained spaces.