使用 HAProxy 反向代理 TiDB Dashboard
背景
因为数据库往往部署在内网,当需要在外网查看 TiDB 的的状态的时候,就很不方便,通过反向代理可以将TiDB Dashboard 释放到外网,方便随时查看数据库运行状态。
本文以 HAProxy 举例
配置反向代理以在 8033 端口反向代理 TiDB Dashboard 为例,在 HAProxy 配置文件中,新增如下配置:
1234567frontend tidb_dashboard_front bind *:8033 use_backend tidb_dashboard_back if { path /dashboard } or { path_beg /dashboard/ }backend tidb_dashboard_back mode http server tidb_dashboard 192.168.0.123:2379
其中 192.168.0.123:2379为 TiDB Dashboard 实际地址中的 IP 及端口部分。
重启 HAProxy,以使配置生效。
测试反向代理是否生效:访问 HAProxy ...
mongodb 跨版本升级指南
描述日常工作中,经常需要升级数据库版本,常常还面临跨版本的升级,每个版本升级前都会有一些需要注意的点,今天就把主要的流程和需要注意的点写下来,给需要升级数据库的你。
服务器分布这是我假设的升级目标,从3.0升级到4.0。
10.204.11.102 3.2.11
10.204.11.133 3.0.6
10.204.11.159 3.0.6
3.0.6–>3.2.11(17)–>3.6.23–>4.0.10-5
官方原生版本变迁时间线https://www.mongodb.com/docs/legacy/?site=docs
版本
首版发布时间
最新版本发布时间(截止20220812)
3.2
Jan 12, 2016
Dec 28, 2018
3.4
Dec 20, 2016
Jan 27, 2020
3.6
Dec 26, 2017
Mar 19, 2021
4.0
Aug 6, 2018
January 31, 2022
4.2
Oct 18, 2019
Jun 21, 2022
4.4
Sep 9, 2020
J ...
斐讯N1刷机教程
最近捣鼓了下全屋千兆的方案,正好需要一个旁路由设备,网上大部分用的是友善的r4s等设备,发热很大,有点贵,做旁路由其实还有个方案,就是斐讯的矿渣N1盒子。便宜好用,玩法很多,可以刷openwrt,可以刷电视系统,可以刷linux等。
目前价格150左右,这个买了个白色的,成色非常不错。以后斐讯的盒子会越来越不好买,作为收藏也不错。
主要用来当旁路由,也尝试了刷电视系统,过程记录再次,给需要的人做个参照,网上说的其实历史有点远,很多并不通用了。
天天链刷OpenWrt材料准备
balenaEtcher (if for win7 ,version<=1.5.120)
U盘
网线
N1盒子
电脑
openwrt固件
斐讯T1、N1官方系统降级工具
双公头USB刷机线
刷机过程原系统降级(可选)
N1盒子原生系统如果版本号高于V2.19则必须进行降级处理。
N1盒子用HDMI线连接显示器,盒子的USB口接上鼠标(不管是有线鼠标还是蓝牙鼠标都行),用网线连接到主路由器LAN口。
用鼠标点击 N1 官方固件的那个版本号 4 次,出现 “打开adb”字样即表示成功打开调试工具。 ...
逆向之汇编基础-1
最近在看逆向相关内容,需要一些汇编相关基础,借此机会整理复习一些逆向中需要用到的汇编知识。
计算机专业的学生都学过汇编语言,但是大部分人认为学的只是 Intel 8086 下的汇编 指令,枯燥、乏味、不具备实用性。其实,作为汇编语言的入门,学习 8086 的汇编指令已经 基本足够了。目前的硬件都是 x86 兼容架构的,无论多复杂的程序,最终都将成为 x86 指令。作为逆向的入门,只要掌握 80x86 的常用指令、寄存器的用法、堆栈的概念和数据在内存中 的存储,基本就够用了。
寄存器寄存器(Register)是 CPU 内部用于高速存储数据的小型存储单元,访问速度比内存快 很多,而且价格也高很多(在单位价格内,寄存器的价格要比内存贵,内存要比硬盘贵),但 是寄存器和内存都是用来存储数据的。 CPU 访问内存中的数据时有一个寻址的过程,因此访 问内存花费的时间会长,寄存器是集成在 CPU 内部的,由于寄存器的数量少,因此每个寄存 器有独立的名字,从而在访问时速度非常的快。 在 x86 寄存器中,与逆向相关的寄存器有基本寄存器、调试寄存器和控制寄存器。基本寄存器分为 4 类,分别是 8 ...
MySQL Router构建读写分离、故障自动转移的MGR集群
本文主要介绍如何在MGR集群前端部署MySQL Router以实现读写分离、读负载均衡,以及故障自动转移。
MySQL Router是一个轻量级的中间件,它采用多端口的方案实现读写分离以及读负载均衡,而且同时支持mysql和mysql x协议。
建议把MySQL Router部署在应用服务器上,每个应用服务器都部署一套,这样应用程序可以直接连接本机IP,效率更高,而且后端数据库发生变化时,程序端也无需修改IP配置。
1. 部署 MySQL RouterMySQL Router第一次启动时要先初始化:
1234567891011121314151617181920212223242526272829303132333435363738394041##参数解释# 参数 --bootstrap 表示开始初始化# 参数 GreatSQL@172.16.16.10:3306 是MGR服务专用账号# --user=mysqlrouter 是运行mysqlrouter进程的系统用户名#$ mysqlrouter --bootstrap GreatSQL@172.16.16.10:3306 --u ...
MRG使用异步连接故障转移切换集群
1.概述MySQL 8.0.22 开始,支持异步连接故障切换机制,在现有主从复制连接失败后,自动建立到新主的异步复制连接。
MySQL 8.0.23 开始,异步连接故障切换机制还支持组复制拓扑,通过自动监视组成员身份的更改并区分主节点和从节点,在组复制主节点故障选出新主节点后,自动建立到新主的异步复制连接。
MySQL 8.0.26 开始,组复制可以设置组成员在特定情况下采取的操作,比如成员操作 mysql_disable_super_read_only_if_primary 当选择一个新的primary时,使处于单主模式的组保持超级只读模式,这样该组只接受复制的事务,不接受来自客户端的任何直接写操作。
MySQL 8.0.27 开始,异步连接故障切换机制还允许组复制作为副本,组的主节点发生故障时,新的主节点自动重新连接到源端。新增成员操作mysql_start_failover_channels_if_primary,默认情况下,此成员操作是启用的,当启用此成员动作时,在"CHANGE replication SOURCE TO"语句中为复制通道设置SOURCE_ ...
构建自定义thanos版本
构建自定义版本
将thanos rule 页面的告警表达式的 expr 超链接修改为跳转到自定义的web UI。
环境准备
golang, git, node.js,具体的组件版本依赖写在 pkg/ui/react-app/package.json
golang1234567#下载 go version go1.17.6cat /etc/profileexport GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=/data0/goexport PATH=$PATH:$GOPATH/BIN
node.js123456789# 下载二进制包 node-v16.13.2-linux-x64.tar.xz xz -d node-v16.13.2-linux-x64.tar.xz tar xvf node-v16.13.2-linux-x64.tar cd node-v16.13.2-linux-x64 cp lib/ /usr/lib -rp cp -d bin/* /usr ...
mysqldump+mysqlbinlog mysql实时数据迁移方案
通常在运行的数据库上做迁移,会出现备份开始到恢复成功之间的数据丢失的情况,本文将讲解避免技巧。
假设要将 10.204.11.100 的 3306 端口实例迁移到 10.204.11.200上。
结合 mysqldump 和 mysqlbinlog 可以做到不停机实时迁移+数据不丢失的迁移。以下为主要步骤,可以在此基础上扩展改造。
123# step1: 将远端binlog拉取到目的端10.204.11.200>mysqlbinlog --read-from-remote-server --raw --host=10.204.11.100 --user dba --password='***' --port 3306 -vv mysql-bin.033813 --stop-never --result-file=/data0/mysql/a/
mysql-bin.033813 为 10.204.11.100 要读取的第一个binlog文件,通常为当前binlog,写入目的端/data0/mysql/a/目录备用。
...
mysql云上实例迁移到IDC后错误日志暴增
前几天收到监控告警,服务器磁盘容量不足,进一步查看,发现是一数据库实例错误日志暴增导致。
具体报错如下:
123456789102023-04-03T10:52:09.465937+08:00 11220648 [ERROR] InnoDB: Column table_name in table `mysql`.`innodb_table_stats` is VARCHAR(597) NOT NULL but should be VARCHAR(192) NOT NULL (length mismatch).2023-04-03T10:52:09.465947+08:00 11220648 [ERROR] InnoDB: Fetch of persistent statistics requested for table `db_name_xxx`.`abs_loan_def` but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or ...
MGR集群的部署及常见运维
一文快速掌握MGR集群的部署和运维。
掌握MGR集群的部署和运维。
本文通过多实例介绍MGR集群的部署流程及常见运维操作。
利用MySQL构建一个3节点的MGR集群,并用mysqld_multi进行管理。
为了简单起见,这个MGR集群采用单主(single-primary)模式,不采用多主(multi-primary)模式。
构建完MGR集群后,我会做增加新节点、集群版本升级、切主等其他操作。
本文采用MySQL 8.0.22版本构建。
1. 环境准备MySQL二进制包放在 /usr/local/ 下,即 basedir = /usr/local/MySQL-8.0.22。
三个实例按下面规划分配:
实例
端口
datadir
MySQL-01
3306
/data/MySQL/mgr01/
MySQL-02
3307
/data/MySQL/mgr02/
MySQL-03
3308
/data/MySQL/mgr03& ...