主从数据库配置
Mysql主从分离(读写分离)
要求:官方推荐主从不要超过9台,推荐不超过5台
优点:1、解决web应用系统,数据库出现的性能瓶颈,采用数据库集群的方式来实现查询负载;一个系统中数据库的查询操作比更新操作要多得多,通过多台查询服务器将数据库的查询分担到不同的查询服务器上从而提高查询效率。
- Mysql数据库支持数据库的主从复制功能,使用主数据库进行数据的插入、删除与更新操作,而从数据库则专门用来进行数据查询操作,这样可以将更新操作和查询操作分担到不同的数据库上,从而提高了查询效率。
- 原理如图 一笔盖过
第一步master主数据库配置
1、首先打开 cd /etc/my.cnf 文件
2、其次在[mysqld]下加入
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
(首先为mysql指定server-id为1,后面两步是打开master(是主从数据库的主数据库名称,以下都用master代替)的Binlog功能)
3、然后重启master数据库
4、然后重新进入mysql命令行
输入 show master status;
就可以看到master-bin.000001的二进制文件
5、创建一个角色并为其授权且仅限制主从复制功能,并且限制从库的ip地址
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'119.23.215.77' IDENTIFIED BY ‘mysql’;
以上repl 为用户名 mysql为密码 可以按照自己习惯写,119.23.215.77必须为从库的外网地址,然后使用
flush privileges;
刷新mysql
第二步:从数据库(以下叫slave)的配置
1、修改my.cnf文件
vim /etc/my.cnf
在配置文件中的[mysqld]下面添加
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
(指定server-id,后两步是打开slave的Relaylog功能)
2、然后按照第一步里的方式重启mysql
3、再次进入mysql命令行,输入
change master to master_host=’47.106.8.220’,master_port=3306,master_user=’repl’,master_password=’mysql’,master_log_file=’master-bin.000001’,master_log_pos=0;
47.106.8.220是主库ip 3306端口 repl和mysql是主库授权的时候设置的,master-bin.000001是查看主库二进制文件是的那个文件,0是起始位置,可以随意
4、查看从库状态
show slave status \G;
\G是竖向展示的意思
5、然后退出,重启从库mysql ,教大家一个新方法,先关闭,再启动
/etc/init.d/mysql stop
/etc/init.d/mysql start
6、重新进入数据库,开启从库配置,start slave;
7、查看slave状态,这样send event等待master发送事件就没问题了
8、到这个惊奇的发现,你在主库所做的操作,都会同步到从库上,但是从库的操作不会同步到主库上,因此大家一定要注意在主库上面增删改,在从库上面查;