概述
复制类型
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