vielhuber / syncdb
Syncs a database (mysql, pgsql) between two servers (optional via ssh tunnel).
Installs: 140
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 3
Forks: 5
Open Issues: 0
pkg:composer/vielhuber/syncdb
Requires
- php: >=5.6
- vielhuber/magicreplace: *
- dev-master
- 1.8.5
- 1.8.4
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.9
- 1.7.8
- 1.7.7
- 1.7.6
- 1.7.5
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.9
- 1.5.8
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
This package is auto-updated.
Last update: 2025-10-08 12:52:05 UTC
README
syncdb syncs databases between two servers.
Features
- Most common use case: Sync your production database to your local environment
- You also can sync between any servers, even from remote to remote (without local)
- Works with direct database connections or via ssh tunnels
- Currently supports mysql, postgresql support will be added soon
- Has also a fast mode where the sql file is zipped (you also can choose the compression level)
- Does include a search/replace mechanism called magicreplace
- (Remote) commands like mysqldump, mysql, zip, e.g. can be overwritten manually to fit any environment
- Works on Linux, Mac and Windows (with WSL)
- Supports parallel execution of multiple syncs
- Uses optimization techniques for a faster restore
- Also supports ssh connections to servers without the support for public keys
- Shows live restore progress
Requirements
Mac
Install Homebrew and then coreutils:
brew install coreutils
Windows
Choose one of the two following options:
- Install WSL2
- Install Cygwin:
- Install all default packages +
unzip - Add
C:\cygwin64\binto your environment PATH (high priority, but below php)
- Install all default packages +
Installation
Mac / Windows (WSL2) / Linux
mkdir ~/.syncdb cd ~/.syncdb composer require vielhuber/syncdb chmod +x vendor/vielhuber/syncdb/src/syncdb
Now add ~/.syncdb/vendor/vielhuber/syncdb/src/ to your path environment.
Windows (CMD)
mkdir "%USERPROFILE%/.syncdb" cd "%USERPROFILE%/.syncdb" composer require vielhuber/syncdb
Now add C:\Users\xxx\.syncdb\vendor\vielhuber\syncdb\src\ to your path environment.
Update
Mac / Windows (WSL2) / Linux
cd ~/.syncdb composer update chmod +x vendor/vielhuber/syncdb/src/syncdb
Windows (CMD)
cd "%USERPROFILE%/.syncdb" composer update
Usage
syncdb profile-name
Configuration
Simply put your desired configuration files in ~/.syncdb/profiles/profile-name.json:
mkdir ~/.syncdb/profiles cd ~/.syncdb/profiles nano example.json
{
"engine": "mysql",
"source": {
"host": "200.10.10.10",
"port": "3307",
"database": "EXAMPLE",
"username": "EXAMPLE",
"password": "EXAMPLE",
"cmd": "mysqldump",
"ssh": false
},
"target": {
"host": "localhost",
"port": "3306",
"database": "EXAMPLE",
"username": "EXAMPLE",
"password": "EXAMPLE",
"cmd": "mysql",
"ssh": false
},
"replace": {
"https://www.example.com": "http://www.example.local",
"www.example.com": "www.example.local"
}
}
You can find more examples in the profiles folder in this git repo.
Excluding table data
Sometimes it is useful to exclude certain table data (e.g. logs, cache, ...), while preserving the structure.
Database engines don't provide a good way to do this.
Therefore you can use the ignore_table_data-directive in your json-config:
{
"ignore_table_data": ["table1", "table2", "table3"]
}
Privileges
Since MySQL 5.7 and MySQL 8.0.21 accessing the INFORMATION_SCHEMA.FILES table now requires the PROCESS privilege. Most providers don't have this option available. This results in the error message:
Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
syncdb automatically adds --no-tablespaces to your mysqldump-commands. You can turn off this behaviour by adding "tablespaces": true to your configuration.