月度归档:2013年05月

JS获取Jason数据失败一例

    在使用image_captcha_refresh刷新captcha模块提供的校验码时,发现无法刷新(原生主题中使用不存在该问题)。经调试,发现是js执行没有成功。image_captcha_refresh.js的代码如下:

Drupal.behaviors.imageCaptchaRefresh = function (context) {
  $('.reload-captcha', context).not('.processed').bind('click', function () {
    $(this).addClass('processed');
    var $form = $(this).parents('form');
    // send post query for getting new captcha data
    var date = new Date();
    var url = this.href + '?' + date.getTime();
    $.get(
      url,
      {},
      function (response) {
        if (response.status == 1) {
          $('.captcha', $form).find('img').attr('src', response.data.url);
          $('input[name=captcha_sid]', $form).val(response.data.sid);
          $('input[name=captcha_token]', $form).val(response.data.token);
        }
        else {
          alert(response.message);
        }
      },
      'json'
    );
    return false;
  });
};

通过firefox中的firebug插件看到,执行这个js后服务端有jason数据的返回,但是在$.get()中,却认为响应没有成功。最后将'json'去掉,才认为成功,但是返回的response为字符串。新增response=eval("("+response+")"); 则可以成功实现验证码的刷新了。
 

MySQL数据库复制配置

    关于MySQL Replication的网络上很多,这里留个记录,免得自己找。下面这个例子是主备(单向复制)的配置,如果要做互为主备(双向复制)的配置,在主机(Master)中添加备机(Slave)的配置,备机中添加主机的配置即可。

1. 在数据库备份机器上安装系统自带的mysql数据库。
 
2. 在主数据库中导出数据
[root@as-1 conf]# mysqldump -uroot -ppassword  –databases m0 m1 > all.sql
 
3. 将allpoc.sql传到备机中,并导入到备份机中
[root@AS-10 ~]# mysql -uroot -ppassword  < all.sql
 
4. 在主备机中创建数据库同步的用户(这里的用户名是repl,密码是repluserpassword)
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY 'repluserpassword';
 
5. 设置主机的mysql配置文件
   编辑 /etc/my.cnf , 在[mysqld] 后添加如下设置:
log-bin = mysql-bin
server-id = 10
 
   注意server_id是必须的,而且唯一。然后重启数据库,并执行 SHOW MASTER STATUS 命令,将看到如下输出:
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 |       98 |              |                  | 
+——————+———-+————–+——————+
1 row in set (0.00 sec)
 
6. 设置备机的mysql配置文件
   编辑 /etc/my.cnf , 在[mysqld] 后添加如下设置:
log_bin = mysql-bin
server_id = 12
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
slave-skip-errors = all
master-host = 10.56.249.233  #主服务器IP地址
master-user = repl  #同步账户名
master-password = repluserpassword #同步帐户密码
master-port = 3306 #主服务器的 TCP/IP 端口号,默认是3306
replicate-wild-do-table = db_pocm0.%
replicate-wild-do-table = db_pocm1.%
 
   注意server_id是必须的,而且唯一的。然后重启数据库,并执行 SHOW SLAVE STATUS 命令,如果看到的输出信息中Slave_IO_Running和Slave_SQL_Running的值为Yes,则表示配置成功。