windows 相关博客-Java技术分享站

    windows windows jvm123.com 是一个java技术分享站,内容涉及java、jvm、程序开发,单元测试框架Spock教程,测试视频教程,spring框架教程等, 以及服务器搭建、linux、docker等相关技术。

Mycat使用入门Windows环境

<!-- wp:heading --> <h2>尝试启动mycat</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>下载解压后,运行startup_nowrap.bat:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1815,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2020/04/image.png" alt="" class="wp-image-1815"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>如果报错找不到主类 **/mycat,需要将mycat文件夹放在没特殊字符或空格的路径下。例如,如果放在D:\Program Files\mycat路径下,就会找不到主类Files/mycat。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>如果启动没有异常退出即可,日志中还会有一些错误,需要进行下一步配置。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>配置用户、权限</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在server.xml中,配置如下,默认就有:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;user name="root"> &lt;property name="password">123456&lt;/property> &lt;property name="schemas">TESTDB&lt;/property> &lt;/user> &lt;user name="user"> &lt;property name="password">user&lt;/property> &lt;property name="schemas">TESTDB&lt;/property> &lt;property name="readOnly">true&lt;/property> &lt;/user></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>这里的用户名和密码就可以用来连接mycat服务器。可以使用navicat连接,注意默认端口是8066。</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1817,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2020/04/image-1.png" alt="" class="wp-image-1817"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>连接成功后,发现有许多表和视图,但是都打不开,这就需要我们下一步的配置。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>配置schema、table、节点、主机、分片规则</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在schema.xml中:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"> &lt;!-- mod rule --> &lt;table name="travelrecord" dataNode="dn1,dn2,dn3" rule="mod-long" /> &lt;!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node --> &lt;table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" /> &lt;!-- &lt;table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate" /> --> &lt;/schema></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>上面配置了一个数据库TESTDB,两张数据表travelrecord和company,其中company为全局表(global),会在dn1,dn2,dn3三个节点上各存储一份, travelrecord 是需要按照mod-long算法 分节点 存储的表。 mod-long 算法的配置在rule.xml中,后面再说。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>节点、主机配置</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dataNode name="dn1" dataHost="localhost1" database="db1" /> &lt;dataNode name="dn2" dataHost="localhost1" database="db2" /> &lt;dataNode name="dn3" dataHost="localhost1" database="db3" /> &lt;dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> &lt;heartbeat>select user()&lt;/heartbeat> &lt;!-- can have multi write hosts --> &lt;writeHost host="hostM1" url="localhost:3306" user="root" password="root"> &lt;!-- can have multi read hosts --> &lt;readHost host="hostS2" url="127.0.0.1:3306" user="root" password="root" /> &lt;/writeHost> &lt;!-- &lt;writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> &lt;/dataHost></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>在一个主机上配置了三个节点:dn1、dn2、dn3,这就是前面配置table时的dataNode。此外readHost可以不用配置,如果配置,需要在mysql层面与writeHost数据同步,即主从复制同步。或者也可以像我这样保持数据同步。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>此外,还需要在本地主机创建三个数据库,并在每个数据库都创建company和 travelrecord 表。脚本如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>CREATE TABLE `company` ( `id` int(11) NOT NULL, `name` varchar(64) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `travelrecord` ( `id` int(11) NOT NULL, `name` varchar(64) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>配置完这些后,重启mycat,刷新navicat,就可以看到数据库只剩下两张表。再使用insert语句,插入测试数据:插入company表的数据,分别复制到了三个本地mysql数据库;插入 travelrecord 时,却报错了。这是因为 travelrecord 表的数据需要分片存储到三个mysql数据库,插入数据时,还需要配置分片存储的规则,需要以下配置。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>分片规则</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>上面配置travelrecord table节点时,指定的rule,在rule.xml文件中,如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code> &lt;tableRule name="mod-long"> &lt;rule> &lt;columns>id&lt;/columns> &lt;algorithm>mod-long&lt;/algorithm> &lt;/rule> &lt;/tableRule> &lt;function name="mod-long" class="io.mycat.route.function.PartitionByMod"> &lt;!-- how many data nodes --> &lt;property name="count">3&lt;/property> &lt;/function></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>其中,id为travelrecord表的主键,3需要与 travelrecord表 的dataNode个数一致。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>配置好这个规则,再执行insert语句,即可插入成功。注意,insert语句不能省略列名,否则会出现以下错误:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1820,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2020/04/image-2.png" alt="" class="wp-image-1820"/><figcaption> [42000][1064] partition table, insert must provide ColumnList </figcaption></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>在mycat端执行select语句验证:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1821,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2020/04/image-3.png" alt="" class="wp-image-1821"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>再查看本地的三个数据库节点,数据的分布如下:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1823,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2020/04/image-5.png" alt="" class="wp-image-1823"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>所以,travelrecord表的数据按照规则分别存储在三个节点对应的数据库表上。</p> <!-- /wp:paragraph -->

分类:数据库服务器搭建
标签:mysqlmycatwindows分库数据库配置

2020-04-14 13:46:03.0
Mycat使用入门Windows环境  mycat-shi-yong-windowns

windows端口占用、查看端口、结束进程

<!-- wp:paragraph --> <p>在日常开发过程中,我们常常遇到端口占用的问题,如果使用的是windows开发,则可以按照以下方法解决:</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>windows查看某个端口是否被占用</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>windows 查看某个端口是否被占用,可使用以下命令:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>netstat -ano | findstr 8080</code></pre> <!-- /wp:code --> <!-- wp:image {"id":957,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/win-port.jpg" alt="" class="wp-image-957"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>如上图可以看到PID为17964的进程占用了监听者8080端口,所以只需要结束这个进程即可。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>windows结束进程</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>windows结束进程有两种方法:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>1 使用命令行:</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>taskkill /pid 17964 /f</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>强制结束17964进程,如下:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":959,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/win-port3.jpg" alt="" class="wp-image-959"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p><strong>2 使用任务管理器</strong></p> <!-- /wp:paragraph --> <!-- wp:image {"id":958,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/win-port2.jpg" alt="" class="wp-image-958"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>在任务管理器,打开“ 详细信息 ”,点击“PID”就可以按照进程号排序,然后很容易找到17964进程,右键结束运行即可。</p> <!-- /wp:paragraph -->

分类:服务器搭建开发笔记未分类
标签:windows结束进程端口占用pid端口查看端口netstat

2019-09-02 16:33:56.0
windows端口占用、查看端口、结束进程  windows-duan-kou

nginx 配置负载均衡

<!-- wp:paragraph --> <p>windows下载nginx解压后如下:</p> <!-- /wp:paragraph --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://static.oschina.net/uploads/space/2017/1019/170307_Ixwd_2342105.png" alt=""/></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p>配置文件为conf目录下的nginx.conf</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>在http节点下加入upstream如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code> upstream tomcats { server 127.0.0.1:8081; server 127.0.0.1:8082; #server 127.0.0.1:8082 weight=2 fail_timeout=20s; #server 127.0.0.1:8081 weight=1 fail_timeout=20s; #ip_hash; }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>&nbsp; &nbsp; 在server节点下修改location如下,加入proxy_pass :</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code> location / { root html; index index.html index.htm; proxy_pass http://tomcats; #这里和upstream的名称相同 }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>启动(重启)nginx.exe,并请求server节点配置的server_name和端口port就可以将请求轮流发到8081和8082去处理。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>其中nginx的启动停止可以使用一下cmd命令:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>    nginx.exe -s stop     nginx.exe -s reload #重新加载配置文件     nginx.exe #启动</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>在linux中使用nginx:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>&nbsp; &nbsp; 安装:sudo apt-get install nginx</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>&nbsp; &nbsp; 启动: sudo nginx (如果由于log文件权限问题启动失败,则可以在对应log目录下执行sudo chmod 777 xxx.log修改文件的权限)</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>配置负载均衡与windows差不多,在/etc/nginx目录下有配置文件nginx.conf,里面默认使用include导入了conf.d/文件夹下的所有*.conf文件,所以就可以将server节点以及upstream节点需要配置的东西分别在conf.d/目录下建立配置文件写入。若有权限问题,可以使用chmod修改权限。</p> <!-- /wp:paragraph -->

分类:linux服务器搭建
标签:nginx负载均衡linuxwindows

2019-08-21 20:19:26.0
nginx 配置负载均衡  nginx-pei-zhi-fu