天天看点

Master/Slave知识

1.master上授权给slave

mysql>grant all on *.* to repadmin@'218.6.67.75' identified by 'backup';

mysql>flush privileges;

mysql>use abs;

mysql>create table mysqlslave (status char(8));

mysql>insert into mysqlslave values ('aaaa');

2.shutdown master

mysqladmin -u root shutdown

3.拷贝数据文件

直接把数据文件夹打包拷贝到slave去。

4.修改Master的my.cnf文件,在[mysqld]处增加

master /etc/my.cnf:

log-bin

server-id = 1

sql-bin-update-same

binlog-do-db = abs

5.修改Slave的my.cnf文件

server-id       = 2

master-host     = 218.6.67.68

master-user     = backup

master-password = backup

master-port     = 3306

master-connect-retry    = 60

replicate-wild-do-table= ads.%

6.启动slave

7.启动master

8.测试

向其中的测试表里插入一条记录,如

use ads;

insert into mysqlslave values  ((CURDATE() + 0));

再在slave里查看是否有此记录

9.问题

a)ERROR1062  Duplicate entry

mysql> slave stop;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> slave start;

Use

the value 1 for any SQL statement that does not use AUTO_INCREMENT or

LAST_INSERT_ID(), otherwise you will need to use the value 2.

Statements that use AUTO_INCREMENT or LAST_INSERT_ID() take up 2 events

in the binary log.

b)调试命令

show processlist;

slave stop;

show slave status;

show master status;

flush master;

flush slave;

reset slave;

reset master;

slave start;

set global sql_slave_skip_counter=1;

参考资料

介绍几个管理Replication的命令:

  1. PURGE MASTER LOG

  Replication需要生成大量的二进制文件,用以记录Client在Master上的操作,日积月累,这些文件会占据相当大的空间,可以用PURGE MASTER LOG命令来删除它们。

  mysql> SHOW MASTER LOGS;

  +----------------+

  | Log_name |

  | binary-log.001 |

  | binary-log.002 |

  | binary-log.003 |

  | binary-log.004 |

  4 rows in set (0.02 sec)

  mysql> PURGE MASTER LOGS TO 'binary-log.004';

  之后binary-log.001至binary-log.003三个文件都将被删除。

  2. SQL_SLAVE_SKIP_COUNTER

  如果Replication在Slave上出现错误而停止,一般都期望Slave能忽略这个错误,继续进行同步,而不是重新启动Slave。

  In MySQL 3.23.xx:

  mysql> SET SQL_SLAVE_SKIP_COUNTER=1

  mysql> SLAVE START

  In Versions 4.0.0-4.0.2:

  mysql> SLAVE START SQL_THREAD

  In Version 4.0.3 and beyond:

  mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1

继续阅读