主从同步
原理:
主库在进行着增删改操作时会产生一个二进制日志,并写入二进制日志中。
从库的I/O线程会请求二进制日志,二进制日接收到请求后会把日志拷贝到中继日志中。
当sql线程检测到中继日志中收到新的日志时,会执行当中的sql语句同步到从库中。
windows下mysql的配置
主库配置:
在my.ini中添加
port = 3306 //端口号
server_id = 1 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
log_bin = mysql-bin //[必须]启用二进制日志
binlog-do-db = testcreate // 需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,如果不写,那么默认同步所有的数据库;
binlog-ignore-db = mysql //不需要同步的数据库;
log_bin_trust_function_creators = TRUE //若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步
从库配置:
在my.ini中添加
从数据库的话只需要配置server-id,binlog-do-db,binlog-ignore-db即可。
#端口号
port = 3307
#[必须]服务器唯一ID,默认是1,一般取IP最后一段
server_id = 2
binlog-do-db = park
!!!!!!!!切记确认auto.cnf中的server—uuid不能相同!!!!!!!!!!!!!!!!!!!!
配置过后我们启动主库,在主库中完成操作:
#创建同步账号
grant replication slave on *.* to 'my_slave'@'master的ip地址' identified by '123456';
#刷新一下权限表
FLUSH PRIVILEGES;
#查看同步账号的状态。可以查看file,position,db
show master status;
在从库中完成操作:
#先运行
change master to
master_host='127.0.0.1', //主库ip地址
MASTER_PORT=3306, //主库端口号
master_user='my_slave', //主库定义的用户名
master_password='123456', //主库定义的密码
master_log_file='mysql-bin.000002', //主库查到的file
master_log_pos=492 //主库查到的position
#启动
start slave;
#关闭
stop slave
#查看状态
show slave status;
就完成了主从同步。