Mysql主主复制(四)

2015-01-23 22:04:41 · 作者: · 浏览: 18
er-to-master)复制,并可以用来控制AUTO_INCREMENT列的操作。两个变量均可以设置为全局或局部变量,并且假定每个值都可以为1到65,535之间的整数值。将其中一个变量设置为0会使该变量为1。

  这两个变量影响AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset确定AUTO_INCREMENT列值的起点。

  如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。例如:表内已有一些数据,就会用现在已有的最大的自增值做为初始值。

  六、二进制日志清除

  主同步服务器产生的二进制日志会占据大量的磁盘空间,应定期删除过期的bin-log。

  A、通过PURGE MASTER LOGS删除

  如果您有一个在用的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是停止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

  要清理日志,需按照以下步骤:

  1、在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
  2、使用SHOW MASTER LOGS获得主服务器上的一系列日志。
  3、在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
  4、制作您将要删除的所有日志的备份。(建议备份)
  5、清理所有的日志,但是不包括目标日志。

  PURGE 语法

PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’

  用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。

  BEFORE变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。MASTER和BINARY是同义词。

  例如:

?View Code BASH
1
2
3
4
5
6
7
8
9
#删除binlog.000002之前的而不包含binlog.000002
 
mysql> PURGE MASTER LOGS TO 'binlog.000002';
 
#删除2011-05-28 1:35:00之前的
mysql> PURGE MASTER LOGS BEFORE '2011-05-28 1:35:00';
 
#清除3天前的binlog
mysql> PURGE MASTER LOGS BEFORE DATE_SUB(NOW( ), INTERVAL 3 DAY);

  B、设置expire-logs-days参数
  
  缺省expire-logs-days为30天。这里设为7天,可根据自己情况调整。

?View Code BASH
1
2
[mysqld]  
expire-logs-days = 7

  七、用于控制主、从服务器的SQL语句

  A、用于控制主服务器的SQL语句

  PURGE MASTER LOGS

  用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。

  RESET MASTER

  可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个新的二进制日志文件。

  SET SQL_LOG_BIN

  如果客户端使用一个有SUPER权限的账户连接,则可以禁用或启用当前连接的二进制日志记录。如果客户端没有此权限,则语句被拒绝,并伴随有错误。

  SHOW BINLOG EVENTS

  用于在二进制日志中显示事件。如果您不指定’log_name’,则显示第一个二进制日志。

  SHOW MASTER LOGS

  用于列出服务器中的二进制日志文件。

  SHOW MASTER STATUS
  
  用于提供主服务器二进制日志文件的状态信息。

  SHOW SLAVE HOSTS

  用于显示当前使用主服务器注册的复制从属服务器的清单。

  B、用于控制从服务器的SQL语句

  CHANGE MASTER TO
  
  可以更改从属服务器用于与主服务器进行连接和通讯的参数。

  LOAD DATA FROM MASTER
  
  用于对主服务器进行快照,并拷贝到从属服务器上。

  LOAD TABLE tbl_name FROM MASTER

  用于把表的拷贝从主服务器转移到从属服务器。

  MASTER_POS_WAIT()

  这实际上是一个函数,而不是一个语句。它被用于确认,从属服务器已读取并执行了到达主服务器二进制日志的给定位置。

  RESET SLAVE

  用于让从属服务器忘记其在主服务器的二进制日志中的复制位置。

  SET GLOBAL SQL_SLAVE_SKIP_COUNTER

  从主服务器中跳过后面的n个事件。要复原由语句导致的复制中止,这是有用的。

  SHOW SLAVE STATUS

  用于提供有关从属服务器线程的关键参数的信息。

  START SLAVE

  用于启动从属服务器线程

  STOP SLAVE

  用于中止从属服务器线程

  以上内容摘自MySQL官方手册,具体用法详见:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#reset-master

  八、主从复制如何提高可靠性

  主从单向复制,从服务器只是实时的保存了主服务器的一个副本。当主服务器发生故障时,可以切换到从服务器继续做查询,但不能更新。

  如果采用双向复制,即两台mysql服务器即作为主服务器,又作为从服务器。那么两者都可以执行更新操作并能实现负载均衡,当一方出现故障时,另一方不受影响。但是,除非能保证任何更新操作顺序都是安全的,否则双向复制会导致失败。