这本身也许不是一个discuz的问题,但DZ没有注意到这个情况也是不太好的。 情况是这样的:
我们有一个论坛,bbs和ucenter是在一个数据库里,但有一天发现ucenter的相关表的数据没有同步到从库上。 环境:5.5.5-10.0.11-MariaDB-log,CentOS 6.5, DiscuzX 2.0。 经过一翻折腾得出以下结果:
这个问题只存在于表的存储引擎是MyISAM的情况。
不能同步,是由于主库没有记录bin日志造成的。 重现
连接到mysql服务器,不要用use database命令,而直接执行:insert `db_name`.`table_name`,这样,数据库是不会记录该条操作日志的。
另外,我们数据库配置了binlog-do-db和binlog-ignore-db,如果没有配置这个,而选择所有的数据库都记录日志,问题也许不会出现。 对于discuz的解决方法
修改代码:uc_client/model/base.php文件的init_db方法,把:
$this->db->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, '', UC_DBCHARSET, UC_DBCONNECT, UC_DBTABLEPRE);
改为
$this->db->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, UC_DBCHARSET, UC_DBCONNECT, UC_DBTABLEPRE); 我看了一下,这个问题在最新的版本里还是存在的。
对于DZ为什么要这么做,可能是有原因的,要修改的朋友请注意一下。
|