一、MySQL简单复制相关概念:
SLAVE端线程:
MASTER端:
MariaDB-10:支持多主模型,多源复制(multi-source replication)
此时需要一个调度器,来分离读写请求到主从服务器上。所谓读写分离
amoeba,mysql-proxy可以实现读写分离调度 读服务器进行负载均衡,使用一致性哈希算法,虚拟节点来分配访问。
2.双主构架
例如一个表包含: Age, Salary
如果一个人的年龄为31而工资2900,执行以下操作
A: update t1 set Salary=salary+1000 WHERE Age>=30;
B: update t1 set Age=Age-3 WHERE Salary < 3000;
会导致:
服务器A Salary 变为3900,年龄31
服务器B Salary 变为年龄28, 工资290
长时间运行后,主从可能不同步。 因为主服务器可以写并发,但是从服务器的同步只能是但进程。
从服务器落后,有时候需要认为设计,来做备份。
master –> slave/master —> slave
中间服务器需要开启二进制日志和中继日志
多级复制可以降低主服务器产生mysqldump的压力,把压力分摊给下一集。 但是可能使得数据不能更好跟新。
可以把中间服务器的读写引擎改为black hole,来降低本地压力,只生成二进制日志作为中继服务器(relay server),然后把二进制日志发送给下游服务器
根据时间,来却换不同的主。
通常用于在不同服务器之间做数据收集。
每台服务器都是下一台服务器的主服务器同时也是上一台服务器的从服务器,使得每台服务器都是主从,形成传递环。
每台服务器的修改都会同步到环上任何一台服务器中。
server_id 不能相同。
潜在问题: 第一台服务器上未提交的事务,切换时将被回滚。
GTID(GLOBAL TRANSACTION id): 保证在特定服务器上的事务是完整的,如果执行不成功就回滚。
7.高级应用架构:
读写分离+负载均衡: 读直到从服务器上面读,写只在主服务器上面写。 需要在读写分离器之前加memocached
amoeba, mysql proxy