Opened 16 years ago
Closed 15 years ago
#8954 closed enhancement (fixed)
[PATCH] trac-admin hotcopy should export database dump for non-sqlite projects
| Reported by: | Thijs Triemstra | Owned by: | Thijs Triemstra | 
|---|---|---|---|
| Priority: | high | Milestone: | 1.0 | 
| Component: | admin/console | Version: | 0.11-stable | 
| Severity: | normal | Keywords: | bitesized, patch, mysql, postgresql | 
| Cc: | Branch: | ||
| Release Notes: | 
           
Back up the database during a   | 
      ||
| API Changes: | |||
| Internal Changes: | |||
Description
Would be nice to have a mysql/postgress db dump when using trac-admin ENV hotcopy DEST. We already have all the necessary functionality, as we do a backup during upgrades. We could store the dump in the ENV/db directory before the copy operation.
From #8952
Attachments (3)
Change History (17)
comment:1 by , 16 years ago
| Milestone: | → next-minor-0.12.x | 
|---|
comment:2 by , 16 years ago
| Keywords: | bitesized added | 
|---|
comment:3 by , 16 years ago
| Priority: | normal → high | 
|---|
comment:4 by , 15 years ago
| Milestone: | next-minor-0.12.x → unscheduled | 
|---|
comment:6 by , 15 years ago
| Reporter: | changed from to | 
|---|
comment:7 by , 15 years ago
| Keywords: | patch added | 
|---|---|
| Owner: | set to | 
| Status: | new → assigned | 
| Summary: | trac-admin hotcopy should export database dump for non-sqlite projects → [PATCH] trac-admin hotcopy should export database dump for non-sqlite projects | 
The attached patch creates a 'db-backup.sql' in the environment folder which get copied in the hotcopy destination folder. MySQL trac installations don't have a db folder so I copied it to the root of the environment. Maybe a db folder for non-sqlite backups should be made when using hotcopy that can hold the .sql file?
follow-up: 9 comment:8 by , 15 years ago
| Milestone: | unscheduled → 0.13 | 
|---|
A db folder even for non-SQLite backends would make sense, yes. However, shouldn't the dump rather be placed into a db folder of the destination instead of the source, probably after the copytree() call? That would avoid having a possibly large file (the dump of t.e.o is over 2 GB) placed twice in the filesystem.
by , 15 years ago
| Attachment: | sql-hotcopy-8954-2.patch added | 
|---|
follow-up: 10 comment:9 by , 15 years ago
Replying to rblank:
A
dbfolder even for non-SQLite backends would make sense, yes. However, shouldn't the dump rather be placed into adbfolder of the destination instead of the source, probably after thecopytree()call? That would avoid having a possibly large file (the dump of t.e.o is over 2 GB) placed twice in the filesystem.
The attached patch creates a db folder where the sql dump is created. I was wondering if a cmdline option like --no-database (to exclude the db export for hotcopy) or --database (to include the db export for hotcopy)? With 2GB databases the user might want to skip the export db option? 
follow-up: 11 comment:10 by , 15 years ago
Replying to thijstriemstra:
I was wondering if a cmdline option like
--no-database(to exclude the db export for hotcopy) or--database(to include the db export for hotcopy)? With 2GB databases the user might want to skip the export db option?
That's a good idea indeed. Probably --no-database, so that it's included by default.
comment:11 by , 15 years ago
Replying to rblank:
That's a good idea indeed. Probably
--no-database, so that it's included by default.
Sounds good. I guess a status message (Exporting database…) might be useful as well, I reckon it takes quite a while to export a 2GB db, and without such a message users might think hotcopy crashed or died.
by , 15 years ago
| Attachment: | sql-hotcopy-8954-3.patch added | 
|---|
comment:12 by , 15 years ago
The attached patch adds the ability to ignore the database export (inc sqlite) using the --no-database or -d flag. For example:
trac-admin ../test2 hotcopy ../testerr/ Hotcopying /Users/thijstriemstra/Sites/projects/opensource/test2 to ../testerr/ ... Exporting database... Hotcopy done.
Without database:
trac-admin ../test2 hotcopy ../testerr/ --no-database Hotcopying /Users/thijstriemstra/Sites/projects/opensource/test2 to ../testerr/ ... Hotcopy done.
comment:13 by , 15 years ago
| Keywords: | mysql postgresql added | 
|---|
comment:14 by , 15 years ago
| Release Notes: | modified (diff) | 
|---|---|
| Resolution: | → fixed | 
| Status: | assigned → closed | 
Patch applied in [10387] with very minor changes:
DatabaseManager.backup()already creates the destination directory if it doesn't exist, so there's no need to do it in_do_hotcopy().- For SQLite, exclude only the database file if 
--no-databaseis specified, not the completedbdirectory, as it could contain other files (e.g. backups from upgrades). - Removed the short form of the 
--no-databaseoption. 
Thanks for your great work!



  
PatchWelcomed.