mysql分布式数据库实现(一)

MySQL分布式数据库实现

本篇文章实验内容的运行环境基于Windows7,采用bin-log实现主从数据库的数据同步,由数据库中间件mycat实现负载均衡与读写分离。文章将围绕着mysql主从配置,mycat安装使用进行,数据库集群与mycat实现数据库读写分离,负载均衡等功能。
系统环境:Windows7 32位
JDK: Version :1.8
Mysql:Version : 5.5.53
Mycat: Vesion :1.6.0

一 、MySQL主从配置

环境部署:

mysql_master : 127.0.0.1:3311
mysql_slave     :127.0.0.1:3310

1.主数据库配置
#主从配置
#文件名mysql-bin-1
log_bin=E:\mysql\MySQL_Master\MySQL\mysql-bin-1 
#服务ID,用于区分服务,范围1~2^32-1
server_id=11 

#MySQL 磁盘写入策略以及数据安全性
#每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去
innodb_flush_log_at_trx_commit=1 

#当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
sync_binlog=1
#同步数据库
binlog-do-db=mycat_pbm 
binlog-do-db=mycat_ura

#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED #混合模式复制
expire_logs_days=7 #binlog过期清理时间
max_binlog_size=20M #binlog每个日志文件大小

2.从数据库配置

#主从配置
log_bin=E:\mysql\MySQL_Slave\MySQL\mysql-bin-2 #文件名mysql-bin-2
server_id=10 #服务ID,用于区分服务,范围1~2^32-1

#MySQL 磁盘写入策略以及数据安全性
#每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去
innodb_flush_log_at_trx_commit=1 

#当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
sync_binlog=1
binlog-do-db=mycat_pbm 
binlog-do-db=mycat_ura

#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED #混合模式复制
expire_logs_days=7 #binlog过期清理时间
max_binlog_size=20M #binlog每个日志文件大小

3.设置主数据库

进入mysql_master
mysql  -uroot -proot -P3311

创建访问用户
用户名:backup
密码:root
grant replication slave on *.* to 'backup'@'%' identified by 'root';

查看master状态
show master status
mysql分布式数据库实现(一)_第1张图片
image.png

4.设置从数据库

进入mysql_slave
mysql -uroot -proot -P3310

设置主数据库
change master to 
master_host='127.0.0.1',
master_port=3311,
master_user='backup',
master_password='root',
master_log_file='mysql-bin-1.000001',
master_log_pos=988;

启动备份
start slave
查看备份情况
show slave status\G
mysql分布式数据库实现(一)_第2张图片
image.png

自此,我们的数据库主从集群搭建完成。目前实现的master数据修改后会同步到slave上,这就可以实现简单的主从数据同步了,下面,我们将通过Mycat来帮住我们实现负载均衡。读写分离。

二、MyCat的简单使用

1.配置Schema


        
        
    
        select user()
        
        
            
        
        
    


balance属性

balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上 
balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡 
balance=”2”,所有读操作都随机的在 writeHost、 readhost 上分发。 
balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力

writeType 属性

负载均衡类型,目前的取值有 3 种: 
writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost, 重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties 
writeType=”1”,所有写操作都随机的发送到配置的 writeHost



 
 

2.配置Server

配置用户名,密码


        123456
        PBM_DB
    
        
        
        
    

    
        user
        PBM_DB
        true
    

3.启动mycat

./mycat.bat start 

如果出现异常,可以在log文件夹内查阅wrapper.log

三、测试

1.测试mycat链接

链接至mycat,对PBM_DB库中pbm_area 表进行插入工作

insert into pbm_area values('10','北极','7');

链接至mysql_server ,查询所有数据

select * from pbm_area
mysql分布式数据库实现(一)_第3张图片
image.png

链接至mysql_slave,查询所有数据

select * from pbm_area
mysql分布式数据库实现(一)_第4张图片
image.png

这说明我们的主从数据同步正常,mycat可以对我们数据库进行读写。

2.测试mycat读写分离

修改mysql_slave

update pbm_area set name='北极啊啊啊' where id ='10'

从mycat中查询所有数据

select * from pbm_area where id ='10'
mysql分布式数据库实现(一)_第5张图片
image.png

mysql分布式数据库实现(一)_第6张图片
image.png

我们发现该条数据的name字段在北极与北极啊啊啊,之间跳动变化,这说明数据读取是在master与slave直接交换的,说明我们的mycat负载均衡实现了。

你可能感兴趣的:(mysql分布式数据库实现(一))