RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆分及高可用服务。RadonDB包括Radon, Xenon, MySQL三部分安装。其中Radon,Xenon官方没有发行二进制包,须要编译安装, MySQL可使用官方编译后的版本安装,但须要使用MySQL 5.7这个版本。在如下文档安装过程当中若是遇到问题请及时的反馈做者:QQ/Weixin: 82565387
本文内容较长大体分为:mysql
其中MySQL的配置限于文章长度,这里不在放在文中,若是须要联系做者获取便可。linux
机器名git
角色github
IPgolang
部署路径sql
radon1数据库
radonjson
172.16.0.121bash
/data/radonssh
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和 xenon(包含:MySQL, xtrabackup)的安装部署。
Golang安装须要在编译机上安装便可,其它机器不用安装。
# wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
# tar -xvf go1.13.4.linux-amd64.tar.gz -C /usr/local
export PATH=$PATH:/usr/local/go/bin# source ~/.bash_profile
# go versiongo version go1.13.4 linux/amd64
# git clone https://github.com/radondb/xenon.git# cd xenon# make
确认bin目录下生成了: xenon,xenoncli 便大功告成。
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目录下:
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/
# git clone https://github.com/radondb/radon# cd radon# make
没有报错,确认bin目录下生成 radon
ls -l bin/total 17024-rwxr-xr-x 1 root root 17431669 Nov 15 11:11 radon
mkdir radoncp -r bin radon/cp conf/radon.default.json radon/bin/
后续对于部署radon节点,直接复制 radon 这个目录便可
scp -r radon root@172.16.0.121:/data/
MySQL 须要在三台Xenon角色的机器上都安装,安装步骤同样,这里再也不重复。下面给一个统一的安装方式。
1. 下载mysql
cd /datawget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
2. MySQL软件路径 :
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. 建立数据库相关目录:
mkdir /data/mysql/ -pmkdir /data/mysql/mysql3306/{data,logs,tmp} -p
4. 建立mysql用户&更改权限
同时更改一下mysql用户的密码,方便后续使用(建议ssh信任使用),按我的习惯更改密码。
groupadd mysqluseradd -g mysql -s /bin/bash -d /usr/local/mysql mysqlpasswd mysql
5. 更改权限
chown -R mysql:mysql /data/mysql/mysql3306chown -R mysql:mysql /opt/mysql/chown -R mysql:mysql /usr/local/mysql
配置文参考 /data/mysql/mysql3306/my3306.cnf公众号中没办法放置配置文件,若是须要联系做者获取
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize
确认没有错误提示,从error log中找到初始化的密码。
grep "password" /data/mysql/mysql3306/data/error.log
7. 启动MySQL
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3306/my3306.cnf &
8. 进入mysql更改密码。
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -pmysql>alter user user() identified by 'zstzst';
9. 关闭MySQL
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -pmysql>shutdown;
10. 建立账号
测试用服务账号
create user 'wubx'@'%' identified by 'wubxwubx';grant all privileges on *.* to 'wubx'@'%';
MySQL复制使用账号
create user 'repl'@'%' identified by 'repl4slave';grant replication slave on *.* to 'repl'@'%';
11. 为MySQL加载半同步须要plugin
进入MySQL执行:
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';
三台xenon的机器上都须要安装:
#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
#yum localinstall -y percona-xtrabackup-24-2.4.16-1.el7.x86_64.rpm
确认无报错
利用 xtrabackup --version 验证有正确的结果输出。
xtrabackup --versionxtrabackup: recognized server arguments: xtrabackup version 2.4.16 based on MySQL server 5.7.26 Linux (x86_64) (revision id: c807cfa)
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"的定义。
cd /data/xenonmkdir /etc/xenonmv xenon.json /etc/xenon/chown -R mysql:mysql /etc/xenonchown -R mysql:mysql /data/xenon
{ "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对外生效。