免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: scc_166
打印 上一主题 下一主题

求助: 数据库资料被修改,在binlog却找不到修改记录 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-11-27 15:57 |只看该作者
目前对于cmd的连接,对于明确指定tee client.log后可以在client.log中看到记录

如果不指定tee client.log的话在client.log中就看不到

客户端直接使用的mysql-client 命令行方式

论坛徽章:
0
22 [报告]
发表于 2009-11-27 16:08 |只看该作者
# ps auxww|grep mysql
mysql 51924  0.0  0.1  3464  1364  p0  I     4:01PM   0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/usr/local/db/my.cnf

[mysql]
tee=/usr/local/db/client.log

# pwd
/usr/local/db

# ll client.log
-rwxrwxr-x  1 mysql  wheel  0 Nov 27 15:15 client.log


# /usr/local/etc/rc.d/mysql-server restart
Stopping mysql.
Waiting for PIDS: 52029.
Starting mysql.


# mysql -u root -p test
Enter password: xxx


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select * from t1;
Empty set (0.00 sec)

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into t1 values (10),(20),(30);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t1;
+------+
| id   |
+------+
|   10 |
|   20 |
|   30 |
+------+
3 rows in set (0.00 sec)


最后检查client.log

# ll client.log
-rwxrwxr-x  1 mysql  wheel  0 Nov 27 15:15 client.log


大小还是0,没有变化


下面测试另一种方法:

mysql> tee client.log
Logging to file 'client.log'

mysql> select * from t1;
+------+
| id   |
+------+
|   10 |
|   20 |
|   30 |
+------+
3 rows in set (0.00 sec)

mysql> exit
Bye


# ll client.log
-rwxrwxr-x  1 mysql  wheel  126 Nov 27 16:09 client.log

这次有数据了

# cat client.log
mysql> select * from t1;
+------+
| id   |
+------+
|   10 |
|   20 |
|   30 |
+------+
3 rows in set (0.00 sec)

mysql> exit

论坛徽章:
0
23 [报告]
发表于 2009-11-27 16:13 |只看该作者
只能通过tee filename的方式才能记录数据。

另外修改/usr/local/etc/rc.d/mysql-server中的
command_args="--tee=client.log --defaults-extra-file=${mysql_dbdir}/my.cnf --user=${mysql_user} -
-datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args} > /dev/null 2>&1 &"

在前面加上--tee=client.log会无法启动mysql


mysql.err中提示未知变量

091127 15:20:34 [ERROR] /usr/local/libexec/mysqld: unknown variable 'tee=client.log'
091127 15:20:34 [ERROR] Aborting


这里出错是因为是在服务端的确是没有这个选项的

还是无法记录  

[ 本帖最后由 scc_166 于 2009-11-27 16:25 编辑 ]

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
24 [报告]
发表于 2009-11-27 17:05 |只看该作者
[mysql]
tee=/usr/local/db/client.log


这种方式应该是可以的
你主要检查这种方式
不过对性能影响很大

论坛徽章:
0
25 [报告]
发表于 2009-11-27 19:42 |只看该作者
谢谢 版主ruochen

上面的我测试过了,无效。至少我测试得到的结果是无效。

另外在访问授权时使用的是name@'localhost'这样的,不太明白为什么还有人可以远程访问服务器的3306

难道说一定要skip-network

论坛徽章:
0
26 [报告]
发表于 2009-11-27 20:23 |只看该作者
这个不记binlog场景很多,  如会话强制不记录:
set sql_log_bin = 0;
update table set filed= value;
看到你的配置里有 binlog_format=mixed, update语句特殊的话日志记录的是ROW方式, 你是grep不出来的

打开全日志看看谁干的, 你的版本支持不重启mysqld启用general log.

[ 本帖最后由 phphp 于 2009-11-27 20:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP