使用 drbd 和 heartbeat 进行 Mysql 复制

使用 drbd 和 heartbeat 进行 Mysql 复制

我正在为现有的 Ubuntu 服务器设置设置备份服务器。

我正在运行 DRBD(协议 C)和心跳,这样一旦出现错误,备份服务器上的 MySQL5 服务器就会启动。

我想在使用 drbd 和 heartbeat 复制后启动 mysql 服务器。

my.cnf我也更改了文件中以及 apparmor.d/usr.bin.mysqld 中的datadir 。

当 drbd 设备未挂载时,Mysql 启动。

我的日志显示如下:

Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: 101026 12:55:28 InnoDB: Operating system error number 13 in a file operation.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: The error means mysqld does not have the access rights to
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: the directory.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: File name ./ibdata1
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: File operation call: 'open'.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: Cannot continue operation.
Oct 26 12:55:28 twyford-hambc2 mysqld_safe[27634]: ended

Oct 26 12:55:42 twyford-hambc2 kernel: [ 2876.791880] type=1503 audit(1288094142.991:53: operation="inode_permission" requested_mask="::r" denied_mask="::r" fsuid=0 $
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]:
Oct 26 12:56:46 twyford-hambc2 lrmd: [17345]: WARN: mysql:start process (PID 2732 timed out (try 1). Killing with signal SIGTERM (15).
Oct 26 12:56:46 twyford-hambc2 lrmd: [17345]: WARN: operation start[139] on ocf::mysql::mysql for client 17348, its parameters: socket=[/var/run/mysqld/mysqld.sock] bi$

任何帮助均感激不尽。

答案1

问题写得很糟糕,让人难以理解实际症状是什么。

使用 heartbeat 停止/启动进程时,检查并更改默认服务也很重要。MySQL 不应在服务器启动时启动。DRBD 不应在启动时启动。这些操作应由 heartbeat 控制,而不是由普通的 /etc/rc?.d init 脚本控制。

为了进一步排除故障,在心跳中添加一些上/下脚本来记录系统在主状态和备份状态之间切换时正在执行的操作。

答案2

我建议使用 MySQL 复制而不是 drbd。

通过此设置,您将拥有 2 个自由 MySQL 服务器,并且心跳只需要切换服务 ip 和可能的其他内容...

众所周知,使用 drbd 作为数据库后端会导致数据库损坏。

答案3

我猜,你要做的第一件事就是禁用 selinux。
禁用 selinux,重新启动并再次检查日志。

稍后编辑:Mysql 服务在 mysql 用户帐户下启动。检查 mysql 文件的文件权限是否归 mysql 用户所有。

相关内容