{"id":349414,"date":"2026-08-22T12:51:48","date_gmt":"2026-08-22T12:51:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dragon-migrate\/"},"modified":"2026-08-24T14:31:41","modified_gmt":"2026-08-24T14:31:41","slug":"dragon-migrate","status":"publish","type":"plugin","link":"https:\/\/sk.wordpress.org\/plugins\/dragon-migrate\/","author":23543042,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.8","stable_tag":"1.0.8","tested":"7.1","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Dragon Migrate","header_author":"Dragon Core","header_description":"Repeatable WordPress database migrations. Export, import, back up and search-replace with serialization-safe accuracy, resumable on any host.","assets_banners_color":"211a1c","last_updated":"2026-08-24 14:31:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/dragoncore.ltd\/plugins\/dragon-migrate","header_author_uri":"https:\/\/dragoncore.ltd","rating":0,"author_block_rating":0,"active_installs":0,"downloads":81,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"dragoncoreltd","date":"2026-08-22 12:51:25"},"1.0.6":{"tag":"1.0.6","author":"dragoncoreltd","date":"2026-08-22 14:54:40"},"1.0.7":{"tag":"1.0.7","author":"dragoncoreltd","date":"2026-08-23 12:52:06"},"1.0.8":{"tag":"1.0.8","author":"dragoncoreltd","date":"2026-08-24 14:31:41"}},"upgrade_notice":{"1.0.6":"<p>Maintenance release: visual polish only. Safe to update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3660563,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3660563,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3660722,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3660722,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3663656,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/tools.php?page=dragon-migrate\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"dragon-migrate\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6","1.0.7","1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3660749,"resolution":"1","location":"assets","locale":"","width":1568,"height":781},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3660749,"resolution":"2","location":"assets","locale":"","width":1568,"height":781},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3660749,"resolution":"3","location":"assets","locale":"","width":1568,"height":781},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3660749,"resolution":"4","location":"assets","locale":"","width":1568,"height":781},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3660749,"resolution":"5","location":"assets","locale":"","width":1568,"height":781}},"screenshots":{"1":"Export \u2014 pick a saved profile, set find and replace, choose tables and start.","2":"A finished export with its progress log and the downloadable file.","3":"Import \u2014 a backup is taken automatically first, with optional find and replace applied after the import.","4":"Backups \u2014 one-click snapshots, with typed confirmation before a restore.","5":"Migration profiles \u2014 save a configuration once and re-run it any time."}},"plugin_section":[],"plugin_tags":[151,153,1859,4155,12126],"plugin_category":[59],"plugin_contributors":[276960],"plugin_business_model":[],"class_list":["post-349414","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-database","plugin_tags-export","plugin_tags-migration","plugin_tags-search-replace","plugin_category-utilities-and-tools","plugin_contributors-dragoncoreltd","plugin_committers-dragoncoreltd"],"banners":{"banner":"https:\/\/ps.w.org\/dragon-migrate\/assets\/banner-772x250.png?rev=3660722","banner_2x":"https:\/\/ps.w.org\/dragon-migrate\/assets\/banner-1544x500.png?rev=3660722","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dragon-migrate\/assets\/icon-128x128.png?rev=3660563","icon_2x":"https:\/\/ps.w.org\/dragon-migrate\/assets\/icon-256x256.png?rev=3660563","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dragon-migrate\/assets\/screenshot-1.jpg?rev=3660749","caption":"Export \u2014 pick a saved profile, set find and replace, choose tables and start."},{"src":"https:\/\/ps.w.org\/dragon-migrate\/assets\/screenshot-2.jpg?rev=3660749","caption":"A finished export with its progress log and the downloadable file."},{"src":"https:\/\/ps.w.org\/dragon-migrate\/assets\/screenshot-3.jpg?rev=3660749","caption":"Import \u2014 a backup is taken automatically first, with optional find and replace applied after the import."},{"src":"https:\/\/ps.w.org\/dragon-migrate\/assets\/screenshot-4.jpg?rev=3660749","caption":"Backups \u2014 one-click snapshots, with typed confirmation before a restore."},{"src":"https:\/\/ps.w.org\/dragon-migrate\/assets\/screenshot-5.jpg?rev=3660749","caption":"Migration profiles \u2014 save a configuration once and re-run it any time."}],"raw_content":"<!--section=description-->\n<p>Dragon Migrate moves WordPress databases without breaking them. Every migration runs through a resumable job engine that adapts to your server's time and memory limits, so it finishes on cheap shared hosting instead of timing out halfway through.<\/p>\n\n<p>The search and replace is serialization-safe: it unserializes values, replaces inside them, and reserializes, so page builder data and plugin settings survive a domain change intact.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Database Export<\/strong> - Streamed, gzipped SQL exports with table selection<\/li>\n<li><strong>Database Import<\/strong> - Resumable imports that pick up where they left off<\/li>\n<li><strong>Serialization-Safe Search &amp; Replace<\/strong> - Handles nested serialization, Gutenberg block attributes and Elementor data correctly<\/li>\n<li><strong>Full-Site Archive<\/strong> - Database plus uploads, themes and plugins in a single zip<\/li>\n<li><strong>Backup &amp; Restore<\/strong> - One-click snapshot before a risky change, and a way back<\/li>\n<li><strong>Dry Run<\/strong> - See exactly what will be replaced before anything is written<\/li>\n<li><strong>Migration Profiles<\/strong> - Save a configuration and re-run it as often as you need<\/li>\n<li><strong>WP-CLI<\/strong> - <code>wp dragon-migrate export<\/code> and <code>wp dragon-migrate find-replace<\/code><\/li>\n<li><strong>Resumable Everything<\/strong> - Row-offset cursors resume mid-table, even on a two-million-row table<\/li>\n<\/ul>\n\n<h4>Multisite<\/h4>\n\n<p>Multisite is not supported. The plugin detects a multisite installation and disables itself rather than partially working.<\/p>\n\n<h4>What the free version includes<\/h4>\n\n<p>Everything local, with no limits: streamed exports, resumable imports, serialization-safe search-replace, dry runs, full-site archives, backups with one-click restore, migration profiles and WP-CLI commands.<\/p>\n\n<h4>Dragon Migrate Pro<\/h4>\n\n<p>Built for agencies that move sites between environments all day:<\/p>\n\n<ul>\n<li>Push or pull a database directly between two connected sites<\/li>\n<li>Sync media, themes and plugins over the same secure pairing<\/li>\n<li>Preflight checks before anything runs, and an automatic rollback point<\/li>\n<li>Scheduled pull syncs to keep staging fresh (pushes are always manual, by design)<\/li>\n<li>Remote WP-CLI and a full audit trail with CSV export<\/li>\n<\/ul>\n\n<p>See <a href=\"https:\/\/dragoncore.ltd\/plugins\/dragon-migrate-pro\">Dragon Migrate Pro<\/a> for details.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>dragon-migrate<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu in WordPress<\/li>\n<li>Go to Tools &gt; Migrate<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20break%20my%20page%20builder%20content%3F\"><h3>Will this break my page builder content?<\/h3><\/dt>\n<dd><p>No. Search and replace unserializes data before replacing, then reserializes it. Elementor data, which stores JSON with escaped slashes, is handled specifically.<\/p><\/dd>\n<dt id=\"my%20host%20has%20a%2030-second%20timeout.%20will%20migrations%20finish%3F\"><h3>My host has a 30-second timeout. Will migrations finish?<\/h3><\/dt>\n<dd><p>Yes. Jobs run in small batches that are sized dynamically from how long the previous batch took and how much memory it used. A job resumes from its exact cursor position on the next tick.<\/p><\/dd>\n<dt id=\"where%20are%20export%20files%20stored%3F\"><h3>Where are export files stored?<\/h3><\/dt>\n<dd><p>In a randomly named directory inside your uploads folder, protected from direct access. Downloads are served through an authenticated endpoint, so the raw file path is never exposed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20move%20wordpress%20to%20a%20new%20domain%3F\"><h3>How do I move WordPress to a new domain?<\/h3><\/dt>\n<dd><p>Export with Find set to your old URL and Replace set to the new one, then import the file on the new site \u2014 or use a full-site archive to carry your files too. The search-replace is serialization-safe, so widgets, theme settings and page builder layouts survive the move.<\/p><\/dd>\n<dt id=\"why%20did%20a%20plain%20sql%20search%20and%20replace%20break%20my%20site%3F\"><h3>Why did a plain SQL search and replace break my site?<\/h3><\/dt>\n<dd><p>WordPress stores many settings as serialized PHP strings that record each value's exact length. Editing them with a raw text replace corrupts those lengths, and WordPress silently discards the data. Dragon Migrate decodes values first, replaces inside them, and re-encodes them correctly.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20a%20migration%3F\"><h3>Can I undo a migration?<\/h3><\/dt>\n<dd><p>Yes. A backup is taken automatically before every import and restore, and you can take one manually before any risky change. Restoring can itself be undone, because the current state is backed up first.<\/p><\/dd>\n<dt id=\"is%20there%20a%20file%20size%20limit%3F\"><h3>Is there a file size limit?<\/h3><\/dt>\n<dd><p>The plugin imposes no limit. Exports stream to disk in batches and imports resume from their exact position, so large databases finish on ordinary shared hosting. Big files can be placed in the migration directory over SFTP instead of uploading through the browser.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Not in this version.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed: large imports now finish even when the imported database replaces your login session mid-import \u2014 each migration carries its own tick credential, and you are told to log back in afterwards.<\/li>\n<li>Fixed: importing dumps made of many small statements (phpMyAdmin exports, mysqldump --skip-extended-insert) no longer fails part-way.<\/li>\n<li>Fixed: the import and restore progress bar now actually moves \u2014 progress is measured in bytes of the dump applied.<\/li>\n<li>Fixed: a batch boundary landing inside quoted text could drop spaces from imported content; statement splitting is now byte-exact and comment handling no longer fuses tokens.<\/li>\n<li>Fixed: search and replace only touches genuinely textual columns \u2014 numbers, dates, and binary data are no longer rewritten as text \u2014 and composite-key tables such as term relationships are now walked instead of skipped.<\/li>\n<li>Fixed: search and replace no longer rewrites rows the search never matched, leaves custom-serialized (C:) payloads untouched, and reports any matching values it had to skip.<\/li>\n<li>Fixed: exports order rows deterministically on tables without a simple primary key, exclude generated columns, and exclude database views (views and triggers are announced in the job log as not included).<\/li>\n<li>Fixed: importing a dump with a different table prefix now says so clearly instead of reporting a success that changed nothing.<\/li>\n<li>Fixed: abandoned jobs are cleaned up properly \u2014 partial files no longer linger looking like real backups, and retention pruning can no longer delete a backup a queued restore is about to use.<\/li>\n<li>Fixed: full-disk conditions during export, archive, and decompression are detected instead of producing silently truncated files.<\/li>\n<li>Fixed: the Profiles tab's Use button now applies the profile on the Export tab.<\/li>\n<li>Fixed: WP-CLI plain-SQL export works via the new --uncompressed flag, and an empty table selection is refused instead of claiming success.<\/li>\n<li>Hardened: archives skip symbolic links entirely and report every file they had to leave out; the storage directory's .htaccess covers Apache 2.4.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Security hardening: blocked PHP object injection via serialization-safe replace.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Housekeeping: refreshed the shared admin design kit.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Compatibility: tested up to WordPress 7.1.<\/li>\n<li>Housekeeping: job-history pruning queries now use WordPress's identifier placeholder.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Safety: deleting a backup or profile now asks for confirmation naming the exact file.<\/li>\n<li>Housekeeping: finished job history is pruned after 60 days.<\/li>\n<li>Polish: the multisite notice only appears where it is relevant.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Data safety: uninstalling the plugin no longer deletes its data unless you explicitly opt in first \u2014 a reinstall now picks up exactly where you left off.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New look: the Dragon design system arrives \u2014 a consistent Dragon Core header, cleaner tables, and unified status colours. Purely visual; no behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed all option, hook, function and constant prefixes to the unique <code>dragonmigrate_<\/code> \/ <code>DRAGONMIGRATE_<\/code> prefix. Existing settings, backups and scheduled tasks are migrated automatically on update.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Repeatable WordPress database migrations. Export, import, back up and search-replace with serialization-safe accuracy, resumable on any host.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349414"}],"author":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dragoncoreltd"}],"wp:attachment":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349414"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349414"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349414"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349414"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349414"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}