DB dump with chroot

Fri 10 July 2009
  • 装备 tags:
  • database
  • linux
  • mysql
  • postgresql
  • shell
  • sqlite published: true comments: true

I caught chroot first time when attempting to install gentoo linux. Of course, its a tool of great useful. Two months ago I had my laptop crashed, and all static files were recovery easily by copy while raw db data file seems to be difficult to handle.

The old file system is in a mobile disk, mounted at /media/disk-1/. Now I try to use chroot to rollback to that environment, so that all standard dump tools will be available.

Before you chroot to the system, don't forget to bind /dev to new location. Or you might get error prompt such as "/dev/null Permission Denied" (it's a common error). Just execute command below: $ sudo mount --bind /dev /media/disk-1/dev

Then change root to my old system: $ sudo chroot /media/disk-1

Now you become root user automatically.

MySQL Dump

In a standard ubuntu mysql installation, we should launch mysql db from init.d by: # /etc/init.d/mysql start

But it's no longer available in such environment. Fortunately, there is a direct way: # mysqld_safe &

OK, go on to dump database with mysqldump: # mysqldump --all-databases > mysql_dump_file

Postgresql Dump

We cannot use init.d to start pgsql either. Therefore, try to run it by: # su postgres -c "/usr/lib/postgresql/8.3/bin/pg_ctl start -D /etc/postgresql/8.3/main"

/etc/postgresql/8.3/main is the default data directory in standard installation(with apt-get). This directory is supposed to contain a file named with "postgesql.conf"

Now pgsql db is also running. As root user we have no privilege to run pgsql utilities. so take following steps: # touch pgsql_dump_file
# chmod a+w pgsql_dump_file
# su postgres -c "pg_dumpall -f pgsql_dump_file"

Conclusion

Personally, I found it's too complex and low efficiency to backup and restore data with mysql and postgresql. If there is no critical requirement(just like personal data management), file based db(Surely I mean sqlite) is no doubt better choice. Easy management(lots of gui tool now provided), smooth copy and move, standard db interface for programming, and enough functionality.