Mysql主从同步
数据文件 /var/lib/mysql/
配置文件 /etc/my.conf
日志文件 /var/log/mysql.log
【主库】
停止mysql服务
service mysqld stop
编辑配置文件
vim /etc/my.conf
[mysqld]
##定义binlog的前缀
log_bin=mysql-bin
##定义binlog的模式
bin_log_format=row
##定义唯一值
server-id=130
启动mysql服务
service mysqld start
这时可以在/var/lib/mysql目录看到以mysql-bin开头的文件
【从库】
[mysqld]
server-id=60
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
read_only=1
执行同步
mysql> stop slave;
Mysql > change master to master_host='192.168.101.130', master_port=3306 , master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=154;
mysql> start slave;
===============================================================================================================
binlog日志的模式有三种(默认是row模式)
1 statement模式 基于sql语句,缺点是当有函数假如uuid时,两边的数据不一致
2 row模式 记录数据更新前和更新后的值,缺点是记录的数据量比较大
3 mixed模式 由mysql自动决定采用哪种模式
如何处理主从同步的延时问题
因为是异步写binlog的,所以延时是一定存在的
在应用层写主库时,放在redis中,查询从redis中取,redis中取不到,再从从库中取