IT技术博客大学习 共学习 共进步

MySQL运行中被改权限测试

MySQL Life 2016-02-07 14:53:24 浏览 1,283 次

今天一个接到一个朋友求助,说是数据在运行中,数据库的目录被改了权限。如: 数据库目结构如下:

datadir=/data/mysql/mysql3306/data
log-bin=/data/mysql/mysql3306/logs
tmpdir =/data/mysql/mysql3306/tmp

被运维同步执行了:

chown-R root:root/data/mysql/mysql3306

1.构建主从环境

mysql;3306 主
/data/mysql/mysql3306/{data,tmp,logs}
mysql;3307 从
/data/mysql/mysql3307/{data,tmp,logs}

2. 在主的wubx库里创建:

CREATE TABLE `t2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
)

确认复制正常。

3. 把主库的目录权限改成root

chown -R root:root /data/mysql/mysql3306

4. 弄出来大量的写入

for i in `seq(100000); do mysql wubx -e "insert into t2(name) vlaues('golang$i')"; done

5. 观查主库和从库上数据

发现日志没有切换时,数据都可以写入,同步正常。 主库上binlog还可以正常写入。

6. 模拟日拟切换

主库上执行: flush logs;

得到报错:

切换日志错误

从库同步报错:
1595错误
show slave status\G;
show slave status\G;

从这里看出来,从库获取到主库日志切换指令,但主库没能创建出来新的日志,所以造成复制中断。

7.结论
主库上不影响数据写入,但发生日志切换后,不能进行新的日志写入,但没卡住写入。
从库上在主库日志发生切后,能得到新的日志文件名,但不能获到新的日志,所以同步停掉。

8.修复建议:
通过实验说明,主库上的数据是最全的,在后续日志切换失败后,没有影响数据的写入。但数据没有同步到从上。


思考:

这个有点是mysqld的一个bug的感觉了,日志已经无法写入,但数据还可以写入。 很容易造成同步有问题。 对于数据不同步怎么修复。多次给学生们讲过,也能很快的把环境处理好。

Good luck!

建议继续学习

  1. mysql 1045(28000)错误 (阅读 5,484)
  2. 文件明明存在但是file_exists总是返回FALSE (阅读 4,906)
  3. Linux用户、用户组、文件权限学习笔记 (阅读 4,762)
  4. crontab异常,无法自动运行 (阅读 4,446)
  5. linux下如何自动提升权限 (阅读 4,446)
  6. (oracle)11g与10g中alter session权限差异 (阅读 4,385)
  7. ZooKeeper权限控制初探 (阅读 3,663)
  8. IIS写权限利用续以及写权限漏洞来由解释 (阅读 3,003)
  9. mysql的权限信息的存储 (阅读 2,902)
  10. 浅析Windows的访问权限检查机制 (阅读 2,605)