代码改变世界

MySQL主从同步总结

2015-08-06 11:04  梦的初始值  阅读(215)  评论(0)    收藏  举报

需要注意的地方:

1、 主服务器(master)、从服务器(slave)的数据库版本不能夸大版本,可以小版本的差异。但是从服务器的mysql版本尽量不要低于mastermysql版本。负责需要在master中加入binlog-checksum = none(由于5.6使用了crc32binlogchecksum。除了把master的设置从crc32改到non)一般这样的错误代码:Slave can not handle replication events with the checksum that master is configured to log

2、 master需要开启一个远程访问的用户grant all on *.* to jack@192.168.88.99 identified by "123";  (all代表拥有所有权限,可自行设置,第一个*代表某个数据库,*则是所有数据。第二个*代表某个数据库下的某个表,*代表所有表 jack为用户名,可以自行取名,192.168.88.99访问ip ,如果想所有的ip都可以访问,则需要设置成’%’。123则是你的密码,密码不建议太长,也不建议太短,因为数据库会把长的密码自动截取,短的密码在主从同步中会有错误信息);

3、 masterconfig配置文件中需要制定server-id = 1; log-bin=mysql-bin;或者server_id=1; log_bin=mysql-bin;根据mysql版本而定。server-id = 1;数据库的唯一标示;log-bin=mysql-bin;开启服务器的日志文件,这个必须要。因为数据的同步都是根据日志文件。

4、 slaveconfig配置文件需要server-id=2;master-host=主服务器的IP;master-user=之前设置的账号;master-password=之前设置的密码;master-port=3306;

5、 slaveRead_Master_Log_Pos必须和当前master同步,假设masterpostion10000,则Read_Master_Log_Pos=10000Master_Log_File必须和当前的master日志文件同步

待研究问题:

1、 假设master当机了,现在启用slave进行数据的读写,那怎么样才能让主服务器更新这些数据。(目前想到的办法就是把从服务的日志文件导出,然后导入带主服务器,前提是master必须重新reset master以保证开启新的日志文件)。

2、 当slave意外有写入操作时,主从同步会不再进行。

一般的操作:

reset master  清空所有日志文件,默认到mysql-bin.000001

show master status  查看当前的日志文件信息

stop slave 停止主从同步

start slave 开始主从同步

change master to ……. 设置从服务器的配置信息

show slave status\G 查看从服务器的配置信息

flush privileges 刷新权限  当你设置了信息的用户,会修改了用户权限,必须刷新权限

flush logs  刷新日志文件,相当于生成新的日志文件

show master logs查看日志文件信息