MySQL高可用--主从复制与读写分离
一、Mysql高可用概念
二、MySQL主从复制原理
集群目的,减轻单台服务器压力
三、MySQL主从复制配置
实际操作mysql服务器集群,主从复制的过程
master 192.168.230.128
slave01 192.168.230.132
slave02 192.168.230.133
mysql主从复制步骤:
1.配置主从节点信息(server_id=)
2.设置从服务器读取账号权限
3.同步
Linux环境下的配置文件:/etc/my.cnf
进入/etc目录查看my.cnf文件
修改主(master)服务器
vi /etc/my.cnf
server_id=128 ###服务器id
log-bin=mysql-bin ###开启日志文件,作用,主服务器做写操作时,都会在服务器里面生成日志文件,让从服务器拿到二进制执行文件进行同步。
查看:
重启mysql:service mysqld restart
登陆主服务器的mysql,查询服务器server_id 看下是否配置好,如果查询的值和配置的值不一致,说明没有配好。
show variables like 'server_id'
登陆主服务器的mysql,查询master的状态 ,出现下面的文件说明配置成功
show master status;
修改从(slave01)服务器
vim /etc/my.cnf
server_id=132 ###server_id不能有重复,表示唯一log-bin-mysql-bin ###开启日志文件
binlog_do_db=test ###表示同步的数据库,这里同步的是test数据库
重启mysql:service mysqld restart
主服务器给从服务器账号授权
###在主服务器新建一个用户
CREATE USER 'mysync'@'%' IDENTIFIED BY '123456';
###赋予“REPLICATION SLAVE”的权限 一般不用root账号
GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY '123456';
从服务器进行数据同步
###先关闭之前同步的
stop slave;
###授权
change master to master_host='192.168.230.128',master_user='mysync',master_password='123456',
master_log_file='mysql-bin.000003',master_log_pos=106;
###开始同步
start slave;
###检查从服务器复制功能是否成功
show slave status;
Slave_IO_Running Yes //此状态必须是yes
Slave_SQL_Running Yes //此状态必须是yes 说明同步成功
测试同步效果:在master服务器中test数据库创建test001表,从服务器test数据库自动生成test001表!
修改master主服务器test001表Id值,从服务器自动同步,至此,主从复制配置完成。
什么是读写分离
在数据库集群架构中,让主库负责处理事务性查询,而从库只负责select查询,让两者分工明确达到提高数据库整体读写能力。MySQL没有自带读写分离,必须依靠第三方中间件或者使用Spring实现读写分离。
目前从服务器有写的权限,如果修改从服务器的值,主服务器是不会同步的。使用第三方中间件管理。
五、MySQL读写分离
1)使用中间件方式
2)使用Spring实现读写分离