主从复制
MySQL主从复制原理
在单节点主机出现硬件或主机系统故障时可能导致数据丢失,为防止此类情况的发生而对数据进行冗余的备份。
- 备份的从节点不对系统提供服务,仅仅负责同步master节点的数据;
- 主从结构部署完成后,不能在slave节点执行任何CUID(更、删、插、改)操作,否则会导致数据不一致甚至同步失败。
MySQL主从架构部署
前提条件:主机已安装mysql
my.cnf配置文件
[mysqld]
# 节点唯一标识
server_id=1000
# 开启binlog二进制日志功能(关键),值作为日志文件前缀可以随便取
log-bin=master-bin
# master的binlog日志有变化时告诉从节点要立即同步更新
log-slave-updates
# 让从节点跳过执行错误的sql,不同步
slave-skip-errors=all
# 从节点可以不配置,这里配置了以后可以作为另一个主从架构的master节点
[mysqld]
# 节点唯一标识
server_id=1001
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=slave-bin
# master的binlog日志有变化时告诉从节点要立即同步更新
log-slave-updates
# 让从节点跳过执行错误的sql,不同步
slave-skip-errors=all
2、重启两个MySQL服务,登录MySQL客户端,验证主从节点的server_id配置是否生效
mysql > show variables like 'server_id';
3、在master主节点上查询binlog文件名和位置
mysql > show master status;
4、根据上一步查到的两个信息,在slave从节点上设置主节点参数并绑定
change master to master_host='192.168.0.2',master_user='root',master_password='123456',master_log_file='master-bin.000001',master_port=3306,master_log_pos=155;
5、在slave节点上启动并查看主从同步状态
# 开启从节点
mysql > start slave;
# # 查看同步状态,\G:格式化结果
mysql> show slave status\G;
若看到Slave_IO_Running和Slave_SQL_Running两个都为Yes即配置主从复制成功!
注意:主从同步需要两台机MySQL的服务端口能够正常通信,配置不成功的大多是防火墙问题。