我必须制定一个备份策略。我选择 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 密码。
有时我可以使用 mysql 停止/启动 mysql /etc/init.d/mysql stop/start
,有时使用 service mysql stop/start it 这不起作用我尝试使用:(mysqladmin -u root -p shutdown
如果我可以更改密码)
如果我真的无法停止 mysql,我会这样做killall mysql
(我知道这是错误的),然后我更改了 root 密码:
/usr/bin/mysqld_safe --skip-grant-tables & mysql --user=root mysql
有人遇到和我类似的问题吗?如何使用 innobackupex 跳过 mysql 数据库?