说明:
✧ mysql主从同步的原理就是使用mysql的二进制文件记录事务:
master库的修改时会记录到bin文件中,然后master将bin文件同步到slave库,slave库会根据同步过来的bin文件执行相应操作
✧ 本文介绍的仅仅是主从同步,也就是说对外提供服务的数据库其实只有master库,salve只是作为一个备份库,并不是负载均衡模式;
因为mysql主从同步是需要指定谁是master的:如果master挂了,然后slave提供服务,期间salve库又被修改了,一旦master恢复,一样是会被master覆盖
✧ 一般的做法是:利用amoeba实现读写分离,主从数据库同时提供查询服务;这样master挂了,至少查询服务是可用的;有兴趣的可以研究下
主从同步配置:
✧ 主从数据库的my.cnf均需要开启bin日志文件:
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days= 5
binlog_cache_size = 2M
|
✧ 主从相关配置(主库和从库都配置):注意server-id主从配置成各自的id
##### master slave proterties ###
server-id = 113306
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
relay-log=mysql-relay-bin
relay-log-index=mysql-relay-bin
slave-skip-errors=all
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
|
✧ 登录主数据库,在主数据库上检查:show master status \G
新建用于主从同步的用户:repuser
grant replication slave,file on *.* to 'repuser'@'%' identified by '123456';
flush privileges --刷新权限
✧ 登录从数据库:stop slave;
master_log_file 可以在master库中show master status看到;这里的意思是表示从master的哪个二进制文件开始同步
因此在配置主从同步时,先确保主数据库没有任何写的操作,直到主从同步配置结束
stop slave;
change master to master_host='192.168.10.72',master_user='repuser',master_password='123456',master_log_file='mysql-bin.000022', master_log_pos=1237;
start slave;
show slave status\G;