一、分析Mysql单点存在的问题
- 小公司用单体服务,单体数据库,大公司考虑性能、考虑安全性、容灾性
- Mysql复制拓扑结构使用场景: update、delete、insert select
- 横向扩展(Scale-Out):指在多个从库之间进行读负载均衡,以提高读性能。所有数据变更在主库上执行,把之前在主库上的读负载剥离出来,以承载更多的写请求,另外,如果读负载越来越大,可以通过扩展从库来提高读性能
- 数据安全性:形成多个备份库,减少在极端场景丢失造成损失,对于主库来说,从库有多个,所以如果在从库上执行备份,对只读应用的可用性影响就要小很多(从库的复制机制本身也支持断点续传)。也就是说,在执行备份操作时,选择使用从库而不使用主库是一个更好的替代方案,这样可以尽量减少对主库性能以及数据安全性的影响
常用复制模式:一主多从、MHA+多节点集群 MHA Manage、MHA node
二、Mysql主从数据同步搭建
第一步,在主节点和从节点装好mysql
这一步不多说,懂的都懂!
登录master账户,新创建一个账号,81.71.147.62代表slave地址,mll655就是名字
GRANT REPLICATION SLAVE ON *.* to 'mll655'@'81.71.147.62' identified by '密码尽可能复杂';
接下来在主节点找到mysql的配置文件/etc/my.cnf,增加以下配置
先进入
vim /etc/my.cnf
好像是随便加在哪里都可以,博主加在了中间,具体你们都可以尝试一下
# 开启binlog log-bin=mysql-bin server-id=100 # 需要同步的数据库,如果不配置则同步全部数据库 binlog-do-db=android # binlog日志保留的天数,清除超过20天的日志 # 防止日志文件过大,导致磁盘空间不足 expire-logs-days=20
刷新系统权限表的配置
FLUSH PRIVILEGES;
重启master节点
systemctl restart mysqld
查看主节点的名字,和pos,下面有用,具体是什么如下图
show master status;
到这里,主节点的事情干完啦!
进入到slave mysql后,再输入以下命令:
CHANGE MASTER TO MASTER_HOST='主节点IP地址', MASTER_USER='上面主节点名字', MASTER_PASSWORD='上面的密码', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=154, master_port=3306;
还剩两个,相信很清晰,就是上面主节点我箭头标出来的两个!
启动slave服务
start slave; show slave status;
结果如下图,就是成功啦
本文作者为DBC,转载请注明。