前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用RadonDB实现MySQL分库分表

利用RadonDB实现MySQL分库分表

作者头像
田帅萌
发布于 2020-03-10 13:45:15
发布于 2020-03-10 13:45:15
2K00
代码可运行
举报
文章被收录于专栏:「3306 Pai」社区「3306 Pai」社区
运行总次数:0
代码可运行

利用RadonDB实现MySQL分库分表

RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆分及高可用服务。RadonDB包括Radon, Xenon, MySQL三部分安装。其中Radon,Xenon官方没有发行二进制包,需要编译安装, MySQL可以使用官方编译后的版本安装,但需要使用MySQL 5.7这个版本。在以下文档安装过程中如果遇到问题请及时的反馈作者:QQ/Weixin: 82565387

本文内容较长大致分为:

  • 环境基本情况介绍
  • 编译环境准备
  • Xenon编译安装
  • Radon 编译安装
  • MySQL安装部署及启动
  • Xtrabackup安装
  • Xenon安装部署
  • Xenon的基本管理
  • Radon安装布署
  • Radon集群安装
  • 小结

其中MySQL的配置限于文章长度,这里不在放在文中,如果需要联系作者获取即可。

环境基本情况介绍

机器名

角色

IP

部署路径

radon1

radon

172.16.0.121

/data/radon

radon1

radon

172.16.0.122

/data/radon

dzst150

xenon,mysql,xtrabackup

172.16.0.150

/data/xenon,标准化安装mysql,利用percona安装xtrabackup

dzst151

xenon,mysql,xtrabackup

172.16.0.151

/data/xenon,标准化安装mysql,利用percona安装xtrabackup

dzst152

xenon,mysql,xtrabackup

172.16.0.152

/data/xenon,标准化安装mysql, 利用percona安装xtrabackup

服务IP

172.16.0.100

该IP就类似于机器上多绑一个ip

  • Radon下载: https://github.com/radondb/radon
  • Xenon下载: https://github.com/radondb/xenon
  • golang下载: https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
  • MySQL下载: https://dev.mysql.com/downloads/mysql/ 下载MySQL 5.7版本
  • Xtrabakup:https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/也可以利用https://repo.percona.com/yum/percona-release-latest.noarch.rpm 安装2.4版本的xtrabacku

在环境安装环节,大致可以分为:radon和 xenon(包含:MySQL, xtrabackup)的安装部署。

编译环境准备

Golang安装需要在编译机上安装即可,其它机器不用安装。

  • 下载go1.13.4安装包
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
  • 解压安装包
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tar -xvf go1.13.4.linux-amd64.tar.gz -C /usr/local
  • 修改环境变量 在~/.bash_profile末尾添加一行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PATH=$PATH:/usr/local/go/bin# source ~/.bash_profile
  • 验证Go安装是否成功
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# go versiongo version go1.13.4 linux/amd64

Xenon编译安装

  • 下载源代码 & 编译
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# git clone https://github.com/radondb/xenon.git# cd xenon# make

确认bin目录下生成了: xenon,xenoncli 便大功告成。

  • 简单的打包:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir xenoncp -r bin xenoncp xenon.json xenonecho "/etc/xenon/xenon.json" >xenon/bin/config.path

其中xenon.json 后面需要根据机器的IP修改一下。把这个xenon同步复制到 :172.16.0.150, 172.16.0.151 ,172.16.0.152的/data目录下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scp -r xenon root@172.16.0.150:/data/scp -r xenon root@172.16.0.151:/data/scp -r xenon root@172.16.0.152:/data/

Radon 编译安装

  • 下载Radon&编译
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# git clone https://github.com/radondb/radon# cd radon# make

没有报错,确认bin目录下生成 radon

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls -l bin/total 17024-rwxr-xr-x 1 root root 17431669 Nov 15 11:11 radon
  • 简单打包
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir radoncp -r bin radon/cp conf/radon.default.json radon/bin/

后续对于部署radon节点,直接复制 radon 这个目录即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scp -r radon root@172.16.0.121:/data/

MySQL安装部署及启动

MySQL 需要在三台Xenon角色的机器上都安装,安装步骤一样,这里不再重复。下面给一个统一的安装方式。

1. 下载mysql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /datawget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

2. MySQL软件路径 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /opt/mysqlcd /opt/mysql/tar zxvf /data/mysql/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gzln -s /opt/mysql/mysql-xxx /usr/local/mysql

3. 创建数据库相关目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /data/mysql/ -pmkdir /data/mysql/mysql3306/{data,logs,tmp} -p

4. 创建mysql用户&更改权限

同时更改一下mysql用户的密码,方便后续使用(建议ssh信任使用),按个人习惯更改密码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groupadd mysqluseradd -g mysql -s /bin/bash  -d /usr/local/mysql  mysqlpasswd mysql

5. 更改权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chown -R mysql:mysql /data/mysql/mysql3306chown -R mysql:mysql /opt/mysql/chown -R mysql:mysql /usr/local/mysql

配置文参考 /data/mysql/mysql3306/my3306.cnf 公众号中没办法放置配置文件,如果需要联系作者获取

6. 初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf  --initialize

确认没有错误提示,从error log中找到初始化的密码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep  "password" /data/mysql/mysql3306/data/error.log

7. 启动MySQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3306/my3306.cnf &

8. 进入mysql更改密码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -pmysql>alter user user() identified by 'zstzst';

9. 关闭MySQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -pmysql>shutdown;

10. 创建帐号

测试用服务帐号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create user 'wubx'@'%' identified by 'wubxwubx';grant all privileges on *.* to 'wubx'@'%';

MySQL复制使用帐号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create user 'repl'@'%' identified by 'repl4slave';grant replication slave on *.* to 'repl'@'%';

11. 为MySQL加载半同步需要plugin

进入MySQL执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set global super_read_only=0;set global read_only=0; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';     

构建成主从结构 三台机器最终构建成基于GTID的复制结构,就完成了MySQL的安装。

Xtrabackup安装

三台xenon的机器上都需要安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-\XtraBackup-2.4.16/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.16-1.el7.x86_64.rpm

安装xtrbackup24

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#yum localinstall -y percona-xtrabackup-24-2.4.16-1.el7.x86_64.rpm

确认无报错

利用 xtrabackup --version 验证 有正确的结果输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtrabackup --versionxtrabackup: recognized server arguments: xtrabackup version 2.4.16 based on MySQL server 5.7.26 Linux (x86_64) (revision id: c807cfa)

Xenon安装部署

xenon的环境搭建,包括现有MySQL想引入xenon实现MySQL高可用需要把握以下几点:

1. 把MySQL的半同步plugin加载上去

2. 对外服务IP是在xenon.json配置文件中leader-start-command 这个项成为leader时触发,如果我们使用的普通用户运行xenon,还需要给该用户配置sudo 相关权限。

3. xenon的rebuildme需要xenon.json中backup中"ssh-user" 指定的用户打通ssh信任,或是指定正确的密码。

4. Xenon中发生选举后,新的服务节点一定要对外发起arping , 请参考xenon.json中"leader-start-command" 的定义。

  • 基于编译机上编译copy过来的xenon部署。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /data/xenonmkdir /etc/xenonmv xenon.json /etc/xenon/chown -R mysql:mysql /etc/xenonchown -R mysql:mysql /data/xenon
  • xenon的配置xenon.json
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{        "server":        {                "endpoint":"172.16.0.150:8801"        },
        "raft":        {                "meta-datadir":"raft.meta",                "heartbeat-timeout":1000,                "election-timeout":3000,                "leader-start-command":"sudo /sbin/ip a a 172.18.0.100/16 dev eth0 && arping -c 3 -A  172.18.0.100  -I eth0",                "leader-stop-command":"sudo /sbin/ip a d 172.18.0.100/16 dev eth0"        },
        "mysql":        {                "admin":"root",                "passwd":"",                "host":"127.0.0.1",                "port":3306,                "basedir":"/usr/local/mysql",                "defaults-file":"/data/mysql/mysql3306/my3306.cnf",                "ping-timeout":1000,                "master-sysvars":"super_read_only=0;read_only=0;sync_binlog=default;innodb_flush_log_at_trx_commit=default",                "slave-sysvars": "super_read_only=1;read_only=1;sync_binlog=1000;innodb_flush_log_at_trx_commit=2"        },
        "replication":        {                "user":"repl",                "passwd":"repl4slave"        },
        "backup":        {                "ssh-host":"172.16.0.150",                "ssh-user":"mysql",                "ssh-passwd":"mysql",                "ssh-port":22,                "backupdir":"/data/mysql/mysql3306/data",                "xtrabackup-bindir":"/usr/bin",                "backup-iops-limits":100000,                "backup-use-memory": "1GB",                "backup-parallel": 2        },
        "rpc":        {                "request-timeout":500        },
        "log":        {                "level":"INFO"        }}

对于xenon的配置文件在三台机器上注意IP处理一下就可以,每台机器换成自已的IP即可。对于Xenon的配置,从实践来看遇到遇到最多的问题忘了做arpping 造成 集群切换时新节点VIP对外生效。

  • 配置sudo 相关权限 需要xenon所在的机器上利用root执行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
visudo

添加:

mysql ALL=(ALL) NOPASSWD: /usr/sbin/ip

  • 为Xenon中节点自动重建准备,为xenon的rebuildme准备一个ssh信任。该ssh 信任是需要用Xenon启动的帐号, 在172.16.0.150上执行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
su - mysqlssh-keygen一路回车cd .sshcat id_rsa.pub >authorized_keysrm known_hostschmod 600 *

把.ssh 目录分发到其它两台机器上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scp -r .ssh mysql@172.16.0.151:~/scp -r .ssh mysql@172.16.0.152:~/

测试ssh信任是不是工作ok。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh 172.16.0.151ssh 172.16.0.150ssh 172.16.0.152
  • 安装sshpass
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install -y sshpass

Xenon的基本管理

  • 启动xenon:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
su - mysqlcd /data/xenonnohup ./bin/xenon -c /etc/xenon/xenon.json >./xenon.log 2>&1 &

生产中推荐使用:screen 或是supervisor

  • 关闭: xenon:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pkill xenon
  • xenon的raft节点间通信 在xenon进程启动的情况下,执行(这个动作需要在三个节点上都要执行)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bin/xenoncli cluster add 172.16.0.150:8801,172.16.0.151:8801,172.16.0.152:8801

-节点成员状态查看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bin/xenoncli cluster raft

提示 ./bin/xenoncli cluster add 172.16.0.150:8801,172.16.0.151:8801,172.16.0.152:8801 后面的节点成员不要出现空格。到这里xenon部署完成。下面让我们检查一下xenon是不是可以工作起来。

  • xenon工作情况检查

1. 节点成员状态是不是正常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/data/xenon/bin/xenoncli cluster status

从上图可以看到目前leader节点是172.16.0.152 这个节点 可以去这个节点上查看一下是不是拥有服务IP。

2. leader节点是不是有服务IP及关闭了只读状态

[root@dzst152 xenon]#ip addr show

3. 把152上MySQL关闭看看会不会切换 mysql> shutdown;

[root@dzst152 xenon]# ./bin/xenoncli cluster status

从图上看leader节点切换到151这台机器上。可以去151上查看一下服务ip是不是切换过去。而且神奇的发现172.16.0.152上的MySQL又被Xenon 拉起来。

4. 节点重建

这个属于一个新的运维理念。可以把故障分为已知自动可修复,已知但不可能自动修复(重建), 未知故障节点下线,新加入节点重建加入。xenon在这里也引入了这样的理念。节点重建在xenon中引入了一个保护,只对从节点可以重建,主节点不能在线重建。

基于上面的情况,我这里对dzst152重建一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bin/xenoncli mysql rebuildme

从以上流程上看xenon的的节点重建是封装了xtrabackup的备份及恢复,自动重建一个节点。

5. 通过xenon提供服务IP连接MySQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -h 172.16.0.100 -P3306 -uwubx -pwubxwubx

其中IP要指向提供的服务IP,这个IP有点VIP的感觉,但这个只是在leader机器的网卡上多绑一个IP罢了,和利用VRRP搞定的VIP还是有区别的。所以在云上环境xenon也是可以跑的。到这里xenon的搭建告一段落,在RadonDB中有多组Xenon组成,在Xenon中默认架构中也只有带有服务节点的IP对外提供服务。其它节点属于standby状态。当然standby的机器也可以对外服务。

Radon安装布署

Radon 可以部署为独立节点,也可以部署为集群模式。Radon在定位上是做一个无状态路由节点,对业务层提供数据库的分库分表的能力。

基于编译的radon运行

  • radon配置 /data/radon/bin/radon.json
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{        "proxy": {                "endpoint": ":3306",                "meta-dir": "bin/radon-meta",                "peer-address": ":8080"        },        "audit": {                "audit-dir": "bin/radon-audit"        },        "log": {                "level": "INFO"        },        "monitor": {            "monitor-address": "0.0.0.0:13380"        }}
  • 启动Radon
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /data/radon/bin/radon -c /data/radon/con/radon.json > radon.log 2>&1 &

为了方便查看,先直接把日志写到了当前目前下面。

  • 向Radon中添加MySQL节点

目前Radon是通过开放API接口的方式进行集群管理,这样方便开发人员进行定制化的开发,所以我们在配置过程中也是通过调用Radon开放的API接口进行MySQL节点的添加。Radon默认采用8080为管理端口,3308为访问端口 通过管理端口开放API添加MySQL节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#curl -i -H 'Content-Type: application/json' -X POST -d '{"name": "backend1", "address": "172.16.0.100:3306", "user":"wubx", "password": "wubxwubx", "max-connections":1024}' http://127.0.0.1:8080/v1/radon/backend

name表示后端节点的名称,可自定义,但要求唯一。

address表示要添加的MySQL的连接地址以及端口,这个建议指Xenon对外提供的服务IP;

userpassword表示用于连接MySQL的用户名和密码;

max-connections表示最大连接数;

从API请求上看,这里也没涉及到从库的节点。

如果添加节点成功会返回以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
HTTP/1.1 200 OKDate: Sat, 17 Nov 2018 06:23:49 GMTContent-Length: 0
  • 通过RadonDB访问MySQL 这里可以通过后端Xenon数据库上提供的任意用户名和密码连接到Radon上,Radon上对于认证,还是需要和后端做一次认证处理,同时radon上也不保存用户名和密码。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysql -h 172.16.0.121 -P3306 -uwubx -pwubxwubx

连接接到radon操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create database zst;create table tb1(id bigint not null auto_increment, c1 varchar(64), d1 datetime, primary key(id));**Query OK, 0 rows affected (11.91 sec)**

从上面的操作上看, 创建一个单表为什么这么慢呢?密秘就在: /data/radon/bin/radon-eta下面

从上面可以看出来radon,创建的db,对应的在radon-meta下创建了一个目录记录着表创建情况,如:

在上图中可以看出, tb1属于zst下面的一个表,利用id做hash拆分,总共创建了64个分片,对应4096个slot, 在partions中标明每个分片的名称及对应的slot和后端的节点。后续扩容就可以通过移动分片到后面不同的Xenon上,从而实现扩容。

  • Radon的一些高级API

通过上面添加后面数据库的操作,大家可能会有一个大概的感受:Radon是通过http restful api来控制配置。

完整API列表请查阅:https://github.com/radondb/radon/blob/master/docs/api.md

使用方法,例如获取后面分区情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://127.0.0.1:8080/v1/shard/shardz

其中我们大家可能比较感兴趣的:Radon是如何扩容的?

这个API: https://github.com/radondb/radon/blob/master/docs/api.md#shift

从这个API上看,目前只是提供一个radon的配置变更,实质的数据迁移还需要另外的工具配置完成, 从这点看青云的RadonDB后面还有不少自动管理工作内容并不是全在Radon中完成的。

Radon集群安装

单节点的Radon工作并不能让人放心,MySQL的高可用我们可以用Xenon搞定。但现在Radon还是单点中,下面我们在给Radon也配置成cluster模式。Radon原生支持高可用模式,配置在任意节点更改会自动同步到其它节点上。

这里通过举例看一下radon本身的cluster搭建。我们现在已经有一个radon节点:172.16.0.121 (master) 接下来我们在搭建一个节点:172.16.0.122 (slave)

在122上直接利用一个新的配置启动一个Radon /data/radon/bin/radon.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{        "proxy": {                "endpoint": ":3306",                "meta-dir": "bin/radon-meta",                "peer-address": ":8080"        },        "audit": {                "audit-dir": "bin/radon-audit"        },        "log": {                "level": "INFO"        },        "monitor": {            "monitor-address": "0.0.0.0:13380"        }}

启动122上面的radon

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/data/radon/bin/radon -c /data/radon/conf/radon.json >radon.log 2>&1 &
  • 原121上操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 curl -i -H 'Content-Type: application/json' -X POST -d '{"address": "172.16.0.121:8080"}' http://172.16.0.121:8080/v1/peer/add
 curl -i -H 'Content-Type: application/json' -X POST -d '{"address": "172.16.0.122:8080"}' http://172.16.0.121:8080/v1/peer/add
  • 在122上操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 curl -i -H 'Content-Type: application/json' -X POST -d '{"address": "172.16.0.121:8080"}' http://172.16.0.122:8080/v1/peer/add
 curl -i -H 'Content-Type: application/json' -X POST -d '{"address": "172.16.0.122:8080"}' http://172.16.0.122:8080/v1/peer/add

分别连接到两个节点上操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -h 172.16.0.121 -P3306 -uwubx -pwubxwubxmysql -h 172.16.0.122 -P3306 -uwubx -pwubxwubx
insert into tb1(c1, d1) values(uuid(), now());...select * from tb1;delete from tb1 where id= ? ; -- 上面获取的值执行一下。

到此Radondb Cluster也搭建完成。

小结

RadonDB是基于Golang构建的MySQL高可用+分库分表方案,基本Xenon也可以独立应用于MySQL的高可用架构, Radon相当于一个分库分表的Proxy和Xenon并没有特别的关联。对于生产中使用感觉也非常容易上手。如果你在使用中遇到技术问题或是其它需要技术支持的情况请联系我。

可以关注知数堂腾讯课堂上我分享的RadonDB相关视频。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
使用Xenon实现MySQL高可用集群
1、Xenon 介绍2、架构环境说明3、MySQL 安装准备3.1、MySQL 主从复制搭建3.2、MySQL 半同步复制配置3.3、系统配置3.4、配置 hosts 解析3.5、各节点配置 ssh 互信3.5.1、150 配置3.5.1、151 配置3.5.1、152 配置4、xenon 配置准备4.1、配置 golang 环境4.2、安装xtrabackup4.3、安装 xenon4.4、配置xenon4.5、开启 xenon 并配置集群5、检验 xenon 环境5.1、检测 VIP 切换5.2、数据库重建5.2.1、模拟删除主库数据目录5.2.2、进行数据库重建
老叶茶馆
2020/06/24
2.6K2
使用Xenon实现MySQL高可用集群
MySQL分库分表中间件-RadonDB性能测试
了解一个产品,从性能测试下手是最好的方法,这里就是针对金融级MySQL解决方案RadonDB中的核心组件Radon进行一次性能测试。
田帅萌
2020/04/02
1.3K0
MySQL分库分表中间件-RadonDB性能测试
快速实现wordpress迁移到RadonDB上
最近发现RadonDB在特性中引入一个新特性:Single table 到分区表快速转换,另外还引进了一个优秀的特性,把现有的MySQL库直接attach到Radon下面。看到这两个特性真是太赞了。可以非常方便用户实现原来的单表,快速变成拆分表,一条命令搞定。具体的issue参考:https://github.com/radondb/radon/issues/436 而且这个特性会在1.0.8这个版本发布。下面我们一块来体验一下吧。该文档可以用于先看看整体思想上有一个认识后再行动。
田帅萌
2020/03/19
6630
MySQL数据备份与恢复(二) -- xtrabackup工具
上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为广泛的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容(本文篇幅较长,建议收藏后阅读)。
俊才
2020/04/07
1K0
Mysql5.7多实例配置
Mysql采用离线的二进制包安装方式,安装在/usr/local/mysql 两个实例配置 创建目录 > mkdir -p /usr/local/mysql/data/{3306,3307} 3306配置 > vim /etc/my3306.cnf [client] socket=/usr/local/mysql/data/3306/mysql.sock [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data/3306 socke
入门笔记
2022/06/02
8710
xtrabackup 备份+还原简记
1、安装 下载地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/
星哥玩云
2022/08/18
9520
上课一不小心讲了年入百万起的项目MySQL10|#14
在乙方工作的学生,总会遇到特别稀奇古怪的问题。由于从事数据库培训及咨询服务,有时也给学生担任起二级技术支持的作用(response slow), 前几天一个学生又被甲方爸爸吊打,留堂不让回家,让出一个MySQL升级的安全patch~~~ 甲方爸爸数据库专家意见是MySQL不能升级,但可以通过打Patch来解决安全Bug。
wubx
2021/07/15
3420
上课一不小心讲了年入百万起的项目MySQL10|#14
用 Docker 搭建高可用 MySQL 集群玩玩儿!
4、创建五个数据卷(pxc无法直接存取宿组机的数据,所以创建五个docker数据卷)
dys
2021/09/09
1.7K0
RadonDB架构解析
RadonDB在DTCC大会主会场宣布开源了, 一个期待已久的产品终于走进了开源社区。 感谢青云领导层的对技术贡献的情怀。
田帅萌
2018/09/14
1.8K0
RadonDB架构解析
Xtrabackup搭建主从复制
mysqldump:逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能够接受的,如果数据库非常大,那再使用mysqldump备份就不太适合了。
AsiaYe
2019/11/06
1.7K0
Xtrabackup搭建主从复制
Mysql MHA 架构介绍及实践
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。
mikelLam
2022/10/31
1.4K0
Mysql MHA 架构介绍及实践
MySQL DBA如何利用strace/pstack/gdb来定位问题
strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用。 Strace是一个简单的跟踪系统调用执行的工具。在其最简单的形式中,它可以从开始到结束跟踪二进制的执行,并在进程的生命周期中输出一行具有系统调用名称,每个系统调用的参数和返回值的文本行。
老叶茶馆
2020/06/24
2.3K0
xtrabackup热备和恢复MySQL
热备份的方式也是直接复制数据物理文件,和冷备份一样,但是热备份可以不停机直接复制,一般用于7*24小时不间断的重要核心业务。MySQL的社区版本热备份工具InnoDB Hot Backup是付费的,只能试用30天,商业版才可以永久的使用,
星哥玩云
2022/08/16
1.3K0
高可用 | Xenon:后 MHA 时代的选择
在 MySQL(5.5 及以下)传统复制的时代,MHA(Master High Availability)在 MySQL 高可用应用中非常成熟。在 MySQL(5.6)及 GTID 时代开启以后,MHA 却没有与新的 MySQL 一起顺应时潮。
用户1278550
2021/06/16
1.2K0
高可用 | Xenon:后 MHA 时代的选择
Linux 环境搭建 MySQL8.0.28 主从同步环境
首先在介绍MySQL 主从时,我们来看看 DB-Engines 排行榜上四月数据库的变化,前三甲居然都有小幅度增长,相反增长迅猛的 PG 和 MongoDB 有所减少,一个月的增长趋势说明不了问题,下图是从 13 年开始的趋势图,Oracle 和 MySQL 渐渐趋平,学习了解 MySQL 还是很有必要的。下面开始进入正题。
JiekeXu之路
2022/05/17
1K0
Linux 环境搭建 MySQL8.0.28 主从同步环境
MySQL高可用之PXC
PXC简介 PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更多而且更成熟一些。PXC相比那些传统的基于主从模式的集群架构MHA和双主,Galera Cluster 最突出的特点就是解决了诟病已久的复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,它们互相的关系是对等的。本身Galera Cluster也是一种多主架构。PXC是在存储引擎层实现的同步复制,而非异步复制,所以其数据的一致性是相当高的。
小手冰凉
2020/07/06
2.7K0
MySQL高可用之MHA集群部署
很多小伙伴反映说网上的MHA教程甚至收费的课程里的MHA教程都存在坑,不少教程只是搭建完成了,是否真的能在主库宕机时自动切换不得而知,鉴于此情况,简单写了一个MHA集群的搭建步骤。由于搭建的次数较多,没踩到过多的坑(坏笑),所以没有写太多的排坑方法,如果小伙伴们在部署的过程中遇到问题可以和我沟通,文中如有问题欢迎斧正。
俊才
2020/05/26
1K0
MySQL高可用之MHA集群部署
MySQL8.1.0版本正式发布带来哪些新特性?
2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本.
终有救赎
2023/12/14
5660
MySQL8.1.0版本正式发布带来哪些新特性?
使用Radon构建MySQL统一数据访问层
这篇也可以说是:RadonDB使用最佳建议,从原理上了解RadonDB的拆分后数据访问逻辑。Radon中整理架构如下:
田帅萌
2020/04/02
1.3K0
使用Radon构建MySQL统一数据访问层
「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)
为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样部署随便挂哪个主机我们都不担心。 源码:https://github.com/limingios/netFuture/blob/master/docker-swarm/
IT架构圈
2019/03/04
6620
「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)
相关推荐
使用Xenon实现MySQL高可用集群
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 利用RadonDB实现MySQL分库分表
    • 环境基本情况介绍
    • 编译环境准备
    • Xenon编译安装
    • Radon 编译安装
    • MySQL安装部署及启动
    • 构建成主从结构 三台机器最终构建成基于GTID的复制结构,就完成了MySQL的安装。
    • Xtrabackup安装
    • Xenon安装部署
    • Xenon的基本管理
    • Radon安装布署
    • Radon集群安装
    • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档