IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    MySQL运行中被改权限测试

    OurMySQL发表于 2016-02-07 14:53:18
    love 0

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

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

    被运维同步执行了:

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

    1.构建主从环境

    1
    2
    3
    4
    mysql;3306 主
    /data/mysql/mysql3306/{data,tmp,logs}
    mysql;3307 从
    /data/mysql/mysql3307/{data,tmp,logs}

    2. 在主的wubx库里创建:

    1
    2
    3
    4
    5
    CREATE TABLE `t2` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`id`)
    )

    确认复制正常。

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

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

    4. 弄出来大量的写入

    1
    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!

    抱歉猜想失败,您看看下面的文章有用吗?

    • 2015 年 1 月 11 日 -- MySQL数据库触发器
    • 2012 年 12 月 4 日 -- MySQL数据库性能优化之存储引擎选择
    • 2009 年 4 月 13 日 -- 校内网CTO黄晶讲述网站架构变迁-54chen回忆版
    • 2008 年 11 月 10 日 -- mysql tips 启多个server[端口]
    • 2013 年 8 月 21 日 -- 初窥InnoDB的Memcached插件
    • 2011 年 7 月 22 日 -- “ERROR 1235 (42000): skip-innodb is defined”的误导
    • 2009 年 8 月 11 日 -- source sql文件报错
    • 2010 年 9 月 27 日 -- InnoDB Adaptive Flush
    • 2012 年 12 月 17 日 -- php5.3.8中编译pdo_mysql的艰难历程
    • 2012 年 3 月 25 日 -- MySQL Master-Slave的一个read log event 错误处理


沪ICP备19023445号-2号
友情链接