03中间件mycat对pxc集群的分片处理
安装第二个pxc集群
作为mycat的第二个分片

直接拷贝其中的一个虚拟机,然后还原到最初的状态,这样会小很多,启动改一下IP和基础配置,然后再次拷贝这个虚拟机两份改IP重启即可
正常安装pxc集群即可
主节点的配置记录
grastate.dat文件中记录着启动的bootstrap,当有节点以外退出时,为了保持数据一致性,pxc集群会认定最后一个节点的数据是最新的 safe_to_bootstrap 的值会改为1,把配置safe_to_bootstrap值为1当做主节点启动即可
当集群所有节点都意外退出时可以手动修改 safe_to_bootstrap的值为1,然后把这个节点当做主节点启动
[root@node6 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: a61559b1-f3c9-11e8-be12-666937c43234
seqno: -1
safe_to_bootstrap: 0

Mysql中间件



安装mycat
Mycat是java开发的,要安装java环境
rpm –ivh jdk-8u181-linux-x64.rpm
# 加入环境变量
# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export PATH=$JAVA_HOME/bin:$PATH
下载mycat1.6.5版本
http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
mycat配置

逻辑库:chinasoft
表:t_user
创建数据表,用于保存切分数据
create table t_user(
id int(10) unsigned not null,
username varchar(200) not null,
password varchar(2000) not null,
tel char(11) character not null,
locked tinyint(1) unsigned not null default 0,
primary key (id) using btree,
index indx_username(username) using btree,
unique index unq_username(username) using btree);

schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 配置数据表 -->
<schema name="chinasoft" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_user" dataNode="dn1,dn2" rule="mod-long" />
</schema>
<!-- 配置分配关系 -->
<dataNode name="dn1" dataHost="pxc-cluster" database="chinasoft" />
<dataNode name="dn2" dataHost="pxc-cluster02" database="chinasoft" />
<!-- 配置连接关系 pxc-cluster-->
<dataHost name="pxc-cluster" maxCon="1000" minCon="10" balance="2"
writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="W1" url="10.11.0.210:3306" user="admin"
password="Abc_123456">
<readHost host="W1R1" url="10.11.0.212:3306" user="admin" password="Abc_123456" />
<readHost host="W1R2" url="10.11.0.215:3306" user="admin" password="Abc_123456" />
</writeHost>
<writeHost host="W2" url="10.11.0.212:3306" user="admin"
password="Abc_123456">
<readHost host="W2R1" url="10.11.0.210:3306" user="admin" password="Abc_123456" />
<readHost host="W2R2" url="10.11.0.215:3306" user="admin" password="Abc_123456" />
</writeHost>
</dataHost>
<!-- 配置连接关系 pxc-cluster02-->
<dataHost name="pxc-cluster02" maxCon="1000" minCon="10" balance="2"
writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="W1" url="10.11.0.216:3306" user="admin"
password="Abc_123456">
<readHost host="W1R1" url="10.11.0.217:3306" user="admin" password="Abc_123456" />
<readHost host="W1R2" url="10.11.0.218:3306" user="admin" password="Abc_123456" />
</writeHost>
<writeHost host="W2" url="10.11.0.217:3306" user="admin"
password="Abc_123456">
<readHost host="W2R1" url="10.11.0.216:3306" user="admin" password="Abc_123456" />
<readHost host="W2R2" url="10.11.0.218:3306" user="admin" password="Abc_123456" />
</writeHost>
</dataHost> </mycat:schema>

rule.xml

Server.xml
<user name="admin" defaultAccount="true">
<property name="password">Abc_123456</property>
<property name="schemas">chinasoft</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">chinasoft</property>
<property name="readOnly">true</property>
</user>

第二个pxc集群的部署
[root@node6 ~]# cat /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=216
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
# 数据库字符集
character_set_server = utf8
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster02
wsrep_cluster_address=gcomm://10.11.0.216,10.11.0.217,10.11.0.218
wsrep_node_name=pxc6
wsrep_node_address=10.11.0.216
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth= admin:Abc_123456
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
************************************
[root@node7 ~]# cat /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=217
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
# 数据库字符集
character_set_server = utf8
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster02
wsrep_cluster_address=gcomm://10.11.0.216,10.11.0.217,10.11.0.218
wsrep_node_name=pxc7
wsrep_node_address=10.11.0.217
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth= admin:Abc_123456
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
************************************
[root@node8 ~]# cat /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=218
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
# 数据库字符集
character_set_server = utf8
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster02
wsrep_cluster_address=gcomm://10.11.0.216,10.11.0.217,10.11.0.218
wsrep_node_name=pxc8
wsrep_node_address=10.11.0.218
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth= admin:Abc_123456
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
# 启动第二个集群
[root@node6 ~]# systemctl start mysql@bootstrap.service
[root@node6 ~]# cat /var/log/mysqld.log |grep pass
2018-12-03T17:05:12.810880Z 1 [Note] A temporary password is generated for root@localhost: 6khOemMy,f.T
# 登录mysql重置root密码
alter user 'root'@'localhost' identified by 'root';
# 添加同步用户,启动从节点root密码和admin的账号信息就同步到了从节点
create user 'admin'@'localhost' identified by 'Abc_123456';
grant reload,lock tables,replication client,process on *.* to 'admin'@'localhost';
flush privileges;
# 启动从节点
systemctl start mysql
Mycat连接使用8066端口

使用mycat插入数据
use chinasoft;
select * from t_user;
insert into t_user(id,username,password,tel,locked)
values(
1,
'jack',
hex(AES_ENCRYPT('123456','helloworld')),
'13312345678',
false
);
插入两条数据,可以看到落到了不同的分片中
insert into t_user(id,username,password,tel,locked)
values(
2,
'tom',
hex(AES_ENCRYPT('123456','helloworld')),
'13312345678',
false
);
通过mycat可以查询汇总到一起

03中间件mycat对pxc集群的分片处理的更多相关文章
- KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群
一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...
- PXC集群资料整理
1.mysql集群方案对比 方案1 NDBCluster 参考:https://www.cnblogs.com/kevingrace/p/5685371.html?utm_source=itdad ...
- docker安装pxc集群
前言 现在mysql自建集群方案有多种,keepalived.MHA.PXC.MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有 ...
- 02使用java脚本向Pxc集群写入数据
使用java脚本向Pxc集群写入数据 批量写入pxc集群程序 导入mysql驱动包 # 批量插入数据的java脚本 package pxc_demo; import java.sql.Connecti ...
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)
上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(一)
一.首先需要安装好docker,安装方法可以参考之前一篇博文Centos7安装docker [root@localhost ~]# systemctl start docker [root@local ...
- Docker下配置双机热备PXC集群
架构: 步骤: 1.安装centos7 ,设置宿主机IP:192.168.1.224 2.先更新yum软件管理器,再安装docker 1.yum -y update 2.yum install - ...
- 用6个案例说明如何恢复PXC集群
原文链接:https://blog.csdn.net/zengxuewen2045/article/details/51868976 1. 案例一:三个节点,关闭一个 由于维护和配置变更等工作需要 ...
- Docker搭建PXC集群
如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...
随机推荐
- C#如何使SQLite程序集既能适应32位系统也能适应64位系统
分享5: 需求:都知道Sqlite3是分32位和64位版本的,那如果将一个Sqlite3.dll文件全适用 分析:Sqlite是种轻量级的数据库文件,使用了混合编程而成的,一部分采用非托管的C++代码 ...
- Flask自定义转换器,实现路由匹配正则表达式参数
Flask框架动态路由实现参数传递和Django框架有类似之处,但是相比于Django框架,Flask实现复杂的参数就需要自己自定义转换器来实现了,而不能向Django那样直接使用正则表达式 # 路由 ...
- promise源码解析
前言 大部分同学对promise,可能还停留在会使用es6的promise,还没有深入学习.我们都知道promise内部通过reslove.reject来判断执行哪个函数,原型上面的then同样的,也 ...
- [转帖]Oracle 各个版本的升级路线图
从oracle 7开始(甚至更早版本)到oracle 9iR2. 来源: https://blog.csdn.net/cymm_liu/article/details/11647533 http:// ...
- servlet(2)servlet过滤器
1.servlet过滤器 用于动态的拦截servlet请求或响应,以变更或使用其中的信息. (1)过滤器和servlet是多对多的关系,即一个过滤器可以用于一个或多个servlet,多个过滤器也可以用 ...
- 【pytorch】关于Embedding和GRU、LSTM的使用详解
1. Embedding的使用 pytorch中实现了Embedding,下面是关于Embedding的使用. torch.nn包下的Embedding,作为训练的一层,随模型训练得到适合的词向量. ...
- 微信小程序工具类
wechat-common-sdk ? 场景:目前工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想 ...
- React中jsx调用js例子
需求: 界面新增一个“导入项目”按钮,点击该按钮可以执行项目导入功能.按钮点击事件部分是jsx语法代码,而项目导入部分是封装的js语法代码,假设此处用alert("123")代替. ...
- Oracle 12c CDB PDB 安装/配置/管理
Oracle安装参考:https://www.cnblogs.com/zhichaoma/p/9288739.html 对于CDB,启动和关闭与之前传统的方式一样,具体语法如下: STARTU ...
- mac与windows共享键盘鼠标(synergy)
桌面上有两台电脑, 一台mac一台windows, 由于桌面空间紧张, 放两套键盘鼠标有点浪费空间, 如果能让mac和windows共享键盘鼠标就好了, 经过一番搜寻, 找到了一款名为synergy的 ...