Backup and Restore MySQL Database using mysqlhotcopy
2014-02-25 22:53
519 查看
mysqlhotcopy is a perl script that comes with MySQL installation. This locks the table, flush the table and then performs a copy of the database. You can also use the mysqlhotcopy to automatically copy the backup directly to another server using scp.
The above example, performs a backup of sugarcrm, a MySQL database to the /home/backup/database directory.
–allowold: This options renames the old backup to {datbase-name}_old before taking a new backup. In this example, if sugarcrm backup already existing under /home/backup/database, it will move the old backup to /home/backup/database/sugarcrm_old before creating /home/backup/database/sugarcrm.
–keepold: This option instructs the mysqlhotcopy to keep the old backup (i.e the renamed _old) after the backup is completed.
View the mysqlhotcopy documentation using perldoc as shown below.
Following are the available options that can be passed to mysqlhotcopy command.
By default, MySQL database is located under /var/lib/mysql/{db-name}. mysqlhotcopy takes a backup of the table files from this default database location, to the backup directory. The backup directory /home/backup/database/sugarcrm, will contain exact copy of all the files from the real MySQL database /var/lib/mysql/sugarcrm directory.
Please note that every table has three corresponding files with the extension *.frm, *.MYD and *.MYI. The database directory also contains a db.opt file that contains the database related parameter.
In the above example, you can see the mysqlhotcopy takes a backup of 98 sugarcrm database tables. So, the total number of files in the backup directory = 98 tables * 3 + 1 db configuration file = 296 files.
Make sure to install the perl-DBD package as shown below.
How to resolve the issue with perl-DBD installation? While installing the perl-DBD, you may get the following error message.
Download and install the MySQL-shared-compat from mysql.com and this should resolve the above mentioned error while installing the perl-DBD package.
参考:
http://www.thegeekstuff.com/2008/07/backup-and-restore-mysql-database-using-mysqlhotcopy/
1. mysqlhotcopy command:
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
The above example, performs a backup of sugarcrm, a MySQL database to the /home/backup/database directory.
–allowold: This options renames the old backup to {datbase-name}_old before taking a new backup. In this example, if sugarcrm backup already existing under /home/backup/database, it will move the old backup to /home/backup/database/sugarcrm_old before creating /home/backup/database/sugarcrm.
–keepold: This option instructs the mysqlhotcopy to keep the old backup (i.e the renamed _old) after the backup is completed.
View the mysqlhotcopy documentation using perldoc as shown below.
[local-host]# perldoc mysqlhotcopy
Following are the available options that can be passed to mysqlhotcopy command.
Option | Description |
–addtodest | Do not rename target directory (if it exists); merely add files to it |
–allowold | Do not abort if a target exists; rename it by adding an _old suffix |
–checkpoint=db_name.tbl_name | Insert checkpoint entries |
–chroot=path | Base directory of the chroot jail in which mysqld operates |
–debug | Write a debugging log |
–dryrun | Report actions without performing them |
–flushlogs | Flush logs after all tables are locked |
–help | Display help message and exit |
–host=host_name | Connect to the MySQL server on the given host |
–keepold | Do not delete previous (renamed) target when done |
–noindices | Do not include full index files in the backup |
–password[=password] | The password to use when connecting to the server |
–port=port_num | The TCP/IP port number to use for the connection |
–quiet | Be silent except for errors |
–regexp | Copy all databases with names that match the given regular expression |
–resetmaster | Reset the binary log after locking all the tables |
–resetslave | Reset the master.info file after locking all the tables |
–socket=path | For connections to localhost |
–tmpdir=path | The temporary directory |
–user=user_name, | The MySQL username to use when connecting to the server |
–version | Display version information and exit |
2. mysqlhotcopy command output:
The above mysqlhotcopy command will display an output similar to the following.[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepoldLocked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).
By default, MySQL database is located under /var/lib/mysql/{db-name}. mysqlhotcopy takes a backup of the table files from this default database location, to the backup directory. The backup directory /home/backup/database/sugarcrm, will contain exact copy of all the files from the real MySQL database /var/lib/mysql/sugarcrm directory.
[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l 295 [local-host]# ls -1 /home/backup/database/sugarcrm | wc -l 295
Please note that every table has three corresponding files with the extension *.frm, *.MYD and *.MYI. The database directory also contains a db.opt file that contains the database related parameter.
In the above example, you can see the mysqlhotcopy takes a backup of 98 sugarcrm database tables. So, the total number of files in the backup directory = 98 tables * 3 + 1 db configuration file = 296 files.
3. Restore from mysqlhotcopy
To restore the backup from the mysqlhotcopy backup, simply copy the files from the backup directory to the /var/lib/mysql/{db-name} directory. Just to be on the safe-side, make sure to stop the mysql before you restore (copy) the files. After you copy the files to the /var/lib/mysql/{db-name} start the mysql again.4. Troubleshooting mysqlhotcopy
How to resolve Can’t locate DBD/mysql.pm issue? mysqlhotcopy is a perl script and it requires the perl-DBD module. You may receive the following error while executing mysqlhotcopy if perl-DBD module is not installed.[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepoldinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 7) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Proxy, Sponge. at /usr/bin/mysqlhotcopy line 177
Make sure to install the perl-DBD package as shown below.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm Preparing... ########################################### [100%] 1:perl-DBD-MySQL ########################################### [100%]
How to resolve the issue with perl-DBD installation? While installing the perl-DBD, you may get the following error message.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch error: cannot open Packages index using db3 - (-30974) warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat error: Failed dependencies: libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386 libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
Download and install the MySQL-shared-compat from mysql.com and this should resolve the above mentioned error while installing the perl-DBD package.
[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm Preparing... ########################################### [100%] 1:MySQL-shared-compat ########################################### [100%]
参考:
http://www.thegeekstuff.com/2008/07/backup-and-restore-mysql-database-using-mysqlhotcopy/
相关文章推荐
- 通过使用主机中的sqldeveloper访问虚拟机中的oracle数据库
- 分页SQL技术1-COUNT STOPKEY.
- 分页SQL技术1-COUNT STOPKEY.
- PLSQL developer 连接不上64位Oracle 的解决方法
- SQL on Hadoop系统的最新进展
- 如何在64位的Windows中安裝PLSQLDEVELOPER 8
- 深入浅出Mysql数据库开发优化与管理维护笔记 22 磁盘IO的问题和数据分布
- MySQL drop column is exists
- mysql 主从复制双主架构在线修改表结构、在线DDL
- 深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布
- MySQL架构
- mac os #2006 - MySQL server has gone away 错误解决办法
- Mysql 1030 Got error -1 from storage engine
- go-mysql,一个易用的mysql接口框架实现
- go-mysql,一个易用的mysql接口框架实现
- SQL基础之创建数据库,表,架构
- MYSQL:ERROR 1030 (HY000): Got error 28 from storage engine
- Mysql原理及主从架构
- Windows 7 64位PL/SQL Developer 连接Oracle 11g
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)