Project

General

Profile

Cloning a site » History » Version 1

Jon Goldberg, 07/30/2021 06:29 PM

1 1 Jon Goldberg
# Cloning a site
2
The command to clone a site's database to an existing dev/test site is:
3
```shell
4
ansible-playbook main-playbook.yml --tags site-db-sync --limit example.local
5
```
6
7
Specify the *destination* site with `--limit`.  The Ansible inventory knows which live site corresponds to the destination site.  Depending on the live site's "db sync strategy" value in the inventory, one of two strategies is employed:
8
* *Restore from rsync.net* will download the database dump from the most recent backup of the live site on rsync.net.
9
* *Live mysqldump* will do an immediate `mysqldump` of CMS/CRM/logging databases, and copy them down.  Use this with caution for sites where mysqldump might cause a performance issue.  Note that at this time, "Live mysqldump" will only work for a locally hosted destination.
10
11
#### Manually dropping all database triggers
12
The Ansible command will drop the trigger definer automatically, but if you need to manually sync a site for whatever reason, then can't write anything to Civi because your triggers lack permission to write to the log, this two-liner will fix it.  Run anywhere within the site's webroot.
13
14
```shell
15
DB=<your database name here, e.g. "example_dev_civi">
16
echo "SELECT Concat('DROP TRIGGER ', Trigger_Name, ';') FROM  information_schema.TRIGGERS WHERE TRIGGER_SCHEMA = '$DB'" | cv sql | tail --lines +2 | cv sql
17
# Drupal only
18
drush civicrm-sql-rebuild-triggers
19
```