我必须设置备份策略。 我选择了innobackupex在Debian 6 Squeeze上运行。有两个服务器,生产服务器和备份服务器(如果生产服务器崩溃,它应该工作)。没有复制,我使用rsync来传输备份。 我有一个php脚本,它在conf文件中查找,以了解何时必须进行备份。
我的问题是:如何使用innobackupex跳过mysql数据库或users表?
在主人身上:我执行以下命令:
innobackupex --user=root --password=xxx --no-timestamp /opt/backups/full/ rsync -avz --progress -e 'ssh -i -p 1000 ' /opt/backups/full/ user@xxx:/home/backups/full/
这很好用
在备份服务器上,我只需要准备和恢复文件:
innobackupex --apply-log --redo-only --user=xxx --password=xxx /home/backups/full/ innobackupex --copy-back /home/backups/full --user=root --password=xxx
一切都很好,但在备份服务器上,root用户的密码已更改,甚至更改了debian-sys-maint
密码。
root用户密码将成为主用户密码。
我做了一个脚本来纠正这个问题。
debian-sys-maint
密码是在/etc/mysql/debian.cnf
文件中清楚写的,所以提取它但在php中(我使用pdo对象)我无法更改此密码,因此我无法重启mysql服务器。
有时我无法检索root用户的密码,它不是主服务器root密码。
有时我可以使用/etc/init.d/mysql stop/start
来停止/启动mysql,有时使用服务mysql停止/启动它这不起作用我尝试使用:mysqladmin -u root -p shutdown
(如果我可以更改密码)
如果真的我无法阻止mysql我做killall mysql
(我知道这是错的)
然后我更改root密码:
/usr/bin/mysqld_safe --skip-grant-tables & mysql --user=root mysql
有人有类似我的问题吗?如何使用innobackupex跳过mysql数据库?
答案 0 :(得分:1)
innobackupex工具是Percona XtraBackup的一部分。我为Percona工作,我开发了Percona XtraBackup培训。
innobackupex可以选择按名称或正则表达式备份特定数据库。 @YaK提供了一个选项,或者您可以在此处查看其他选项:http://www.percona.com/doc/percona-xtrabackup/innobackupex/partial_backups_innobackupex.html
但是,--copy-back
假设您要将完整备份还原到空数据对。即如果目标目录不为空,--copy-back
将发出错误并拒绝覆盖文件。
如果您尝试将InnoDB表还原到已有mysql
数据库的实例,则必须手动执行还原。这可以像在现有datadir中使用mv
文件一样简单(当然MySQL服务器关闭)。还记得在启动mysqld之前在文件上使用chown mysql:mysql
。
PS:恢复前无需使用--redo-only
。该选项用于执行增量备份,即使这样,您也可以在执行最终还原之前跳过该选项。
答案 1 :(得分:0)
我相信您使用的是Percona的this tool。
然后我能找到的唯一有用的选项是--databases
。我假设您不想在脚本中维护数据库列表,您可以使用如下命令动态构建列表:
shell > mysql [options] -NBe \ "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql', 'information_schema')"
您应该可以将此调用集成到以下内容中:
shell > innobackupex \ --databases=`mysql [options] -NBe \ "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql', 'information_schema')"`
(可能需要一些额外的双引号,抱歉,我目前无法访问该工具)
答案 2 :(得分:0)
感谢您的回答。
是的,我的所有表都在使用InnoDB引擎。
感谢您对Bill Karwin的建议,但innobackupex是一个很棒的工具,我会用--databases
来忽略mysql数据库
是的,我读到--redo-only
是增量的,我也做增量。
在主服务器上,我有一个名为full
的目录和一个名为incremental
的目录,在最后一次增量后,我删除了目录。
经过测试,我会告诉你一切是否正常。