原理就是:从服务器到主服务器上来共享主服务器的日志文件
1、首先准备2个数据库
2、128这个数据库作为主数据库
修改my.cnf文件,加入(log-bin=mysql-bin binlog_format=mixed)
3、重启mysql (service mysqld restart)
4、创建从连接主的账号(在主端)
GRANT replication slave ON *.* TO 'slave'@'%' identified by '123';
5、查看配置状态(show master status;)
此处需要记住:file和Position(从的时候会用到)
6、修改从服务器的my.cnf
m_s_test 是我要同步的数据库
6、重启数据库(service mysqld restart)
7、关闭slave(stop slave;) 一定要先关闭
8、配置从连接主(从数据库)
change master to master_host='192.168.3.128',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=438;
9、启动slave
10、查看连接信息(show slave status;)【navicat中查看的】
11、测试,创建m_s_test 数据库,129自动同步
------------------------------------------------------------------------------------------------------------------------------------------------------------
虽然说实现了主从同步。但是如果从修改数据了,主是没法改变的。
如示例:
如果主(128)主动修改数据
(129)是可以同步过来的
那么如果从(129)修改数据
主(128)数据库
数据是没有变化的
解决办法就是从不能有写的权限(只能读,这样它不能修改数据了)
创建一个只读账号
GRANT Select ON *.* TO reader@"%" IDENTIFIED BY '123';
之后在去重新配置主从连接(上面的第5步和第8步)