Home > MySQL, redmine, ubuntu > Restore MySQL database without a mysqldump backup

Restore MySQL database without a mysqldump backup

Restore the database

I have had a hard disk error and I need to restore my old redmine database to the newer installation of redmine in Ubuntu 11.04 (https://myotragusbalearicus.wordpress.com/2011/09/05/install-redmine-with-mysql-in-ubuntu-11-04/).

I have the old data directory accessible, but no recent mysqldump of my database, so I just want to copy the old data directory to the newly created redmine database.

First, I take a backup of the current version:

$ mysqldump -u root -p'root_password' redmine | gzip > redmine_mysql.gz

Shutdown the database:


$ sudo service mysql stop

Delete all of MySQL database files (with root user or mysql user):


$ sudo su -

$ cd /var/lib/mysql/

$ rm *

Install a new empty database schema:

$ mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h <machinename> password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/scripts/mysqlbug script!

Start the database and then assign a password to the root user:

$ sudo service mysql start
$ mysqladmin -u root password 'new-password'

Shutdown again the database, and copy all of the files of the old filesystem to the newly created database, overwriting all the files:

$ sudo service mysql stop
$ sudo su -
$ cp -R /old_file_system/var/lib/mysql/* /var/lib/mysql
$ chmod -R 660 /var/lib/mysql/

And finaly, restart the database:

$ sudo service mysql start

Permissions error

If you get this error selecting tables:

mysql> select * from attachments;
ERROR 1017 (HY000): Can't find file: './redmine_default/attachments.frm' (errno: 13)
mysql>

Ensure that you have the propper permissions in the data directory and that belongs to mysql user.
In my case, the data files has the correct permissions:

$ ls redmine_default/attachments.frm
-rw-rw---- 1 mysql mysql  9022 2011-09-06 00:02 attachments.frm

But the directory not:

$ ls redmine_default
drw-rw----  2 mysql mysql     4096 2011-09-06 00:02 redmine_default/

The directory needs 770 permissions:

$ sudo chmod 700 redmine_default

Rollback changes

If something goes wrong, and you need to restore the initial backup, you have to do this:

$ gzip -c -d redmine_mysql.gz | mysql -u root -p redmine

Restore redmine attachments

The attachments are installed under /var/lib/redmine/default/files. To back them up run the following:

</pre>
<code>$ sudo tar zcPf redmine_attachments.tar.gz /old_file_system/var/lib/redmine/default/files</code>

And to extract to the new location:

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">$ sudo tar xvPf redmine_attachments.tar.gz</span></pre>
  1. January 9, 2012 at 18:24

    I’ve never used PMB, so I’m afraid I can’t help you.
    But.. have you tried to restore the backup to PMB and then access the database with MySQLAdmin/PHPMyAdmin, etc.?

    Like

  2. varun
    January 6, 2012 at 8:40

    i have a database backup of pmb files in mysql. how can i convert it to .sql files

    Like

  1. No trackbacks yet.

Leave a comment