Rootop 服务器运维与web架构

2013-08-25
发表者 Venus
暂无评论

MySQL主从复制数据不一致的办法部分原因

1.网络的延迟

由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。

2.主从两台机器的负载不一致

由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。

3.max_allowed_packet设置不一致

主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。

4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。

5.mysql异常宕机情况下,如果未设置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出现binlog或者relaylog文件出现损坏,导致主从不一致。

6.mysql本身的bug引起的主从不同步。

7.版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库上面不支持该功能。

以上就是常见的一些主从不同步的情况。或许还有其他的一些不同步的情况,请说出你所遇到的主从不一致的情况。

基于以上情况,先保证max_allowed_packet、自增键开始点和增长点设置一致,再者牺牲部分性能在主上面开启sync_binlog,对于采用innodb的库,推荐配置下面的内容

代码如下 复制代码

1、innodb_flush_logs_at_trx_commit = 1
2、innodb-support_xa = 1 # Mysql 5.0 以上
3、innodb_safe_binlog      # Mysql 4.0

同时在从数据库上面推荐加入下面两个参数

1、skip_slave_start
2、read_only

通过第三方工具校验一致性及同步参考:https://www.rootop.org/pages/3300.html

2013-08-23
发表者 Venus
暂无评论

windows下利用7-zip打包压缩为tar.gz

下载地址:http://7-zip.org/   国内可能有时无法访问,可以从国内网站上下载。

压缩文件夹:

安装完成后,7-zip集成到右键菜单里。

比如test文件夹,在test上 右键-> 7-zip -> add to archive -> Archive format: 选为tar ,其它不变,开始打包,打包完文件名变为test.tar
在 test.tar 上 右键 -> 7-zip -> add to archive -> Archive format: 选为gzip,其它不变,开始压缩,压缩完文件名变为 test.tar.gz
这样就可以往linux服务器传了。

2013-08-23
发表者 Venus
暂无评论

awk ‘{print $2}’ 详解

awk 是一种文本处理工具,强大性不多讲。

print $2 是以空格做为分隔符,打印第二列(域)的内容。

比如一个文件 test 中包含:

nq male hello

venus female hello

要求打印出1、3列内容。

[root@svn tmp]# awk ‘{print $1,$3}’ test
nq hello
venus hello
[root@svn tmp]#

2013-08-22
发表者 Venus
暂无评论

shell获取当前ip

      利用shell获取ip地址

[root@svn ~]# ifconfig | grep “inet addr” | grep -v “127.0.0.1” | awk ‘{print $2}’ | cut -d: -f2
192.168.1.3
[root@svn ~]#

     grep “inet addr”  //取得含有 inet addr  行值

     grep -v “127.0.0.1”  //排除 本地回环 行值

     awk ‘{print $2}’  //利用awk取得第二列“参数”值 

 [root@svn ~]# ifconfig | grep “inet addr” | grep -v “127.0.0.1”
 inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0

     cut -d: -f2  //用cut分割,以 冒号 “:”为分割字符,打印第二组数据。

2013-08-21
发表者 Venus
暂无评论

mysql占用cpu超过100%

处理大量数据时mysql占用cpu率极高,造成服务器压力,最大平均负载达到60。服务器down。

方法之一,修改mysql配置文件参数:

query_cache_size= 256M

tmp_table_size = 512M

//tmp_table_size ,临时表缓存用于存放查询时产生的临时表,如果数据量大而tmp_table_size不够用那么Mysql会将临时表存到磁盘上导致性能下降。