MySQL复制的基本概念和实现

时间:2024-08-17 15:04:44

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;