Contents
Migrate to new environment with another database
Notice: The functionality provided by this plugin has been added to the Trac core in milestone:1.3.2 (#12299). Trac 1.3.2+ provides the TracAdmin convert_db
command. You should uninstall the plugin when upgrading to Trac 1.3.2 or later.
Description
The plugin allows you to migrate to a new Trac environment with another database. A common usage scenario is to convert a Trac environment based on SQLite to MySQL to accommodate performance requirements and concurrency requirements better.
This plugin provides a trac-migrate.py
script and the migrate
command of trac-admin
.
See also: MsSqlBackendPlugin: a plugin to connect (not migrate) to a MS-SQL database server.
Bugs/Feature Requests
Existing bugs and feature requests for TracMigratePlugin are here.
If you have any issues, create a new ticket.
defect |
11 / 11 |
|
---|---|---|
enhancement |
4 / 4 |
|
task |
1 / 1 |
Download
Download the zipped source from here.
Source
You can check out TracMigratePlugin from here using Subversion, or browse the source with Trac.
Usage without installation
- Checkout or export latest source:
svn co https://trac-hacks.org/svn/tracmigrateplugin/0.12 /path/to/tracmigrateplugin
- If the new environment uses PostgreSQL or MySQL, create a database for this new environment. See DatabaseBackend#BackendSpecificInstallationInstructions (no running trac-admin is required).
- Run
trac-migrate.py
:This would result in:cd /path/to/tracmigrateplugin ./trac-migrate.py /path/to/source /path/to/destination mysql://tracuser:password@localhost/trac
Copying tables: attachment table... 10 records. auth_cookie table... 9 records. cache table... 11 records. ....
Installation
This plugin is not needed to install as a Python library. See usage without installation. However, it is able to install as a Python library if you want to always be able to use migrate
command.
- Install the plugin for Trac 0.12 or later:
easy_install https://trac-hacks.org/svn/tracmigrateplugin/0.12
- Enable the plugin in the
trac.ini
file of your source environment:[components] tracmigrate.* = enabled
Examples
Usage
$ ./trac-migrate.py Usage: trac-migrate.py [OPTIONS] SOURCE-TRACENV [DEST-TRACENV] DBURI Migrate to new environment with another database or another database without creating a new environment. Options: -i, --in-place migrate without creating a new environment Examples: $ trac-migrate.py /path/to/source /path/to/dest sqlite:db/trac.db $ trac-migrate.py /path/to/source /path/to/dest postgres://tracuser:password@localhost/trac?schema=destination $ trac-migrate.py /path/to/source /path/to/dest mysql://tracuser:password@localhost/trac $ trac-migrate.py --in-place /path/to/source sqlite:db/trac.db $ trac-migrate.py --in-place /path/to/source postgres://tracuser:password@localhost/trac?schema=destination $ trac-migrate.py --in-place /path/to/source mysql://tracuser:password@localhost/trac
Migration to a new environment
The syntax for migrating to a new environment is as follows:
$ ./trac-migrate.py /path/to/source-tracenv /path/to/destination-tracenv postgres://tracuser:password@localhost/trac?schema=destination Copying tables: attachment table... 10 records. auth_cookie table... 9 records. cache table... 11 records. component table... 5 records. enum table... 13 records. milestone table... 7 records. node_change table... 37 records. permission table... 17 records. report table... 11 records. repository table... 5 records. revision table... 35 records. session table... 2 records. session_attribute table... 19 records. ticket table... 35 records. ticket_change table... 110 records. ticket_custom table... 375 records. version table... 2 records. wiki table... 93 records. Copying directories: attachments directory... done. htdocs directory... done. templates directory... done. plugins directory... done.
Migration to a new database without creating a new environment
The syntax for migrating to a new database without creating a new environment is as follows:
$ ./trac-migrate.py --in-place /path/to/tracenv postgres://trac:password@localhost/trac?schema=new_schema Copying tables: attachment table... 31 records. auth_cookie table... 5 records. cache table... 17 records. component table... 6 records. enum table... 13 records. milestone table... 8 records. node_change table... 133876 records. permission table... 18 records. report table... 11 records. repository table... 80 records. revision table... 30076 records. session table... 5 records. session_attribute table... 15 records. system table... 3 records. tags table... 89797 records. tags_change table... 0 records. ticket table... 30009 records. ticket_change table... 353 records. ticket_custom table... 923 records. version table... 2 records. wiki table... 167 records. Back up conf/trac.ini to conf/trac.ini.migrate-1392451681 in /path/to/tracenv.
Recent Changes
- 18447 by jun66j5 on 2021-09-30 23:43:37
-
TracMigratePlugin: fix
ImportError
with Trac 1.4.x (closes #14054)
- 17334 by jun66j5 on 2019-02-06 03:16:18
-
TracMigratePlugin: fix compatibility of unit tests with MySQL 8.0
- 15444 by jun66j5 on 2016-03-21 16:26:26
-
TracMigratePlugin: bump up the version and call
setuptools.setup()
only if runsetup.py
as a script
(more)