利用RadonDB實現MySQL分庫分表

利用RadonDB實現MySQL分庫分表

RadonDB是青雲上提供的MySQL分佈式解決方案,提供數據庫的透明拆分及高可用服務。RadonDB包括Radon, Xenon, MySQL三部分安裝。其中Radon,Xenon官方沒有發行二進制包,須要編譯安裝, MySQL可使用官方編譯後的版本安裝,但須要使用MySQL 5.7這個版本。在如下文檔安裝過程當中若是遇到問題請及時的反饋做者:QQ/Weixin: 82565387

本文內容較長大體分爲:mysql

  • 環境基本狀況介紹
  • 編譯環境準備
  • Xenon編譯安裝
  • Radon 編譯安裝
  • MySQL安裝部署及啓動
  • Xtrabackup安裝
  • Xenon安裝部署
  • Xenon的基本管理
  • Radon安裝佈署
  • Radon集羣安裝
  • 小結

其中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安裝須要在編譯機上安裝便可,其它機器不用安裝。

  • 下載go1.13.4安裝包
# 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
  • 修改環境變量 在~/.bash_profile末尾添加一行
export PATH=$PATH:/usr/local/go/bin# source ~/.bash_profile
  • 驗證Go安裝是否成功
# go versiongo version go1.13.4 linux/amd64

Xenon編譯安裝

  • 下載源代碼 & 編譯
# 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/

Radon 編譯安裝

  • 下載Radon&編譯
# 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安裝部署及啓動

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公衆號中沒辦法放置配置文件,若是須要聯繫做者獲取

  1. 初始化
/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';     

構建成主從結構 三臺機器最終構建成基於GTID的複製結構,就完成了MySQL的安裝。

Xtrabackup安裝

三臺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安裝部署

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部署。
cd /data/xenonmkdir /etc/xenonmv xenon.json /etc/xenon/chown -R mysql:mysql /etc/xenonchown -R mysql:mysql /data/xenon
  • xenon的配置xenon.json
{ "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執行
相關文章
相關標籤/搜索