mysql 主从复制

来源:互联网 发布:大专女生知乎 编辑:程序博客网 时间:2024/06/05 22:33

mysql 主从复制

(注:本文只讲述如何配置mysql主从复制,并且的两个新安装安全一样的mysql)

首先,有两台服务器装好mysql

首先配置master

server_id=1log-bin=mysql-bin
server_id:指定唯一的server_id

log-bin:二进制变更日志


重启mysql;执行SHOW MASTER STATUS

显示如下


然后配置slave

log-bin=mysql-binserver_id=2relay_log=mysql-relay-binlog_slave_updates=1read_only=1
server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。


设置slave的master:

 CHANGE MASTER TO MASTER_HOST='192.168.252.129',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;

SHOW SLAVE STATUS语句查看slave的设置是否正确


Slave_IO_State为空; Slave_IO_RunningSlave_SQL_Running是No,表明slave还没有开始复制过程

开始执行复制:START SLAVE

结束复制:STOP SLAVE

(注意:出现如下错误,则修改mysql下的data文件夹中的auto.cnf中的server-uuid,因为server-uuid不能相同)

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.