MySQL 主从复制

1:

主机授权:(%代表所有主机皆可以访问)

GRANT REPLICATION SLAVE ON *.*  TO 'slave_username'@'%' IDENTIFIED BY 'slave_password';

 

主机配置:

#为1到2的三二次方–1间的正整数(即:1-4294967295)

server-id = 1

#开启二进制日志

log-bin = bin.log

#二进制日志格式:,可省略,默认为statement,也可改为mixed(混合模式)

binlog_format=mixed

# 只生成test数据库的二进制日志

binlog-do-db=test

# 不生成忽略某数据库的二进制日志

#binlog-ignore-db=db_name

# 查询主机状态

show master status;

 

2:

 

从机配置:

#从机ID

server-id=3

#开启二进制日志

log-bin = bin.log

#要同步的db

replicate-do-db=test

# 忽略的db

#replicate-ignore-db=ignore_db

# 从机只读模式

#read-only=1

 

在从机mysql下执行以下SQL:

STOP SLAVE; -- 停止从机复制线程

其中MASTER_LOG_FILE和MASTER_LOG_POS 要和 主机的状态一致(在主机上执行:show master status;的结果):执行后在数据目录生成master.info,注意:将以下配置放到my.ini中在5.1.7后就不支持了:

 

CHANGE MASTER TO MASTER_HOST='192.168.6.170',MASTER_PORT=3304,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='bin_log.000004',MASTER_LOG_POS=120;

START SLAVE; -- 开始从机复制线程

 

STOP SLAVE; -- 查看复制状态

 

 

3:常见错误:

<1>Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

 

<1>解决方法:

到mysql的数据目录(即:my.ini中配置的datadir)中,将auto.cnf文件删除(此文件在windows中后缀名被隐藏了,显示为auto文件),然后重新启动mysql,auto.cnf文件会自动生成,参考:http://www.chriscalender.com/?p=1332

 

<2>:\MySQL Server 5.5 主从同步报错unknown variable 'master-host=192.168.8.111'

<2>解决办法:在从库上执行如下命令;

change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';

 

 

4: 

主服务器SQL:

 

SHOW MASTER STATUS;

 

SHOW VARIABLES LIKE 'server_id';

 

my.ini:

log-bin="E:/Soft/EnvSoft/MySQL_3304/Log/binlogs/bin_log.log"

binlog-do-db=test

server-id=6170

 

5:从服务器SQL:

 

STOP SLAVE;

 

CHANGE MASTER TO MASTER_HOST='192.168.6.170',MASTER_PORT=3304,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='bin_log.000001',MASTER_LOG_POS=712;

 

START SLAVE;

 

SHOW SLAVE STATUS;

 

my.ini:

server-id=6171

replicate-do-db=test

 

你可能感兴趣的:(mysql)