mysql主从复制+mycat读写分离

数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境。

主要思路

简单说,实现mysql主备复制-->利用mycat实现负载均衡。

比较了常用的读写分离方式,推荐mycat,社区活跃,性能稳定。

主要思路:A主mysql开启日志,B备mysql读取操作日志,同步执行。

一般为主备同步,主主同步不推荐使用。

 

一、主数据库master修改:

1.修改mysql配置

找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/my.cnf,在[mysqld]部分插入如下两行

[mysqld]
server-id=1 #主机标示,整数
port=3306    
log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"  #确保此文件可写
read-only=0   #主机,读写都可以
binlog-do-db=db1   #需要备份数据库,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行

修改完重启mysql

2.查看master状态,记录二进制文件名(mysql-bin.000024)和位置(522):

二、从服务器slave修改: 

1.修改mysql配置

同样找到my.cnf配置文件,添加server-id:

[mysqld]
# add for db1
server-id=2                       #从机标识
log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此文件可写
#master-host="192.168.110.1" #主机Ip
#master-user=root                  #数据库访问用户名
#master-pass=root                     #数据库访问密码
#master-port=3306          #主机端口
#master-connect-retry=60     #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db=db1     #只复制某个库
replicate-ignore-db=mysql     #不复制某个库

2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='182.92.172.80',
    ->     MASTER_USER='rep1',
    ->     MASTER_PASSWORD='slavepass',
    ->     MASTER_LOG_FILE='mysql-bin.000024',
    ->     MASTER_LOG_POS=522;

3.启动slave同步进程:

mysql>start slave;

4.查看slave状态:

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

至此,mysql主从复制配置完毕。现在开始测试结果。

在主mysql 中的表添加一条记录,从数据库也会有一条记录。

 

mycat读写分离

配置mycat:

server.xml:(主要是关联scheme与用户名,密码)

schema.xml:主要配置db1-schema 的读写信息

启动没有cat:

./startup_nowrap.sh

 注意:

因为mycat默认需要内存比较大,这里可以稍作修改:(startup_nowrap.sh)

 测试读写分离:

可以采用开启(start/stop slave;)从数据库读取 和不开启从数据库读取,发现读取是从数据库,写入走的是master.

参考文档:

https://www.cnblogs.com/zhongshiqiang/p/5968768.html

https://www.cnblogs.com/gl-developer/p/6170423.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mycat 是一个开源的分布式数据库中间件,可以实现 MySQL读写分离、分库分表、数据分片等功能,也可以管理 MySQL主从复制。 具体来说,Mycat 可以通过以下几个步骤来管理 MySQL主从复制: 1. 在 Mycat 的配置文件中,配置 MySQL 数据源的主从关系。可以通过配置 `dataHost` 和 `dataNode` 来实现主从复制的管理。 2. 在 Mycat 的配置文件中,配置读写分离规则,以确保读操作访问从库,写操作访问主库。 3. 在 MySQL 的主库上创建一个用于复制的用户,并且给予该用户复制权限。例如,可以使用以下命令创建一个名为 `repl` 的用户: ``` CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; ``` 4. 在 MySQL 的主库上启用二进制日志,并且设置一个唯一的服务器 ID。例如,可以在 `my.cnf` 文件中添加以下配置: ``` server-id = 1 log-bin = mysql-bin ``` 5. 在 MySQL 的从库上配置复制参数,包括主库的连接信息、从库的服务器 ID、以及需要复制的二进制日志文件和位置。例如,可以使用以下命令配置从库: ``` CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; ``` 6. 在 Mycat 中启动主从复制功能,并且监控复制状态。可以使用 Mycat 的命令行工具或者 Web 界面来启动复制,以及查看复制状态。 以上是 Mycat 管理 MySQL 主从复制的基本步骤,具体实现方式可能因版本和配置不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值