在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

基于mysql+mycat如何搭建稳定高可用集群负载均衡主备复制读写分离操作

108次阅读
没有评论

共计 7619 个字符,预计需要花费 20 分钟才能阅读完成。

行业资讯    
数据库    
MySQL 数据库    
基于 mysql+mycat 如何搭建稳定高可用集群负载均衡主备复制读写分离操作

自动写代码机器人,免费开通

这篇文章主要介绍基于 mysql+mycat 如何搭建稳定高可用集群负载均衡主备复制读写分离操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

主要思路

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

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

测试环境

MYSQL 版本:Server version: 5.5.53,到官网可以下载 WINDWOS 安装包。

注意:确保 mysql 版本为 5.5 以后,以前版本主备同步配置方式不同。

linux 实现思路类似,修改 my.cnf 即可。

A 主 mysql。192.168.110.1:3306, 用户 root,密码 root。操作系统:win7 x64,内存:4g

  安装路径:C:\Program Files\MySQL\MySQL Server 5.5\bin

B 备 mysql。192.168.110.2:3306, 用户 root,密码 root。操作系统:win2003 x64,内存:1g

  安装路径:C:\Program Files\MySQL\MySQL Server 5.5\bin

A 主、B 备的 mysql 中创建 sync_test 数据库

实现 mysql 主备复制

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

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

配置 A 主 mysql

1)修改 my.ini。需要在 log-bin= C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log 的相关位置创建 log 目录,以及 mysql-bin.log 文件。

[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=sync_test # 需要备份数据库,多个写多行
binlog-ignore-db=mysql # 不需要备份的数据库,多个写多行 

2)允许 MYSQL 远程访问

# 登录 mysql console
进入 %home%/bin,执行 mysql -uroot -proot
#授权。允许 root 用户,从 192.168.110.* 的 IP 范围   远程访问 A 主 mysql
mysql GRANT ALL PRIVILEGES ON *.* TO  root @ 192.168.110.*  IDENTIFIED BY  root  WITH GRANT OPTION;
#生效。该操作很重要!mysql FLUSH PRIVILEGES;

3)重启 A 主 mysql 数据库

进入 %home%/bin,执行 mysql -uroot -proot

mysql net stop mysql;
mysql net start mysql;

4)查看主 mysql 日志状态

mysql  show master status\G;
*************************** 1. row ***************************
 File: mysql-bin.000003
 Position: 107
 Binlog_Do_DB: sync_test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
ERROR:
No query specified

配置 B 备 mysql

1)修改 my.ini。需要在 log-bin= C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log 的相关位置创建 log 目录,以及 mysql-bin.log 文件。

[mysqld]
# add for sycn test
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=sync_test # 只复制某个库
replicate-ignore-db=mysql # 不复制某个库 

2)重启 B 备 mysql 数据库

进入 %home%/bin,执行 mysql -uroot -proot

mysql net stop mysql;
mysql net start mysql;

3)配置 B 备数据库的数据来源,核实高亮处的状态是否正常。

mysql change master to master_host= 192.168.110.1 ,master_port= 3306 ,master_user= root ,master_password= root 
mysql slave start;
mysql show slave status\G;
*************************** 1. row ***************************
 Slave_IO_State: Waiting for master to send even
 Master_Host: 192.168.110.1
 Master_User: root
 Master_Port: 3306
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000003
 Read_Master_Log_Pos: 107
 Relay_Log_File: wjt-1c698d8a032-relay-bin.00001
 Relay_Log_Pos: 253
 Relay_Master_Log_File: mysql-bin.000003
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 Replicate_Do_DB: sync_test
 Replicate_Ignore_DB: mysql
 Replicate_Do_Table:
 Replicate_Ignore_Table:
 Replicate_Wild_Do_Table:
 Replicate_Wild_Ignore_Table:
 Last_Errno: 0
 Last_Error:
 Skip_Counter: 0
 Exec_Master_Log_Pos: 107
 Relay_Log_Space: 565
 Until_Condition: None
 Until_Log_File:
 Until_Log_Pos: 0
 Master_SSL_Allowed: No
 Master_SSL_CA_File:
 Master_SSL_CA_Path:
 Master_SSL_Cert:
 Master_SSL_Cipher:
 Master_SSL_Key:
 Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
 Last_IO_Errno: 0
 Last_IO_Error:
 Last_SQL_Errno: 0
 Last_SQL_Error:
 Replicate_Ignore_Server_Ids:
 Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR:
No query specified

验证同步配置结果

A 主 mysql:使用 navicat 工具,在 sync_test 库中创建 sync_table 表,并添加一些数据

B 备 mysql:使用 navicat 工具,查看 sync_test 库,可以看到 sync_table 表和数据已被同步

实现读写分离

主要思路:使用 mycat 中间件,转发 sql 指令到后端 mysql 节点。mycat 不负责数据库同步。

安装 mycat

mycat 是什么?可以认为它是一个数据库访问中间件,但更像 f5、ngnix 等产品,具备访问路由、多表分表分片操作等功能。总之很强大。

下载:http://www.mycat.io/,本文使用的是:1.6-RELEASE

解压 Mycat-server-1.6-RELEASE-20161012170031-win.tar,到 D:\dev-bin\mycat 目录

确保 java 环境为 jdk1.7 以上,否则 mycat 将不支持

安装完毕

配置 mycat

1)server.xml。配置访问用户及权限。修改高亮处信息,其中 admin、user 为访问 mycat 的用户,TESTDB 为 mycat 虚拟的数据库,供上层应用访问。

user name= admin 
  property name= password admin /property 
  property name= schemas TESTDB /property 
  !--  表级  DML  权限设置  -- 
  !-- 
  privileges check= false 
  schema name= TESTDB  dml= 0110   
  table name= tb01  dml= 0000 /table 
  table name= tb02  dml= 1111 /table 
  /schema 
  /privileges  
 -- 
  /user 
  user name= user 
  property name= password user /property 
  property name= schemas TESTDB /property 
  property name= readOnly true /property 
  /user

2)schema.xml。这部分不太好理解,精简了一下,主要分 schema、dataNode、dataHost 三个主要配置。

scheme 节点定义了 mycat 的虚拟数据库为 TESTDB,balance= 1:write 操作路由到 A 机,读操作路由到 B。

?xml version= 1.0 ? 
 !DOCTYPE mycat:schema SYSTEM  schema.dtd 
 mycat:schema xmlns:mycat= http://io.mycat/ 
  schema name= TESTDB  checkSQLschema= false  sqlMaxLimit= 100  dataNode= dn1 
  !--  这里不配置,代表所有的表分片到 dn1 节点 -- 
  /schema 
  dataNode name= dn1  dataHost= localhost1  database= sync_test  / 
  dataHost name= localhost1  maxCon= 1000  minCon= 10  balance= 1 
 writeType= 0  dbType= mysql  dbDriver= native  switchType= 1  slaveThreshold= 100 
  heartbeat select user() /heartbeat 
  !-- can have multi write hosts -- 
  writeHost host= hostM1  url= 192.168.110.1:3306  user= root  password= root 
  !-- can have multi read hosts -- 
  readHost host= hostS2  url= 192.168.110.2:3306  user= root  password= root  / 
  /writeHost 
  /dataHost 
 /mycat:schema

启动 mycat

1)启动 mycat

D:\dev-bin\mycat\bin startup_nowrap.bat

后台信息如下:

D:\dev-bin\mycat\bin startup_nowrap.bat
D:\dev-bin\mycat\bin REM check JAVA_HOME java
D:\dev-bin\mycat\bin set JAVA_CMD=C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java
D:\dev-bin\mycat\bin if C:\Program Files (x86)\Java\jdk1.7.0_13 == goto noJavaHome
D:\dev-bin\mycat\bin if exist C:\Program Files (x86)\Java\jdk1.7.0_13\bin\java.exe goto mainEntry
D:\dev-bin\mycat\bin REM set HOME_DIR
D:\dev-bin\mycat\bin set CURR_DIR=D:\dev-bin\mycat\bin
D:\dev-bin\mycat\bin cd ..
D:\dev-bin\mycat set MYCAT_HOME=D:\dev-bin\mycat
D:\dev-bin\mycat cd D:\dev-bin\mycat\bin
# 如果启动失败,请修改 D:\dev-bin\mycat\bin\startup_nowrap.bat 文件中的以下参数。默认占用内存为 2G
D:\dev-bin\mycat\bin C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java -server -Xms512m -Xmx512m -XX:MaxPermSize=64M  -XX:+AggressiveOpts -XX:MaxDirectMemorySize=768m -DMYCAT_HOME=D:\
p ..\conf;..\lib\* io.mycat.MycatStartup

MyCAT Server startup successfully. see logs in logs/mycat.log  #启动成功将看到如下信息。

注意:如日志中出现 192.168.110.2 not connected 等信息,请允许 B 备 mysql 远程访问。

# 登录 mysql console
进入 %home%/bin,执行 mysql -uroot -proot
#授权。允许 root 用户,从 192.168.110.* 的 IP 范围   远程访问 Bmysql
mysql GRANT ALL PRIVILEGES ON *.* TO  root @ 192.168.110.*  IDENTIFIED BY  root  WITH GRANT OPTION;
#生效, 该操作很重要!mysql FLUSH PRIVILEGES;

测试读写分离

验证是否同步

使用 navicat 连接 mycat,操作方式和连接物理 mysql 库一致,用户 admin,密码 admin,端口 8066

在 TESTDB 虚拟库中,创建新表 test2,增加一些数据

查看 A 节点、B 节点数据已同步

关闭 B 备 mysql 的同步,验证读写分离

mysql  slave stop;
Query OK, 0 rows affected (0.00 sec)
mysql  show slave status\G;
*************************** 1. row ***************************
 Slave_IO_State:
 Master_Host: 192.168.110.1
 Master_User: root
 Master_Port: 3306
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000003
 Read_Master_Log_Pos: 478
 Relay_Log_File: wjt-1c698d8a032-relay-bin.00001
 Relay_Log_Pos: 624
 Relay_Master_Log_File: mysql-bin.000003
 Slave_IO_Running: No
 Slave_SQL_Running: No
 Replicate_Do_DB: sync_test
 Replicate_Ignore_DB: mysql
 Replicate_Do_Table:
 Replicate_Ignore_Table:
 Replicate_Wild_Do_Table:
 Replicate_Wild_Ignore_Table:
 Last_Errno: 0
 Last_Error:
 Skip_Counter: 0
 Exec_Master_Log_Pos: 478
 Relay_Log_Space: 936
 Until_Condition: None
 Until_Log_File:
 Until_Log_Pos: 0
 Master_SSL_Allowed: No
 Master_SSL_CA_File:
 Master_SSL_CA_Path:
 Master_SSL_Cert:
 Master_SSL_Cipher:
 Master_SSL_Key:
 Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
 Last_IO_Errno: 0
 Last_IO_Error:
 Last_SQL_Errno: 0
 Last_SQL_Error:
 Replicate_Ignore_Server_Ids:
 Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR:
No query specified

3)使用 navicat 连接 mycat,操作方式和连接物理 mysql 库一致,用户 admin,密码 admin,端口 8066

连接成功后,将看到 TESTDB 数据库和 test 数据表

在 test 表中添加一些数据,保存

执行 select * from test 查看 test 操作,将看到数据未更新

原因:mycat 将查询 sq 路由到 B,因此读取的结果集不一致。

最后,mycat 使用可以参见官网的权威指南学习。双主双备架构待后续更新。

以上是“基于 mysql+mycat 如何搭建稳定高可用集群负载均衡主备复制读写分离操作”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计7619字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 日韩中文字幕视频在线 | 极品吹潮视频大喷潮tv | 91欧美激情一区二区三区成人 | 国产手机在线αⅴ片无码观看 | 亚洲精品日韩专区在线观看 | 国产精品爽爽久久久久久蜜臀 | 亚洲欧洲国产综合 | 国产a∨丝袜美腿丝袜 | 精品性高朝久久久久久久 | 色欲色欲天天天www亚洲伊 | 午夜影视在线观看 | 久久精品国产亚洲av麻豆不卡 | 亚洲不卡一区二区三区在线 | 一级做a级爰片性色毛片视频 | 久久99国产精品二区 | 一级片aaa| 国产精品无码无在线观看 | 中国亚洲女人69内射少妇 | 男人久久天堂 | 丰满人妻熟妇乱又伦精品视频三 | 国产精品久线观看视频 | 一本色道久久88亚洲精品综合 | 中文字幕一区精品欧美 | 日韩亚洲中字无码一区二区三区 | 狠狠精品干练久久久无码中文字幕 | 男人插女人在线观看 | 三级理论手机在线观看视频 | 久久精品亚洲日本波多野结衣 | 韩国毛片 免费 | 国产成人精品高清不卡在线 | 在线观看免费精品国产 | 国产片一级毛片视频 | 一群黑人大战亚裔女在线播放 | 日日噜噜夜夜爽爽 | 免费一级毛片视频 | 国内精品999| 人妻熟妇乱又伦精品视频app | 91一区二区午夜免费福利网站 | 伊人久久影院 | 亚洲一区二区三区高清 | 亚洲av成人片色在线观看高潮 |