mysql 主从架构详解

概述

复制类型

1 基于语句的复制:  在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。    
2 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍
3 混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制

解决的问题

1 数据分布 (Data distribution )
2 负载平衡(load balancing)
3 备份(Backups) 
4 高可用性和容错行 High availability and failover 

如何工作

1 master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
2 slave将master的binary log events拷贝到它的中继日志(relay log);
3 slave重做中继日志中的事件,将改变反映它自己的数据。

主从配置

mysql主数据库

创建账号

# 授权
GRANT REPLICATION SLAVE  ON *.* TO ‘root‘@‘192.168.1.%‘IDENTIFIED BY ‘root‘;

# 刷新
flush privileges;

# 查询master的状态
show master status;

master配置

server-id=1 #master ID值
log-bin=mysql-bin #二进制日志

参数说明

1.【必须】主服务器唯一ID
server-id =1
2.【必须】启用二进制日志
log-bin=自己本地的路径/mysqlbin
3.【可选】启动错误日志
log-err=自己本地的路径/mysqlerr
4.【可选】根目录
basedir="自己本地路径"
5.【可选】临时目录
tmpdir="自己的本地路劲"
6.【可选】数据目录
datadir="自己本地路径/Data/"
7.read-only=0
主机,读写都可以
8.【可选】设置不要复制的数据库
binlog-lgnore-db=mysql
9.【可选】设置需要复制的数据
binlog-do-db=需要复制的主数据库名字

重启master

service mysql restart
SHOW MASTER STATUS

slave配置

log_bin           = mysql-bin       #二进制日志
server_id         = 2               #slave ID值
relay_log         = mysql-relay-bin #中继日志
log_slave_updates = 1
read_only         = 1

启动slave

CHANGE MASTER TO MASTER_HOST=‘192.168.1.100‘,MASTER_USER=‘root‘,MASTER_PASSWORD=‘root‘,MASTER_LOG_FILE=‘mysql-bin.000001‘,MASTER_LOG_POS=1;

# 启动从服务器复制功能
start slave;

# 查看从机状态
show slave status\G
# 下面两个参数都是YES,则说明主从配置成功!

# Slave_IO_Running:Yes
# Slave_SQL_Running:Yes

mysql 主从架构详解

上一篇:C语言小贴士之switch分支语句


下一篇:[C++学习历程]基础部分 C++中的函数学习