MySQL主从复制
解决的问题
- 数据分布
- 负载均衡
- 备份
- 高可用性和容错性
实现原理
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个服务器充当从服务器
MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等)
每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新
实现步骤
Master将改变记录到二进制日志(binary log)中
Slave将Master的binary log events拷贝到它的中继日志(relay log)
Slave重做中继日志中的事件,将改变反应它自己的数据
实现原理
MySQL双主热备
解决的问题
- Master挂掉不会影响业务
- 实现心跳,其中一台master挂掉,立即切换到另一台master
实现原理
Mycat
相关介绍
基于阿里开源的Cobar产品而研发,继承了Cobar的稳定性、可靠性、优秀的架构和性能
一个彻底开源的,面向企业应用开发的大数据库集群
结合传统数据库和新型分布式数据库的新一代企业级数据库产品
一个新颖的数据库中间件产品
主要特性
支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守MySQL原生协议,跨语言,跨平台,跨数据库通用中间件代理
基于心跳的自动故障切换,支持读写分离,支持MySQL主从等
步骤
- 主服务器开启binary log,vim /etc/my.conf
log-bin=mysql-bin
binlog_format=mixed
server-id=1
expire_logs_days=10
early-plugin-load=""
双主热备配置
log-bin=mysql-bin
binlog_format=mixed
server-id=1
relay_log=mysql-relay-bin
log_slave_updates=1
expire_logs_days=10
early-plugin-load=""
- 重启mysql,然后进入mysql,查看主服务器状态
show master status
reset master
- 配置从机,vim /etc/my.conf,再重启mysql
#log-bin=mysql-bin
#binlog_format=mixed
server-id=2
relay_log=mysql-relay-bin
expire_logs_days=10
early-plugin-load=""
双主热备配置
log-bin=mysql-bin
binlog_format=mixed
server-id=2
relay_log=mysql-relay-bin
log_slave_updates=1
expire_logs_days=10
early-plugin-load=""
- 给master添加用户slave1,允许slave1访问服务器的数据库
grant replication slave on *.* to slave1@从机IP identified by '123456';
- 从机监听master
# 停止slave
stop slave;
# 监听
change master to \
master_host = '主机IP'
master_port = 3306 \
master_user = 'slave' \
master_password = '123456' \
master_log_file='mysql-bin.000001' \
master_log_pos = 452;
# 开启slave
start slave;
# 查看slave状态
show slave status