需要注意的地方:
1、 主服务器(master)、从服务器(slave)的数据库版本不能夸大版本,可以小版本的差异。但是从服务器的mysql版本尽量不要低于master的mysql版本。负责需要在master中加入binlog-checksum = none(由于5.6使用了crc32做binlog的checksum。除了把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、 master的config配置文件中需要制定server-id = 1; log-bin=mysql-bin;或者server_id=1; log_bin=mysql-bin;根据mysql版本而定。server-id = 1;数据库的唯一标示;log-bin=mysql-bin;开启服务器的日志文件,这个必须要。因为数据的同步都是根据日志文件。
4、 slave的config配置文件需要server-id=2;master-host=主服务器的IP;master-user=之前设置的账号;master-password=之前设置的密码;master-port=3306;
5、 slave的Read_Master_Log_Pos必须和当前master同步,假设master的postion在10000,则Read_Master_Log_Pos=10000;Master_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查看日志文件信息