- 装备 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 startBut 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"