东方财富怎么删除帖子股吧帖子怎么删除

一、下载mycatmycat的官网网址&&http://www./,我使用的是mycat的1.4的安装包下载地址/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat-server-1.4-release-38-linux.tar.gz下载mycat的安装包到&/opt&目录下#cd&/opt#wget&/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat-server-1.4-release-38-linux.tar.gz#&tar&-xvf&&Mycat-server-1.4-RELEASE-32-linux.tar.gz解压后放到/usr/local下&&#mv&mycat&/usr/local#&pwd/usr/local/mycat#&lsbin&&catlet&&conf&&lib&&logs&&version.txt二、配置环境变量检查是否已经配置好了的环境变量#java&-version显示java&version&"1.8.0_45"Java(TM)&SE&Runtime&Environment&(build&1.8.0_45-b14)Java&HotSpot(TM)&64-Bit&Server&VM&(build&25.45-b02,&mixed&mode)表示我的java环境变量配置好了.,如果你还没用配置好,需先配置.如果你不会请自己度娘.非常多我就不写了&三、修改mycat配置文件接下来修改mycat的配置文件#cd&/usr/local/mycat/conf#lsautopartition-long.txt&&&&&&&partition-hash-int.txt&&&&sequence_db_conf.propertiescacheservice.properties&&&&&&partition-range-mod.txt&&&sequence_time_conf.propertiesdnindex.properties&&&&&&&&&&&router.xml&&&&&&&&&&&&&&&&server.xmlehcache.xml&&&&&&&&&&&&&&&&&&rule.xml&&&&&&&&&&&&&&&&&&wrapper.confindex_to_charset.properties&&schema.xmllog4j.xml&&&&&&&&&&&&&&&&&&&&sequence_conf.properties&配置文件非常多,配置项也远比amoeba复杂.如果只是简单配置在不同的服务器上进行读写分离只需要配置两个文件.xml&和&&schema.xml&(一)找到这一段&/system&&&&&&&&&&user&name="test"&&&&&&&&&&&&&&&&&&property&name="password"&test&/property&&&&&&&&&&&&&&&&&&property&name="schemas"&TESTDB&/property&&&&&&&&&&/user&&&&&&&&&&&user&name="user"&&&&&&&&&&&&&&&&&&property&name="password"&user&/property&&&&&&&&&&&&&&&&&&property&name="schemas"&TESTDB&/property&&&&&&&&&&&&&&&&&&property&name="readOnly"&true&/property&&&&&&&&&&/user&&这里配置了两个可以来连接的用户用户1&&test&&&密码test&&&给予了此用户TESTDB数据库的权限用户2&&user&&&密码user&&&给予了此用户TESTDB数据库的只读权限&注意这里的testdb&不一定是你数据库上的真实库名.可以任意指定.只要和接下来的schema.xml的配置文件中的库名统一即可(二)&&?xml&version="1.0"?&&!DOCTYPE&mycat:schema&SYSTEM&"schema.dtd"&&mycat:schema&xmlns:mycat="http://org.opencloudb/"&&&&&&&&&&&schema&name="TESTDB"&checkSQLschema="false"&sqlMaxLimit="100"&&&&&&&&&&&&&&&&&&!--&auto&sharding&by&id&(long)&--&&&&&&&&&&&&&&&&&&table&name="travelrecord"&dataNode="dn1,dn2,dn3"&rule="auto-sharding-long"&/&&&&&&&&&&&&&&&&&&&!--&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&--&&&&&&&&&&&&&&&&&&table&name="company"&primaryKey="ID"&type="global"&dataNode="dn1,dn2,dn3"&/&&&&&&&&&&&&&&&&&&table&name="hotnews"&primaryKey="ID"&dataNode="dn1,dn2,dn3"&&&&&&&&&&&&&&&&&&&&&&&&rule="mod-long"&/&&&&&&&&&&&&&&&&&&!--&&table&name="dual"&primaryKey="ID"&dataNode="dnx,dnoracle2"&type="global"&&&&&&&&&&&&&&&&&&&&&&&&&rule="mod-long"&/&&--&&&&&&&&&&&&&&&&&&table&name="employee"&primaryKey="ID"&dataNode="dn1,dn2"&&&&&&&&&&&&&&&&&&&&&&&&rule="sharding-by-intfile"&/&&&&&&&&&&&&&&&&&&table&name="customer"&primaryKey="ID"&dataNode="dn1,dn2"&&&&&&&&&&&&&&&&&&&&&&&&rule="sharding-by-intfile"&&&&&&&&&&&&&&&&&&&&&&&&&&childTable&name="orders"&primaryKey="ID"&joinKey="customer_id"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&parentKey="id"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&childTable&name="order_items"&joinKey="order_id"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&parentKey="id"&/&&&&&&&&&&&&&&&&&&&&&&&&&&/childTable&&&&&&&&&&&&&&&&&&&&&&&&&&childTable&name="customer_addr"&primaryKey="ID"&joinKey="customer_id"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&parentKey="id"&/&&&&&&&&&&&&&&&&&&/table&&&&&&&&&&&&&&&&&&&&&&&&&/&&--&&&&&&&&&&/schema&&&&&&&&&&!--&&dataNode&name="dn1$0-743"&dataHost="localhost1"&database="db$0-743"&&&&&&&&&&&&&&&&&/&&--&&&&&&&&&&dataNode&name="dn1"&dataHost="localhost1"&database="db1"&/&&&&&&&&&&dataNode&name="dn2"&dataHost="localhost1"&database="db2"&/&&&&&&&&&&dataNode&name="dn3"&dataHost="localhost1"&database="db3"&/&&&&&&&&&&!--&dataNode&name="dn4"&dataHost="sequoiadb1"&database="SAMPLE"&/&&&&&&&&&&&dataNode&name="jdbc_dn1"&dataHost="jdbchost"&database="db1"&/&&&&&&&&&&&dataNode&&&&&&&name="jdbc_dn2"&dataHost="jdbchost"&database="db2"&/&&&&&&&&&&&dataNode&name="jdbc_dn3"&&&&&&&dataHost="jdbchost"&database="db3"&/&&--&&&&&&&&&&dataHost&name="localhost1"&maxCon="1000"&minCon="10"&balance="0"&&&&&&&&&&&&&&&&writeType="0"&dbType=""&dbDriver="native"&switchType="1"&&slaveThreshold="100"&&&&&&&&&&&&&&&&&&heartbeat&select&user()&/heartbeat&&&&&&&&&&&&&&&&&&!--&can&have&multi&write&hosts&--&&&&&&&&&&&&&&&&&&writeHost&host="hostM1"&url="localhost:3306"&user="root"&&&&&&&&&&&&&&&&&&&&&&&&password="123456"&&&&&&&&&&&&&&&&&&&&&&&&&&!--&can&have&multi&read&hosts&--&&&&&&&&&&&&&&&&&&&/writeHost&&&&&&&&&&&&&&&&&&writeHost&host="hostS1"&url="localhost:3316"&user="root"&&&&&&&&&&&&&&&&&&&&&&&&password="123456"&/&&&看着这一大篇你是否和我一样的开始蛋疼.好复杂有木有!算了给大家来一份我的简单点的.因为我们现在只做库的读写分离,没用分库&没用分表这些东西.&mycat:schema&xmlns:mycat="http://org.opencloudb/"&&schema&name="TESTDB"&checkSQLschema="false"&sqlMaxLimit="100"&dataNode="dn1"&&/schema&&dataNode&name="dn1"&dataHost="localhost1"&database="db1"&/&&dataHost&name="localhost1"&maxCon="1000"&minCon="10"&balance="0"&writeType="0"&dbType="mysql"&dbDriver="native"&switchType="1"&&slaveThreshold="100"&&heartbeat&select&user()&/heartbeat&&writeHost&host="hostM1"&url="192.168.1.100:3306"&user="root"&password="123456"&&readHost&host="hostS1"&url="192.168.1.101:3306"&user="root"&password="123456"&/&&&&&&&&&&&&&&&&&&/writeHost&&&&&&&&&&/dataHost&&&(三)配置文件解释这里TESTDB&就是我们对外声称的我们有数据库的名称&&必须和server.xml中的用户指定的数据库名称一致添加一个dataNode="dn1"&是指定了我们这个库只在dn1上.没有进行分库&这里只需要改database的名字&db1&就是你真实数据库服务上的数据库名&.根据你自己的数据库名进行修改.&&这里只需要配置三个地方&&&&balance="1"与writeType="0"&,switchType=”1”a.&balance&属性负载均衡类型,目前的取值有&4&种:1.&balance="0",&不开启读写分离机制,所有读操作都发送到当前可用的&writeHost&上。2.&balance="1",全部的&readHost&与&stand&by&writeHost&参与&select&语句的负载均衡,简单的说,当双主双从模式(M1&-&S1&,&M2-&S2,并且&M1&与&M2&互为主备),正常情况下,&M2,S1,S2&都参与&select&语句的负载均衡。3.&balance="2",所有读操作都随机的在&writeHost、&readhost&上分发。4.&balance="3",&所有读请求随机的分发到&wiriterHost&对应的&readhost&执行,writerHost&不负担读压力,注意&balance=3&只在&1.4&及其以后版本有,&1.3&没有。b.&writeType&属性负载均衡类型,目前的取值有&3&种:1.&writeType="0",&所有写操作发送到配置的第一个&writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换在配置文件中:dnindex.properties&.2.&writeType="1",所有写操作都随机的发送到配置的&writeHost。3.&writeType="2",没实现。c.&switchType&属性-&-1&表示不自动切换-&1&默认值,自动切换-&2&基于MySQL&主从同步的状态决定是否切换四,&writeHost&host="hostM1"&url="192.168.1.100:3306"&user="root"&password="123456"&&readHost&host="hostS1"&url="192.168.1.101:3306"&user="root"&password="123456"&/&&/writeHost&这里是配置的我们的两台读写服务器IP地址访问端口和&访问用户的用户名和密码四、启动mycatMyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之。于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显。这篇文章主要是MyCAT的入门部署。一、安装java因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本Java&Oracle官方下载地址为:/technetwork/java/javase/archive-139210.html解压jdk-7u79-linux-x64.tar.gz文件,并配置java的环境变量# tar xvf jdk-7u79-linux-x64.tar.gz# mv jdk1.7.0_79/ /usr/local/编辑/etc/profile文件# vim /etc/profile& 添加如下内容export JAVA_HOME=/usr/local/jdk1.7.0_79export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# source /etc/profile --使/etc/profile文件生效# java -versionjava version &1.7.0_79&Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)二、安装MySQLMySQL官方下载地址如下:/downloads/mysql/里面有各种版本,包括RPM,二进制,源码包。为了方便起见,我这里选择是RPM包# yum install -y mysql-community-server-5.6.26-2.el5.x86_64.rpm启动MySQL# /etc/init.d/mysqld startStarting mysqld (via systemctl):
]为root账户创建密码# mysqladmin -u root password &123456&建议为123456,后面MyCAT配置文件schema.xml中会用到三、安装MyCAT创建MyCAT用户并设置密码# useradd mycat# passwd mycat解压MyCAT文件# tar xvf Mycat-server-1.5-alpha-28-linux.tar.gz# mv mycat/ /usr/local/设置mycat目录的属主和属组# chown -R mycat.mycat /usr/local/mycat/四、测试MyCAT首先在MySQL上创建三个数据库:db1,db2,db3。mysql& create database db1;Query OK, 1 row affected (0.00 sec)mysql& create database db2;Query OK, 1 row affected (0.00 sec)mysql& create database db3;Query OK, 1 row affected (0.00 sec)&启动mycat服务# cd /usr/local/mycat/bin/# ./mycat startStarting Mycat-server...查看mycat服务是否启动# ps -ef |grep mycatroot
0 22:47 pts/3
00:00:00 grep --color=auto mycat并没有启动查看日志# cd /usr/local/mycat/logs/# cat wrapper.logSTATUS | wrapper
| 2016/01/07 22:44:23 | --& Wrapper Started as DaemonSTATUS | wrapper
| 2016/01/07 22:44:23 | Launching a JVM...ERROR
| 2016/01/07 22:44:25 | JVM exited while loading
| 2016/01/07 22:44:25 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: MySQL-Server1: MySQL-Server1: Name or service not knownSTATUS | wrapper
| 2016/01/07 22:44:29 | Launching a JVM...ERROR
| 2016/01/07 22:44:29 | JVM exited while loading
| 2016/01/07 22:44:29 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: MySQL-Server1: MySQL-Server1: Name or service not knownSTATUS | wrapper
| 2016/01/07 22:44:34 | Launching a JVM...ERROR
| 2016/01/07 22:44:34 | JVM exited while loading
| 2016/01/07 22:44:34 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: MySQL-Server1: MySQL-Server1: Name or service not knownSTATUS | wrapper
| 2016/01/07 22:44:38 | Launching a JVM...ERROR
| 2016/01/07 22:44:38 | JVM exited while loading
| 2016/01/07 22:44:38 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: MySQL-Server1: MySQL-Server1: Name or service not knownSTATUS | wrapper
| 2016/01/07 22:44:42 | Launching a JVM...ERROR
| 2016/01/07 22:44:43 | JVM exited while loading
| 2016/01/07 22:44:43 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: MySQL-Server1: MySQL-Server1: Name or service not knownFATAL
| 2016/01/07 22:44:43 | There were 5 failed launches in a row, each lasting less than 300 seconds.
Giving up.FATAL
| 2016/01/07 22:44:43 |
There may be a configuration problem: please check the logs.STATUS | wrapper
| 2016/01/07 22:44:43 | &-- Wrapper Stopped&根据报错信息,怀疑主机名没有绑定修改hosts文件,绑定主机名# vim /etc/hosts127.0.0.1
localhost localhost.localdomain localhost4 localhost4.localdomain4::1
localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.244.144 MySQL-Server1重新启动mycat服务# cd /usr/local/mycat/bin/# ./mycat start这次mycat正常启动# ps -ef |grep mycatroot
00:00:00 /usr/local/mycat/bin/./wrapper-linux-x86-64 /usr/local/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/usr/local/mycat/logs/mycat.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/mycatroot
0 22:55 pts/3
00:00:00 grep --color=auto mycat下面以Travelrecord为例,来进行插入,查询,路由分析等基本操作。首先利用mycat连接mysql数据库# mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB其中8066是mycat的监听端口,类似于mysql的3306端口,其中-u,-p,-h分别是用户名,密码和主机,-D是连接的逻辑库。至于为什么是这些,这个跟配置文件有关。红色部分表明连接的是mycat。创建Travelrecord表create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);插入数据mysql& insert into travelrecord(id,user_id,traveldate,fee,days)
values(1,'Victor',,100,10);Query OK, 1 row affected (0.00 sec)mysql& insert into travelrecord(id,user_id,traveldate,fee,days)
values(5000001,'Job',,100,10);Query OK, 1 row affected (0.00 sec)mysql& insert into travelrecord(id,user_id,traveldate,fee,days)
values(,'Slow',,100,10);Query OK, 1 row affected (0.00 sec)至于ID为什么取三个值,这个与conf目录下autopartition-long.txt的定义有关,这个文件主要定义auto-sharding-long的规则。# range start-end ,data node index# K=1000,M=10000.0-500M=0500M-1000M=11000M-1500M=2我主要是测试在id取不同区间的值时,分片的效果。下面来看看分片的效果mysql& select * from db1.+----+---------+------------+------+------+| id | user_id | traveldate | fee
| days |+----+---------+------------+------+------+|
1 | Victor
| 2016-01-01 |
10 |+----+---------+------------+------+------+1 row in set (0.00 sec)mysql& select * from db2.+---------+---------+------------+------+------+| id
| user_id | traveldate | fee
| days |+---------+---------+------------+------+------+| 5000001 | Job
| 2016-01-02 |
10 |+---------+---------+------------+------+------+1 row in set (0.00 sec)mysql& select * from db3.+----------+---------+------------+------+------+| id
| user_id | traveldate | fee
| days |+----------+---------+------------+------+------+|
| 2016-01-03 |
10 |+----------+---------+------------+------+------+1 row in set (0.00 sec)果然是分配到三个不同的节点上了。如果想看MyCAT具体会将数据分配到哪个节点上,可通过路由分析。语法其实蛮简单,就是SQL语句前加上explain语句。下面根据explain命令查看create语句和insert语句具体会分配到哪些Datanode上。mysql& explain create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);+-----------+-----------------------------------------------------------------------------------------------------------------------+| DATA_NODE | SQL
|+-----------+-----------------------------------------------------------------------------------------------------------------------+| dn1
| create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) || dn2
| create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) || dn3
| create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) |+-----------+-----------------------------------------------------------------------------------------------------------------------+3 rows in set (0.00 sec)mysql&
explain insert into travelrecord(id,user_id,traveldate,fee,days)
values(1,'Victor',,100,10);+-----------+----------------------------------------------------------------------------------------------+| DATA_NODE | SQL
|+-----------+----------------------------------------------------------------------------------------------+| dn1
| insert into travelrecord(id,user_id,traveldate,fee,days)
values(1,'Victor',,100,10) |+-----------+----------------------------------------------------------------------------------------------+1 row in set (0.01 sec)mysql& explain insert into travelrecord(id,user_id,traveldate,fee,days)
values(5000001,'Job',,100,10);+-----------+-------------------------------------------------------------------------------------------------+| DATA_NODE | SQL
|+-----------+-------------------------------------------------------------------------------------------------+| dn2
| insert into travelrecord(id,user_id,traveldate,fee,days)
values(5000001,'Job',,100,10) |+-----------+-------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql& explain insert into travelrecord(id,user_id,traveldate,fee,days)
values(,'Slow',,100,10);+-----------+---------------------------------------------------------------------------------------------------+| DATA_NODE | SQL
|+-----------+---------------------------------------------------------------------------------------------------+| dn3
| insert into travelrecord(id,user_id,traveldate,fee,days)
values(,'Slow',,100,10) |+-----------+---------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)&总结:关于MyCAT的配置其实是蛮简单的,最主要的是熟悉各配置文件的规则。以上用户名,密码,如何分库,都是在配置文件中定义的,后续,有时间再一一详表。关于配置文件,conf目录下主要以下三个需要熟悉。server.xml是Mycat服务器参数调整和用户授权的配置文件schema.xml是逻辑库定义和表以及分片定义的配置文件rule.xml是分片规则的配置文件
标签常见用法
最新教程周点击榜
微信扫一扫基于MYCAT的MYSQL主从与读写分离配置详解与示例
1、不使用Mycat托管MySQL主从服务器,简单使用如下配置:
&dataNodename=&dn1& dataHost=&localhost1& database=&db1&/&
&dataNodename=&dn2& dataHost=&localhost1& database=&db2&/&
&dataNodename=&dn3& dataHost=&localhost1& database=&db3&/&
&dataHost name=&localhost1&maxCon=&1000& minCon=&10& balance=&0&
writeType=&0&dbType=&& dbDriver=&native&switchType=&1& slaveThreshold=&100&&
&heartbeat&selectuser()&/heartbeat&
&writeHosthost=&hostM& url=&10.1.176.158:3306& user=&root&
password=&123456&&
&/writeHost&
&/dataHost&
2、使用Mycat托管主从切换,使用如下配置:
&dataHostname=&localhost1& maxCon=&1000& minCon=&500&balance=&2&
writeType=&0& dbType=&mysql&dbDriver=&native& switchType=&2&
slaveThreshold=&100&&
&heartbeat&show slave status&/heartbeat&
&!--can have multi write hosts --&
&writeHosthost=&hostM1& url=&10.1.176.158:3306& user=&root&
password=&123456&&
&/writeHost&
&writeHosthost=&hostS1& url=&10.1.176.78:3306& user=&root&
password=&.workssys&/&
&/dataHost&
(1)注意,如果只有一个writeHost,主挂了,读也不能用。writeType=0,写操作只发第一个writeHost,发生了切换,原来的从变为主,所有写操作在原来的从执行,如果不是双向复制原来的主数据就是旧的。切换间隔是5次心跳时间,默认是10 * 5=50秒(第一次10秒没响应,后面可能会变成15秒检测,然后20秒,最后真的没响应就认为挂了),心跳配置在server.xml,使用dataNodeHeartbeatPeriod参数:对后端所有读、写库发起心跳的间隔时间,默认是10秒。
(2)注意,切换后重启原来的主,如果主从不同步 ,报错:Slave_SQL_Running:No
数据保证一致后,执行:
Query OK, 0 rows affected(0.00 sec)
mysql& set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Query OK, 0 rows affected(0.00 sec)
Query OK, 0 rows affected(0.00 sec)
mysql& show slave status\G
(2)切换后,Mycat会标记新的主从状态,主从状态保存在/conf/dnindex.properties文件,正常情况是将原来的从就作为主,主从对调,修改schema.xml文件。但是如果想恢复原来的主,需要执行9066端口的Mycat管理工具的switch命令切换数据源:
switch @@datasource name:index
name:schema中配置的dataHost 中name。
index:schema中配置的dataHost 的writeHost index 位标,即按照配置顺序从上到下的一次顺序,从0开始,即第一个是WriteHost是0,另一个就是1。
切换数据源时,会将原数据源所有的连接池中连接关闭,并且从新数据源创建新连接,此时mycat服务不可用。
dnindex.properties文件记录了当前的活跃writer。
dataHostname=&blog& maxCon=&100& minCon=&10&balance=&0&
writeType=&0&dbType=&mysql& dbDriver=&native&&
&heartbeat&select1&/heartbeat&
&writeHosthost=&master& url=&127.0.0.1:3306& user=&root&password=&root&&&/writeHost&
&writeHosthost=&master2& url=&127.0.0.1:3306& user=&root1&password=&root&&/writeHost&
&/dataHost&
mysql& show @@
+----------+---------+-------+----------------+------+------+--------+------+--
|DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE |
+----------+---------+-------+----------------+------+------+--------+------+--|blog | master | mysql | 121.40.121.133 | 3306 | W | 0 | 10 | 100 | 16 |
|blog | master2 | mysql | 127.0.0.1 | 3306 | W | 0 | 0 | 100 | 0 |
+----------+---------+-------+----------------+------+------+--------+------+--2rows in set (0.00 sec)
mysql& switch @@datasource blog:1;
Query OK, 1 row affected (1min 0.05 sec)
(3)切换后,查看哪一个在执行库操作
show @@heartbeat、show @@backend
观察RS_CODE字段
(4)主突然宕机后,恢复顺序:
1)查看数据是否同步,人为同步数据,同步数据时注意,主从同步状态时一定要在主的那一端执行操作,然后主会同步到从;但是一旦在从那一端操作的话,执行到主,主又会返回给从,如执行下面的操作,有drop table操作非常危险
2)恢复主节点
3)在DB中做主从对调,先停止原从节点的从复制操作slave stop,再启动原主节点的从复制操作slave start
4)到新的从服务器执行以下语句,查看主从状态是否正常,首先手动启动新的slave,因为加入了skip-slave-start参数
slave start
show slavestatus \G
5)执行插入验证,至此操作结束
6)注意:Mycat不要重启,心跳一直会检测,在DB里把主从对调好就没错误提示了,恢复了心跳就会恢复正常
7)注意:如需要恢复原来配置,执行switch操作,但不建议这样做(switch操作执行较慢,并且似乎有问题,并不能保证执行正确)。switch之前要检查日志主的心跳有没有恢复正常,正常了才能切。
mysql -utest -ptest -hlocalhost -P9066 -DTESTDB
switch @@datasource localhost1:0
8)注意:目前主从都是通过show slave status,当主宕机以后,发生切换,从变为主,原来的主变为从,这时候show slave status就会发生错误,因为原来的主没有开启slave,不建议直接使用switch操作,而是在DB中做主从对调。
(5)特别注意:schema中的每一个dataHost的host属性值必须唯一,否则会出现主从在所有dataHost中全部切换的现象,如下所示是不对的,当一组切换时,另一组也同时切换。
&dataHostname=&userDBHost& maxCon=&1000& minCon=&500&balance=&2& writeType=&0& dbType=&mysql&dbDriver=&native& switchType=&2&slaveThreshold=&100&&
&heartbeat&showslave status&/heartbeat&
&writeHosthost=&hostM1& url=&172.16.224.204:3306&user=&root& password=&root123& /&
&writeHosthost=&hostS1& url=&172.16.227.129:3306&user=&root& password=&root123& /&
&/dataHost&
&dataHostname=&orderDBHost& maxCon=&1000& minCon=&500&balance=&2& writeType=&0& dbType=&mysql&dbDriver=&native& switchType=&2&slaveThreshold=&100&&
&heartbeat&showslave status&/heartbeat&
&writeHosthost=&hostM1& url=&172.16.224.205:3306&user=&root& password=&root123& /&
&writeHosthost=&hostS1& url=&172.16.225.249:3306&user=&root& password=&root123& /&
&/dataHost&
(6)注意:每天从主的那一端备份全量和增量数据库
(7)注意:修改schema.xml要在linux下操作,否则出现编码错误
(8)修改schema.xml后不需要执行switch命令,重启mycat后自动回复原始状态
(9)新增表或修改schema后,重新部署顺序:1.修改Mycat Schema;2.更新MySQL;3.部署新应用
3、Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠
<datanodename=</datanodename=
&dataNodename=&dn1& dataHost=&localhost1& database=&db1&/&
&dataNodename=&dn2& dataHost=&localhost1& database=&db2&/&
&dataNodename=&dn3& dataHost=&localhost1& database=&db3&/&
&dataHostname=&localhost1& maxCon=&1000& minCon=&10&balance=&1&
writeType=&0& dbType=&mysql&dbDriver=&native& switchType=&2&
slaveThreshold=&100&&
&heartbeat&show slave status&/heartbeat&
&writeHosthost=&hostM& url=&10.1.176.158:3306& user=&root&
password=&123456&&
&readHosthost=&hostS& url=&10.1.176.78:3306& user=&root&
password=&123456&/&
&/writeHost&
&/dataHost&
(1)设置balance=&1&与writeType=&0&
1) Balance参数设置:
负载均衡类型,目前的取值有3种:
&1&balance=&0&, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
&2& balance=&1&,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-&S1,M2-&S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
&3&balance=&2&,所有读操作都随机的在writeHost、readhost上分发。
2) WriteType参数设置:
&1& writeType=&0&,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost。如果都挂了,那就悲剧了,起来哪个,写哪个,很有可能数据不一致;所以不要数据库恢复之后不要让mycat切回。
&2&writeType=&1&,所有写操作都随机的发送到配置的writeHost。
&3&writeType=&2&,没实现。
&readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即&不工作了&,这是因为此时,它的数据已经&不可靠&了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。&
(2)设置 switchType=&2& 与slaveThreshold=&100&
&Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType=&2& 与slaveThreshold=&100&,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测 show slave status 中的 &Seconds_Behind_Master&, &Slave_IO_Running&,&Slave_SQL_Running& 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 600182东方财富网股吧 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信