快乐学习
前程无忧、中华英才非你莫属!

Tidb本地部署与MySQL实时同步

前言
鉴于TiDB跟MySQL还有点区别,如果企业直接应用它并且还要一定的适应期,可以先把TiDB作为MySQL的从库!
这样会大大提高和扩展数据库的读能力!其他痛点只要维护好主从延迟和异常,完全木有问题!TiDB是用Syncer工具来做实时同步的!
*Syncer 使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示,配合 AlertManager 来实现报警!
TiDB整体给人的俄感觉就是集成了MySQL5.7的内核进行封装的,就是把MySQL+Hbase的特性进行了集成!从而产生了下一代数据库!
OLTP特性+NOSQL概念 +分布式的方法 == NewSQL(下一代数据库)从解决了传统业务,OLTP、OLAP共存的难点!
轻运维、重业务、快速迭代发展为目标!还是不错的哦~
一、环境设置
下最新的centos7 版本
为了防止安装出错,关闭防火墙,关闭selinux ,并进行重启生效之后,在进行安装!
1、关闭防火墙
systemctl stop firewalld.service   关闭防火墙
firewall-cmd --state  验证防火墙
systemctl disable firewalld.service  关闭防火自动重启
systemctl status firewalld    验证防火墙服务状
2、关闭selinux
关闭:vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled 
3、CentOS 7+  系统, Transparent Hugepages 必须被设置为 always
4、reboot(重启)
5、安装 
# 下载压缩包
# 检查文件完整性,返回 ok 则正确
sha256sum -c tidb-latest-linux-amd64.sha256
# 解开压缩包
tar -xzf tidb-latest-linux-amd64.tar.gz
cd tidb-latest-linux-amd64
6、启动
步骤一. 启动 PD:
./bin/pd-server --data-dir=pd
--log-file=pd.log
步骤二. 启动 TiKV:
./bin/tikv-server --pd="127.0.0.1:2379"
--data-dir=tikv
--log-file=tikv.log
步骤三. 启动 TiDB:
./bin/tidb-server --store=tikv
--path="127.0.0.1:2379"
--log-file=tidb.log

写个shell脚本,来简化操作!
// start_tidb.sh
cd  /usr/local/tidb-latest-linux-amd64;./bin/pd-server --data-dir=pd > pd.log 2>&1 &
cd  /usr/local/tidb-latest-linux-amd64; ./bin/tikv-server --pd="127.0.0.1:2379" --data-dir=tikv > tikv.log 2>&1 &
cd /usr/local/tidb-latest-linux-amd64; ./bin/tidb-server --store=tikv --path="127.0.0.1:2379" > tidb-server.log 2>&1 &

使用 syncer 增量导入数据实现数据和 MySQL 实时同步

# 下载 tool 压缩包
# 检查文件完整性,返回 ok 则正确
sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256
# 解开压缩包
tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz
cd tidb-enterprise-tools-latest-linux-amd64

Syncer 推荐部署在 TiDB 集群上。

MySQL设置环境:
设置server-id、开启 binlog、ROW格式、杀掉所有连接、binlog_row_image 设置为 FULL 、
备注,由于官方推荐用mydumper 工具,导出mysql中的数据,并导入到TiDB当中!性能是最好的!检查mydumper的导入,导出权限功能正常即可!
目标
数据导入、导出步骤略,以mydb3数据库为例,进行测试!这里以操作employee表操作为例,看看TiDB(192.168.1.108)时候能实时跟上主库!
在/usr/local/tidb-enterprise-tools-latest-linux-amd64/bin 目录下新建Syncer 的配置文件:config.toml 和syncer.meta。
config.toml
log-level = "info"
server-id = 101
## meta 文件地址
meta = "./syncer.meta"
worker-count = 16
batch = 10
## pprof 调试地址, Prometheus 也可以通过该地址拉取 syncer metrics
## 将 127.0.0.1 修改为相应主机 IP 地址
status-addr = "127.0.0.1:10086"
## 跳过 DDL 或者其他语句,格式为 **前缀完全匹配**,如: `DROP TABLE ABC`,则至少需要填入`DROP TABLE`.
# skip-sqls = ["ALTER USER", "CREATE USER"]
## 指定要同步数据库名;支持正则匹配,表达式语句必须以 `~` 开始
#replicate-do-db = ["~^b.*","s1"]
## 指定要同步的 db.table 表
## db-name 与 tbl-name 不支持 `db-name ="dbname,dbname2"` 格式
#[[replicate-do-table]]
#db-name ="dbname"
#tbl-name = "table-name"
#[[replicate-do-table]]
#db-name ="dbname1"
#tbl-name = "table-name1"
## 指定要同步的 db.table 表;支持正则匹配,表达式语句必须以 `~` 开始
#[[replicate-do-table]]
#db-name ="test"
#tbl-name = "~^a.*"
## 指定**忽略**同步数据库;支持正则匹配,表达式语句必须以 `~` 开始
#replicate-ignore-db = ["~^b.*","s1"]
## 指定**忽略**同步数据库
## db-name & tbl-name 不支持 `db-name ="dbname,dbname2"` 语句格式
#[[replicate-ignore-table]]
#db-name = "your_db"
#tbl-name = "your_table"
## 指定要**忽略**同步数据库名;支持正则匹配,表达式语句必须以 `~` 开始
#[[replicate-ignore-table]]
#db-name ="test"
#tbl-name = "~^a.*"
# sharding 同步规则,采用 wildcharacter
# 1. 星号字符 (*) 可以匹配零个或者多个字符,
#    例子, doc* 匹配 doc 和 document, 但是和 dodo 不匹配;
#    星号只能放在 pattern 结尾,并且一个 pattern 中只能有一个
# 2. 问号字符 (?) 匹配任一一个字符
#[[route-rules]]
#pattern-schema = "route_*"
#pattern-table = "abc_*"
#target-schema = "route"
#target-table = "abc"
#[[route-rules]]
#pattern-schema = "route_*"
#pattern-table = "xyz_*"
#target-schema = "route"
#target-table = "xyz"
[from]
host = "192.168.1.61"
user = "root"
password = "zhangtongle123"
port = 3306
[to]
host = "192.168.1.108"
user = "root"
password = ""
port = 4000
syncer.meta
(别忘记获取主服务的binlog名称和节点位置的命令哈:show master status
binlog-name = "mysql-bin.000041"
binlog-pos = 120

启动 syncer

./syncer -config config.toml
然后在mysql服务器上插入一条:id=9的数据,效果更MySQL的主从同步效果一样!
测试方法:部署主从环境之后,在主库上上运行tpcc压力测试,然后观察tpcc测试结果,slave(mysql从库和TiDB)上数据复制进度以及数据一致性等。
./bin/syncer -config config.toml
打赏
赞(0) 打赏
未经允许不得转载:同乐学堂 » Tidb本地部署与MySQL实时同步

特别的技术,给特别的你!

联系QQ:1071235258QQ群:710045715

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

error: Sorry,暂时内容不可复制!