Tracking changes with git

MySQL

Daily backup:

   mysqldump -u mysql_user -pmysql_password --skip-extended-insert mysql_database > /path/to/db_backup_`date --rfc-3339=date`.sql

PostgreSQL

  • need the --inserts flag to act similar to MySQL's --skip-extended-insert
  • Need a .pgpass file to contain the postgresql database user's password (the "no-password" flag below means don't prompt for a password, look for a .pgpass file).
   pg_dump -h localhost -U postgres_user -p port --no-password --inserts dbname

From the manual (man) page for pg_dump:

--inserts
Dump data as INSERT commands (rather than COPY). This will make restoration very slow; it is mainly useful for making dumps that can be
loaded into non-PostgreSQL databases. However, since this option generates a separate command for each row, an error in reloading a row
causes only that row to be lost rather than the entire table contents. Note that the restore might fail altogether if you have
rearranged column order. The --column-inserts option is safe against column order changes, though even slower.