准备两个mysql 放在两台服务器上 ,
修改/etc/my.cnf
主库增加
server-id=1
log-bin=log
#指定可以被复制的数据库名称
binlog-do-db=test01
从库增加
server-id=2
replicate-do-db=test01
创建一个从库用于连接主库进行复制binlog的远程账户
GRANT REPLICATION SLAVE,FILE ON *.* TO '账户'@'从库ip' IDENTIFIED BY '密码';
在mysql5.5之后 从库配置文件my.cnf 中对主库的配置开始不受支持了
例如
master-host=主库ip
master-user=账户
master-password=密码
这种配置方式启动时会报错 , 不能识别master-XXX 的错误
需要用下面的方式配置
CHANGE MASTER TO MASTER_LOG_FILE='log.000001',MASTER_HOST="主库ip", MASTER_PORT=3306, MASTER_USER="远程账户", MASTER_PASSWORD="密码" , MASTER_LOG_POS=823 ;
pos 和log_file 需要在主库中查询 在主库中执行 show master status;
配置完成后 start slave; 在从库中启动 show slave status\G; 查看状态
标记红框位置为yes 代表成功 此时从数据库信息已经同步
可能遇到的问题
主从不能同步:
show slave status;报错:Error xxx dosn't exist
且show slave status\G:
Slave_SQL_Running: NO
Seconds_Behind_Master: NULL
解决方法:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
之后Slave会和Master去同步 主要看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master是否为0,0就是已经同步了
此时在主库中插入后从库自动同步