MySQL的复制的概念是完成水平扩展的架构
MySQL性能方面的扩展方式有scale on(向上扩展,垂直扩展)
scale out(向外扩展,水平扩展)
MySQL保存二进制日志:
statement:基于语句模式
row:基于行模式
mixed:混合模式
MySQL复制默认为异步工作模式
SLAVE:IO thread:向主服务请求二进制日志中的事件
SQL thread:从中继日志读取事件并在本地执行
MASTER:binlog dump:将IO thread请求的事件发送给对方
工作架构:
从服务器:有且只能有一个主服务器
MariaDB-10:支持多主模型,多源复制(multi-source replication)
一主多从:
读写分离:主从模型下,让前端分发器能识别读/写,并且按需调度至目标主机
读写分离的中间件有amoba:变形虫
mysql-proxy:不稳定
双主模型:master-master
1.必须设定双方的的自动增长属性,以避免冲突
auto_increment_increment = #
设定起始值
auto_increment_offset = 2
设定步长
2.数据不一致:
功用:均衡读请求:写请求双方一样
示例:主从复制的配置
版本
1.双方的MySQL要一致
2.如果不一致:主的要低于从的
从哪儿开始复制:
1.都从0开始
2.主服务器已经运行一段时间,并且存在不小的数据集,把主服务器备份,然后再从服务器恢复,从主服务器上备份处的位置开始复制
配置过程:
主服务器:
1.改server-id
2.启用二进制日志
3.创建有复制权限的账号
grant replication slave,replication client on *.* to 'uername'@'hostname' identified by 'password'
flush privileges
从服务器:
1.给server-id
2.启用中继日志
relay-log = /mydata/relaylogs/slave-bin
3.连接主服务器
连接主服务器命令:change master to
| MASTER_HOST = 'host_name' 主服务器地址
| MASTER_USER = 'user_name' 以那个用户的身份复制
| MASTER_PASSWORD = 'password'密码
| MASTER_PORT = port_num端口
4.启动复制线程
START SLAVE;