首先声明一下,我这里是单指两个mysql服务器之间如何配置主从同步。并没有在代码层去实现。
操作系统为linux
我们假定
主库IP为:192.168.82.228
从库IP为:192.168.82.196
主库操作:
打开mysql 配置文件my.cnf
在[mysqld]标识下配置
server-id=1 标记server-id
log-bin=master-bin 打开master二进制日志
log-bin-index=master-bin.index 打开master二进制日志索引
配置完成之后重启mysql
service mysqld restart
show master status;进行查看master配置情况
把看到的file,position进行记录,后面配置“从”要用到
假设我们记录的file是master-bin.000001
position是624240
创建repl用户并赋予他权限
create user repl;
grant replication slave on *.* to 'repl'@'192.168.82.196' identified by 'root';
账号 地址 密码
刷新权限
flush privileges;
从库操作:
vim /etc/my.cnf打开my.cnf
在[mysqld]标识下配置
这里配置里面可能还有其他的配置server-id。如果有的话就删除
server-id=2 这里不能和上面的id一样
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
配置完成重启。另一种重启方式
/etc/init.d/mysql stop
/etc/init.d/mysql start
change master to master_host='192.168.82.228',master_port=3306,master_user='repl',master_password='root'
,master_log_file='master-bin.000001',master_log_pos=0;
这里写0是为了覆盖前面624240的数据,方便同步。写624240也可以
开启主从跟踪
start slave;
查看“从”状态
show slave status \G;
如果没报错信息,并且Slave_IO_Running:yes
Slave_SQL_Running:yes
这两个上面都显示了正确数据
这两个一定要为yes。
就算成功了
测试:
在主库里创建一个数据库:zyx
create database zyx;
从库里没有这个zyx,但是此时跟着创建成功,即测试成功。
也可以删除试一试能否一致。
备注:别在从库写数据,因为这样会造成主从库不一致,进而引发冲突。