MySQL高可用之DRBD + Heartbeat + MySQL(3)

要想完成主从Mysql数据的备份,到这里大家应该有点启发了,我么只需要将Mysql的数据保存到/mnt/data(我们将/dev/drbd0挂在的路径)中即可这样主Mysql往这个区域写数据,drbd会帮我们自动将这些数据同步到从节点中,这样装在从节点机

器上的Mysql也从这里读取数据。这样便实现了两份���据的自动备份。 )

3.17. 问题

主降为次失败:

因为降级的本身的目录正在使用

4. MYSQL 设置 4.1. 更改Mysql数据库的存储位置为共享目录(主从都执行)

默认情况下数据库的存储位置是/var/lib/mysql(可以在/etc/mysql/my.cnf中的datadir位置找到),现在要将其改为存在/share_mysql下。

将/var/lib/mysql下的数据复制到/share_mysql下

cp -r /var/lib/mysql  /share_mysql 

vim /etc/mysql/my.cnf 

MySQL高可用之DRBD + Heartbeat + MySQL

找到datadir这一行将其值改为/share_mysql/mysq

4.2. 赋予数据库用户访问权限

MySQL高可用之DRBD + Heartbeat + MySQL

4.3. 系统级别修改权限

140602 22:36:39 mysqld_safe Starting mysqld daemon with databases from /home/mysql

140602 22:36:39 [Warning] Can't create test file /home/mysql/localhost.lower-test

140602 22:36:39 [Warning] Can't create test file /home/mysql/localhost.lower-test

/usr/libexec/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13)

140602 22:36:39 [ERROR] Aborting

140602 22:36:39 [Note] /usr/libexec/mysqld: Shutdown complete

140602 22:36:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

你已经修改了my.cnf中的datadir的值
你已经chown和chmod了数次新数据目录或者其父路径的属主和权限
你无数次地试图service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!

恭喜你看见这篇文章,我在被系统坑了几个小时之后,找到了解决的方法。

这个原因有二,其中任意的一个原因都会造成你被系统告知这个warning。如果你不是一个专业的linux系统安全工程师,或者你只是个PHP程序员,并没有对系统安全有深入的研究,你就不会太容易找到它的答案。

第一,selinux,记得当年念书时,字符界面安装RedHat(很古老的操作系统么。。。)的时候,有这么一个选项,通常大家都听取前辈的建议,改变默认值以不安装它。但如果你恰好要操作的这台机器开着selinux,它确实能够使你的mysql无法在新目标位置进行mysql_install_db的操作,并爆出标题所示的警告。一个简单的解决办法是使用命令暂时关闭selinux,以便让你的操作可以继续下去
setenforce 0
但最好使用一个永久方法,以便在重启后继续不要这货。
修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启或等待下次重启。

第二,apparmor,这个坑爹货和selinux一样的坑爹,它也对mysql所能使用的目录权限做了限制
在 /etc/apparmor.d/usr.sbin.mysqld 这个文件中,有这两行,规定了mysql使用的数据文件路径权限

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

你一定看到了,/var/lib/mysql/就是之前mysql安装的数据文件默认路径,apparmor控制这里mysqld可以使用的目录的权限
我想把数据文件移动到/data/mysql下,那么为了使mysqld可以使用/data/mysql这个目录,照上面那两条,增加下面这两条就可以了

/data/mysql/ r,
/data/mysql/** rwk,

重启apparmor,/etc/init.d/apparmor restart
之后,就可以顺利地干你想干的事儿了!

MySQL高可用之DRBD + Heartbeat + MySQL

4.4. 数据库同步测试

在10.24.6.4上启动mysql 建立一个名为share_mysql的数据库。

第一步保证10.24.6.4为primary,10.24.6.6为secondary

主从切换挂载

service mysql stop        # 关闭mysql服务

drbdadm secondary r0           # 将10.24.6.4降为备用

umount /dev/drbd0                 # 卸载虚拟硬盘

在drbd02上 

drbdadm primary r0     #将10.24.6.6升为主用

mount /dev/drbd0      # 挂载虚拟硬盘

service mysql start       # 启动数据库

进去mysql中查看是否已有从drbd01同步过来的名为test的数据库。

OK至此测试就完成了。 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/485141d35f97d091e3107252c9aecb52.html