proxy: 192.168.75.133
master: 192.168.75.134
slave: 192.168.75.135
# 下载mysql-proxy:
wget http://mirrors.163.com/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux- el6-x86-64bit.tar.gz
# 解压:
tar xf mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz
mv mysql-proxy-0.8.4-linux-el6-x86-64bit /usr/local/mysql-proxy
# 配置环境变量:
[root@node3 src]# echo "export PATH=/usr/local/mysql-proxy/bin:$PATH" >
/etc/profile.d/mysql-proxy.sh
[root@node3 src]# . /etc/profile.d/mysql-proxy.sh # 启动MYSQL-Proxy中间件:
[root@node3 src]# useradd -r mysql-proxy
[root@node3 src]# mysql-proxy --daemon --log-level=debug --user=mysql-proxy -- keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend- addresses="192.168.75.134:3306" --proxy-read-only-backend- addresses="192.168.75.135:3306" --proxy-lua-script="/usr/local/mysql- proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin- username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql- proxy/lib/mysql-proxy/lua/admin.lua"
# 查看端口/日志:
[root@node3 src]# netstat -ntlp |grep 40
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN
1348/mysql-proxy
tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN
1348/mysql-proxy
# Mysql-Proxy的相关参数详解如下:
--help-all :获取全部帮助信息;
--proxy-address=host:port :代理服务监听的地址和端口,默认为4040;
--admin-address=host:port :管理模块监听的地址和端口,默认为4041;
--proxy-backend-addresses=host:port :后端mysql服务器的地址和端口;
--proxy-read-only-backend-addresses=host:port :后端只读mysql服务器的地址和端口;
--proxy-lua-script=file_name :完成mysql代理功能的Lua脚本;
--daemon :以守护进程模式启动mysql-proxy;
--keepalive :在mysql-proxy崩溃时尝试重启之;
--log-file=/path/to/log_file_name :日志文件名称;
--log-level=level :日志级别;
--log-use-syslog :基于syslog记录日志;
--plugins=plugin :在mysql-proxy启动时加载的插件;
--user=user_name :运行mysql-proxy进程的用户;
--defaults-file=/path/to/conf_file_name :默认使用的配置文件路径,其配置段使用[mysql-
proxy]标识;
--proxy-skip-profiling :禁用profile;
--pid-file=/path/to/pid_file_name :进程文件名;
systemctl start mariadb
grant all on *.* to "mysql-proxy"@"192.168.75.133" identified by "123456";
mysql -h192.168.75.133 -umysql-proxy -p123456 -P4040 -e "create database lutixia charset utf8;"
在4041管理端口,再次查看:
# 先在从库选择lutixia数据库(因为主从关系,在主库创建的lutixia会同步至从库),创建表格,并插入数据:
MariaDB [(none)]> use lutixia Database changed
MariaDB [lutixia]> create table t1( id int, name varchar(20) ); Query OK, 0 rows affected (0.00 sec)
MariaDB [lutixia]> insert t1 values(1,"xiaoming"); Query OK, 1 row affected (0.00 sec)
通过4040代理端口查询数据,该sql语句会走slave,于是可以激活slave状态:
# 多执行几次!
[root@node4 ~]# mysql -h192.168.75.133 -umysql-proxy -p123456 -P4040 -e "select
* from lutixia.t1;"
+------+----------+
| id | name |
+------+----------+
| 1 | xiaoming |
+------+----------+
在4041管理端口,再次查看:
mysql> select * from backends;
+-------------+---------------------+-------+------+------+-------------------+
| backend_ndx | address | state | type | uuid | connected_clients |
+-------------+---------------------+-------+------+------+-------------------+
| 1 | 192.168.75.134:3306 | up | rw | NULL | 0 |
| 2 | 192.168.75.135:3306 | up | ro | NULL | 0 |
+-------------+---------------------+-------+------+------+-------------------+
2 rows in set (0.00 sec)
mycat:192.168.75.133
master:192.168.75.134
slave:192.168.75.135
# 下载mycat:
wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042- linux.tar.gz
# 解压:
tar xf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local/
# 安装java-jdk:
yum install java-1.8.0-openjdk -y
# 配置mycat环境变量:
echo "export PATH=/usr/local/mycat/bin:$PATH" > /etc/profile.d/mycat.sh
. /etc/profile.d/mycat.sh
# 在主库执行授权信息,从库会自动同步:
grant all on *.* to "mycat-proxy"@"192.168.75.133" identified by "123456";
# 配置server.xml
# 默认管理用户,可读可写:
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">lutixiadb</property>
...
</user>
# 只读用户:
<user name="user">
<property name="password">user</property>
<property name="schemas">lutixiadb</property>
<property name="readOnly">true</property>
</user>
# 配置schema.xml
# 设置逻辑库以及数据库节点
<schema name="lutixiadb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
# 配置数据库节点对应的后端真实的数据库:
<dataNode name="dn1" dataHost="localhost1" database="students" />
# 配置读写库以及均衡:
<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.75.134:3306" user="mycat-
proxy" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="192.168.75.135:3306" user="mycat-proxy" password="123456" />
</writeHost>
</dataHost>
mycat start
mysql -umycat -p123456 -P8066 -h127.0.0.1 MySQL [(none)]> show databases;
+-----------+
| DATABASE |
+-----------+
| lutixiadb |
+-----------+
1 row in set (0.00 sec)
# 可以在后端主库创建一个表,继续查询表测试:
MySQL [(none)]> use lutixiadb;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [lutixiadb]> show tables;
+--------------------+
| Tables_in_students |
+--------------------+
| t1 |
+--------------------+
1 row in set (0.01 sec)
# 在从库插入数据,继续查询:
MySQL [lutixiadb]> select * from t1;
+------+----------+
| id | name |
+------+----------+
| 1 | xiaowang |
+------+----------+
1 rows in set (0.00 sec)
在主库查不到数据,通过代理可以查到,即可验证读写分离成功。
MySQL [lutixiadb]> show tables;
ERROR 1184 (HY000): Invalid DataSource:0
可能是后端节点出现了问题,也有可能是代理端无法连上后端节点导致: 可以先在代理端直接用授权用户名和密码登录后端数据库测试连接问题:
[root@node3 conf]# mysql -umycat-proxy -h192.168.75.134 -p123456
ERROR 1129 (HY000): Host 'node3' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
# 可以看到因为多次错误,代理端服务器被锁定了,所以也会出现上面的报错:
在后端主库执行如下命令: mysqladmin flush-hosts 再次测试,一般问题就能解决。
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
最近在工作中,看到一些新手测试同学,对接口测试存在很多疑问,甚至包括一些从事软件测试3,5年的同学,在聊到接口时,也是一知半解;今天借着这个机会,对接口测试做个实战教学,顺便总结一下经验,分享给大家。计划拆分成4个模块跟大家做一个分享,(接口测试、接口基础知识、接口自动化、接口进阶)感兴趣的小伙伴记得关注,希望对你的日常工作和求职面试,带来一些帮助。注:文章较长有5000多字,希望小伙伴们认真看完,当然有些内容对小白同学不是太友好,如果你需要详细了解其中的一些概念或者名词,请在文章之后留言,后续我将针对大家的疑问,整理输出一些大家感兴趣的文章。随着开发模式的迭代更新,前后端分离已不是新的概念,
文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据
我需要在一台没有安装Excel的Linux服务器上读写(->转换)Excel文件。对于Python,存在http://www.python-excel.org/.Ruby有类似的东西吗?可能不需要处理最新的Office格式。只需旧的xls文件就足够了。 最佳答案 我同意Gonzih的观点,并且我经常使用roo。它允许我使用模板文件进行读取、写入和写入。该项目在他们的site上有很好的记录。.我总是使用类似的东西:input=Excel.new(path)output=Array.newinput.default_sheet=inpu
我的表单通过POST接收数据。当我执行putsparams时,我可以看到:{"id"=>"123","id2"=>"456"}现在是命令:putsparams['id']#=>123putsparams[:id]#=>123params['id']='999'putsparams#=>{"id"=>"999","id2"=>"456"}但是当我这样做的时候:params[:id]='888'putsparams我明白了{"id"=>"999","id2"=>"456",:id=>"888"}在IRB中它工作正常:params#=>{"id2"=>"2","id"=>"1"}params
目录FIFO一.自定义同步FIFO1.1代码设计1.2Testbech1.3行为仿真***学习位宽计算函数$clog2()***$clog2()系统函数使用,可以不关注***分布式资源或者BLOCKBRAM二.异步FIFO2.1在FIFO判满的时候有两种方式:2.2异步FIFO为什么要使用格雷码2.2.1介绍格雷码2.2.2格雷码在异步FIFO中的应用2.2.2格雷码判满2.4二进制与格雷码之间的转换2.4.1二进制码转换为格雷码的方法2.4.2格雷码转换为二进制码的方法2.3实现框图2.5实现及仿真代码2.6仿真图验证2.7结论FIFO 这篇更多的是记录FIFO学习,参考了众多优秀的文章,
运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid
一、概述在之前的一篇博文中,记录了AT24C01、AT24C02芯片的读写驱动,先将之前的相关文章include一下:1.IIC驱动:4位数码管显示模块TM1637芯片C语言驱动程序2.AT24C01/AT24C02读写:AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序本文记录分享AT24C04、AT24C08、AT24C16芯片的单片机C语言读写驱动程序。二、芯片对比介绍型号容量bit容量byte页数字节/页器件寻址位可寻址器件数WordAddress位数/字节数备注AT24C044k5123216A2A149/1WordAddress使用P0位AT24C088k1024
📝学技术、更要掌握学习的方法,一起学习,让进步发生👩🏻作者:一只IT攻城狮。💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。❤️《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址👉🏻SpringCloud入门实战系列不迷路👈🏻:SpringCloud入门实战(一)什么是SpringCloud?SpringCloud入门实战
我的Ruby程序从stdin读取行并使用puts打印到stdout(终端)。我可以使用RSpec来测试读写吗?我可以像在stdin中编写的那样向我的程序注入(inject)一个字符串,同时检查输出吗?line=STDIN.read.chomp.split另外,我在一个循环中进行读取和写入,直到line[0]被“退出”。我可以在循环运行时进行测试,还是应该调用subject.read_in和subject.write_out? 最佳答案 您可以使用模拟并通过在and_return()方法中列出多个值来多次调用该方法。这些将按照给定的顺