mysql主从架构实践
优化已上线的系统:读的比较多,系统比较慢,cpu没有超过50%,硬盘没有达到满载的负荷,网络也没有满载,用nginx横向扩展节点的方案无法解决这个问题
加缓存会涉及到成本的增加(开发--测试--上线)
主从复制(风险:数据的一致性)
一、mysql主从同步原理
为什么要使用主从同步?
1.实时灾备,用于故障切换;2.读写负载均衡;3.定时任务专用;4.开发人查看
主从同步带来的问题:1.中间链路中断,数据不一致问题;2.从库只有一个sql Thread
解决方法:1.mysql半同步复制 ; 2.并行复制
二、常用主从同步方案
三、一主多从方案实践
一、配置mysql master 节点my.cnf参数
Binlog_Do_DB = 同步的数据
Binlog_lgnore_DB = 勿略的数据库
mysql > show master status;
mysql > quit;
vim /etc/my.cnf
#需要同步的二进制数据库名:
binlog-do-db=tuling
#不同步的二进制数据库名,如果不设置可以将其注释掉;
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=personalsite
binlog-ignore-db=test
server-id = 1
log-bin=mysql-bin #开启binlog
编写完文件再重启mysql
service mysql restart
配置slave1子节点的信息my.cnf
server-id = 2
log-bin=mysql-slave-bin
replicate-do-db=tuling
replicate-do-db=tuling2
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=personalsite
replicate-ignore-db=test
配置slave2子节点的信息my.cnf
server-id = 3
replicate-do-db=tuling3
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=personalsite
replicate-ignore-db=test
进入slave mysql执行master配置命令
change master to master_host='192.168.0.101', master_user='root',master_password='123456'
进行查看是否配置成功
vim /data/mysql/master.info
启动slave线程 start slave;
显示节点状态
show slave status\G;