[kwlug-disc] how to duplicate a mysql database?
Khalid Baheyeldin
kb at 2bits.com
Wed Aug 26 14:27:42 EDT 2009
On Wed, Aug 26, 2009 at 3:44 AM, Robert P. J. Day <rpjday at crashcourse.ca>wrote:
> On Tue, 25 Aug 2009, Khalid Baheyeldin wrote:
>
> > It is actually difficult to do what you have seen. The hardest part
> > is assigning permissions for a user. You can skip that if you are
> > testing with root.
>
> yes, i'll be testing as root, so i assume i can skip that "GRANT"
> step.
>
In that case, it is reduce to:
# mysqladmin create newdb
# mysqldump olddb | mysql newdb
And if the database was created in previous steps, then you either need to
DROP it, and then re-create it, or have a cleanup script that empties it for
you.
I use this script that I call dbclean.sh, which again assumes you are root,
with no passwords.
#!/bin/sh
case $# in
2) DB_NAME=$1
DB_USER=$2
CMD="mysql -u$DB_USER $DB_NAME"
;;
1) DB_NAME=$1
CMD="mysql $DB_NAME"
;;
*) echo "Usage: `basename $0` database [user [password]]"
exit 1
esac
echo "SHOW TABLES;" |
$CMD |
grep -v '^Tables_in_' | sed -e 's/\(^.*$\)/DROP TABLE \1;/' |
$CMD
So, the work flow becomes:
Once only:
# mysqladmin create newdb
Every iteration of the test
# dbclean.sh newdb
# mysqldump olddb | mysql newdb
> i'd seen a number of solutions that did that last part in two steps:
> dump the db to a file, then run mysql as a separate command. so
> there's nothing wrong with using a pipe and driving the output to the
> input? good. i thought that was acceptable, i just wanted to make
> sure.
If the database is not too big, there is no downside. If it is big, it will
still work, but perhaps the pipe size will be slower? I have not measured
that. You still need the time for write and then the time for read. And
the database operations (e.g. indexing) may be slower than either.
I have used that many times and never had an issue.
>
> of course, all will be backed up thoroughly. :-)
>
>
--
Khalid M. Baheyeldin
2bits.com, Inc.
http://2bits.com
Drupal optimization, development, customization and consulting.
Simplicity is prerequisite for reliability. -- Edsger W.Dijkstra
Simplicity is the ultimate sophistication. -- Leonardo da Vinci
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://kwlug.org/pipermail/kwlug-disc_kwlug.org/attachments/20090826/506ade11/attachment.htm>
More information about the kwlug-disc
mailing list