原文:http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
通常要用到的设置,包括了所有的复制设置:
1,master端,必须要确保二进制日志(binary logging),并且配置一个唯一的server ID。binary log是主库往从库发送数据的依据,必不可少。server ID 为1到(232)–1之间的任意整数。在my.cnf 或者my.ini中进行配置如下
[mysqld]配置完成需要 重启mysql
log-bin=mysql-bin
server-id=101
2,slave端,只需要配置一个没有使用过的server-id就好,如下:
[mysqld]3,在master端为slave库创建一个用户,让从库可以连接主库,授予 “REPLICATION_SLAVE”权限,任意账户都可以但为了和其他的需求冲突的需要,还是单独创建一个好:
server-id=102
CREATE USER 'repl'@'%11.11.11.%' IDENTIFIED BY 'slavepass';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%11.11.11.%';4,获取主库binary log 坐标(coordinates)
master库中已存在数据时,如果你想将数据同步到slave库中,必须先停止主库的处理语句(processing statements,主要应该是写入操作),获取坐标然后导出数据,在这期间不能执行写入操作,否则的话导出的数据和主库的状态信息将会不匹配,最后slave库中的数据会不一致。
停止处理语句使用:(注意:退出客户端将会释放lock,所以导完数据之前的时候要保持这个客户端 )
FLUSH TABLES WITH READ LOCK;获取coordinates:
SHOW MASTER STATUS;
记下File和Position的值 然后导出数据,可以用复制数据文件的方法
……
5,数据同步完成后(这时可以关掉主库的客户端了或者执行unlock tables)进入slave库命令行执行
start slave然后设置主库
CHANGE MASTER TOMASTER_HOST='master_host_name',MASTER_USER='replication_user_name',MASTER_PASSWORD='replication_password',MASTER_LOG_FILE='recorded_log_file_name',MASTER_LOG_POS=recorded_log_position;host 是master所在的ip , user 和password就是上面设置repl和slavepass
recorded_log_file_name 和recorded_log_position则是第四步记下的File和Position
如此,设置便完成了