≡菜单

Backup and Restore 的MySQL数据库 using 的MySQL的hotcopy

的MySQL徽标
的MySQL的hotcopy是MySQL安装随附的perl脚本。这将锁定表,刷新表,然后执行数据库的副本。您还可以使用mysqlhotcopy使用scp将备份直接自动复制到另一台服务器
.

1. 的MySQL的hotcopy command:

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

上面的示例执行了MySQL数据库Sugarcrm到/ home / 后备 / database目录的备份。

  • –allowold:在进行新备份之前,此选项将旧备份重命名为{datbase-name} _old。在此示例中,如果sugarcrm备份已经在/ home / 后备 / database下存在,它将在创建/ home / 后备 / database / sugarcrm之前将旧备份移动到/ home / 后备 / database / sugarcrm_old。
  • –keepold:此选项指示mysqlhotcopy在备份完成后保留旧备份(即重命名的_old)。

View the 的MySQL的hotcopy documentation using perldoc as shown below.

[local-host]# perldoc 的MySQL的hotcopy

以下是可以传递给mysqlhotcopy命令的可用选项。

选项

描述

–addtodest 不要重命名目标目录(如果存在);只需向其中添加文件
–allowold 如果存在目标,请不要中止;通过添加_old后缀来重命名
–checkpoint = db_name.tbl_name 插入检查点条目
–chroot=path Base directory of the chroot jail in which 的MySQL的d operates
–debug 编写调试日志
–dryrun 报告动作而不执行
–flushlogs 锁定所有表后刷新日志
–help 显示帮助信息并退出
–host=host_name 连接到给定主机上的MySQL服务器
–keepold 完成后不要删除先前(重命名)的目标
–noindices 备份中不包括完整索引文件
–password[=password] 连接服务器时使用的密码
–port=port_num 用于连接的TCP / IP端口号
–quiet 保持沉默,除非有错误
–regexp 复制名称与给定正则表达式匹配的所有数据库
–resetmaster 锁定所有表后重置二进制日志
–resetslave 锁定所有表后,重置master.info文件
–socket=path 用于连接到本地主机
–tmpdir=path 临时目录
–user=user_name, 连接服务器时使用的MySQL用户名
–version 显示版本信息并退出

2. 的MySQL的hotcopy command output:

上面的mysqlhotcopy命令将显示类似于以下的输出。

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Locked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
复制0个文件的索引...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).

默认情况下,MySQL数据库位于/ var / lib / 的MySQL的 / {db-name}下。 的MySQL的hotcopy将表文件的备份从该默认数据库位置备份到备份目录。备份目录/ home / 后备 / database / sugarcrm将包含真实MySQL数据库/ var / lib / 的MySQL的 / sugarcrm目录中所有文件的精确副本。

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

请注意,每个表都有三个对应的文件,扩展名为* .frm,*。MYD和* .MYI。数据库目录还包含一个db.opt文件,该文件包含与数据库相关的参数。

在上面的示例中,您可以看到mysqlhotcopy备份了98个sugarcrm数据库表。因此,备份目录中的文件总数= 98表* 3 +1 db配置文件= 296个文件。

3. Restore from 的MySQL的hotcopy

要从mysqlhotcopy备份还原备份,只需将文件从备份目录复制到/ var / lib / 的MySQL的 / {db-name}目录。为了安全起见,请确保在还原(复制)文件之前先停止mysql。将文件复制到/ var / lib / 的MySQL的 / {db-name}后,再次启动mysql。

4. Troubleshooting 的MySQL的hotcopy

如何解决可以’找到DBD / mysql.pm问题? 的MySQL的hotcopy是一个perl脚本,它需要perl-DBD模块。如果未安装perl-DBD模块,则在执行mysqlhotcopy时可能会收到以下错误。

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
install_driver(mysql) failed: 能够'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

确保如下所示安装perl-DBD软件包。

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

如何解决perl-DBD安装问题? 在安装perl-DBD时,您可能会收到以下错误消息。

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
rpmdb: Program 版 4.3 doesn't match environment 版
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment 版 mismatch
error: cannot open Packages index using db3 -  (-30974)
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
rpmdb: Program 版 4.3 doesn't match environment 版
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment 版 mismatch
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
error: Failed dependencies:
libmysqlclient.so.15 is needed 通过 perl-DBD-MySQL-3.0007-1.fc6.i386
libmysqlclient.so.15(libmysqlclient_15) is needed 通过 perl-DBD-MySQL-3.0007-1.fc6.i386

从mysql.com下载并安装MySQL-shared-compat,这将在安装perl-DBD软件包时解决上述错误。

[local-host]# rpm -ivh 的MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

您是否使用其他任何方法来备份或还原MySQL数据库?请留下您的评论。

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 4 评论… 加一 }

  • 萨西卡拉 2009年3月31日,上午3:36

    你好
    不错的文章。
    I tried taking the 后备 and restoring using this 的MySQL的hotcopy.
    我发布了以下cmd。
    的MySQL的>/ usr / bin / mysqlhotcopy -u root -p传递appdb / tmp -allowold -keepold
    在0秒内锁定了16张桌子。
    在0秒内刷新了表格(“所有表格”)。
    复制48个文件…
    复制0个文件的索引…
    解锁表。
    的MySQL的hotcopy copied 16 tables (48 files) in 0 seconds (0 seconds overall).

    注意:此处不显示16 * 3 + 1。我不知道为什么吗?

    然后我停下来,并将这些备份复制到新数据库下。

    当我连接到新数据库时,它显示错误
    迪登’在表中找不到任何字段‘Ar’
    迪登’在表中找不到任何字段‘Arch’
    迪登’在表中找不到任何字段‘Arist’
    迪登’在表中找不到任何字段‘BITE’
    如果我在其中描述了任何表格,那就说错误
    能够’t find file: ‘./newdb/Ar.frm’ (errno: 13)

    您知道如何解决此问题吗?

  • 萨西卡拉 2009年3月31日,上午4:30

    我知道了这是因为,还原文件时,这些文件的所有者应为mysql。谢谢。

  • 克里斯 2009年6月26日,上午3:43

    复制文件时。

    cp –保留=模式,所有权[路径/到/备份/文件] / var / lib / 的MySQL的/ [db_name]

    使用preserve将使您不必使用chmod和chown。

  • 苏南拉塔 2012年12月20日,晚上9:59

    while executing 的MySQL的dump
    的MySQL的 > 的MySQL的dump -u root -p dwr1 > dwr2.sql
    箭头出现在场景上
    –>
    带有游标
    ????
    将什么更改为exe以转储命令以在命令提示符下在sql中备份我的文件

发表评论