主从
- 结构
- 一主多从
- 主从复制
- master
- 线程
- 由slave的线程1触发时创建
- 将BinLog文件发送给slave的线程1
- slave
- 线程1
- 由start slave触发创建
- 接收BinLog到本地文件
- 线程2
- 执行BinLog
- 问题
- 一个slave只有一个同步进程
- 改为多线程同步:对在线系统地稳定性影响不确定
- 在slave上建立另外N个slave(作为transfer),将要同步的表拆分到这N个slave,然后导入到原slave
- 数据延迟
- mysql cluster
- 数据在内存中,不够可靠
- load data file和load local data file
- innodb和MyISAM在同步上的差异(加载load.txt文件)
- innodb
(导入完后再同步)
1.Master:开始执行load操作
2.Master:操作完成
3.Master:向Slave同步load.txt文件
4.Slave:开始接收文件,生成tmp_dir/load.txt文件
5.Slave:接收完成
6.Slave:读取文件,执行load操作
- MyISAM
(边导入边同步)
1.Master:开始执行load操作
2.Master:向Slave同步load.txt文件(load多少,同步多少)
3.Slave:开始接收文件,生成tmp_dir/load.txt文件
4.Master:load操作完成(同步文件操作也完成)
5.Slave:生成完整的load.txt文件
6.Slave:读取文件,执行load操作
-
异常
- innodb
- 中断load操作
- 回滚
- 相关参数
- max_binlog_cache_size 能使用的最大内存大小
- 执行多语句事务时,若超过阀值,可能报错
- max_binlog_size Binlog最大值
- 一般为512MB、1GB(超过1GB会有问题)
- 不严格
- MyISAM
- 中断load操作
- Slave:使用提示的load命令,将传过来的load文件,在Slave上执行
- Slave:设置以
跳过错误
set global sql_slave_skip_counter=1;
- Slave:开启同步(how?)