Skip to content

Instantly share code, notes, and snippets.

@dotmanila
dotmanila / proxy-oc-tool.sh
Last active December 16, 2023 06:08
Orchestrator STONITH via ProxySQL
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export ORCHESTRATOR_API="$1"
OC=orchestrator-client
PSQL='mysql --defaults-file=/etc/proxysql/user.cnf -P6032 -h127.1'
VER=$(date +%s)
$OC -c raft-leader > /dev/null 2>&1
@dotmanila
dotmanila / ZFS_and_ext4_Configuration.txt
Last active December 27, 2022 04:56
ZFS and ext4 Configuration
# Create ext4 RAID
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 \
--name=mysql /dev/sdb /dev/sdc /dev/sdd /dev/sde
sudo mkdir /mysql-ext4
sudo mkfs.ext4 /dev/md0
sudo mount -o rw,relatime /dev/md0 /mysql-ext4
sudo mkdir /mysql-ext4/msb
sudo chown revin.revin /mysql-ext4/msb
@dotmanila
dotmanila / clickhouse-changelog.py
Last active February 12, 2022 18:35
Python MySQL Binlog Change Data Capture for Clickhouse Example
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import sys
import pymysql.cursors
from pymysqlreplication import BinLogStreamReader
from pymysqlreplication.row_event import (
DeleteRowsEvent,
@dotmanila
dotmanila / clickhouse-incr-refresh.sh
Created December 24, 2017 00:14
Clickhouse incremental refresh script using changelog data from https://gist.github.com/dotmanila/53a2c0b9b7a3be4f9e99b94aa203c66d
#!/bin/bash
_echo() {
echo "$(date +%Y-%m-%d_%H_%M_%S) incr-refresh $1"
}
TBL='hits'
# MySQL clickhouse_changelog command
MYCL="mysql -h source_db_host mydb -BNe"
# MySQL source table command
@dotmanila
dotmanila / tomongo.py
Created April 4, 2019 00:12
Replicate MySQL tables to MongoDB
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import datetime
from optparse import OptionParser
import json
import namedtupled
import operator
import os
import pymysql.cursors
@dotmanila
dotmanila / proxy-oc-heartbeat.sh
Last active March 31, 2019 02:02
pt-heartbeat implementation via Orchestrator nodes.
#!/bin/bash
OC=/usr/bin/orchestrator-client
IPADDR=$(/sbin/ip ad sh dev eth0 scope global | grep -oE "inet\s(.*)\/" | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}")
RAFTLEADER=$($OC -c raft-leader | cut -d: -f1)
if [ "x${IPADDR}" != "x${RAFTLEADER}" ]; then
exit 0
fi
@dotmanila
dotmanila / slack-auth.py
Created January 4, 2019 00:37
Simple HTTP server to accept Slack Event Subscriptions POST
#!/usr/bin/env python
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
import optparse
import time
import socket
import simplejson
multi_source_repl:
query: "SELECT service_state, COUNT(service_state) AS service_state_count FROM performance_schema.replication_connection_status GROUP BY service_state;"
metrics:
- service_state:
usage: "LABEL"
description: "Replication thread state name"
- service_state_count:
usage: "COUNTER"
description: "Count by service state name"
multi_source_repl_delay:
@dotmanila
dotmanila / pmm-multi-source.json
Created October 18, 2018 17:36
PMM Multi Source Replication Dashboard
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
@dotmanila
dotmanila / gist:65b1b22e693cefdf1b20a552c46d1893
Created October 8, 2018 17:24
Start x11vnc on Xubuntu Bionic
# LightDM greeter uses display :2 so we have ti login first
sudo x11vnc -auth /var/run/lightdm/root/:2 -forever -shared -rfbauth /home/revin/.vnc/passwd \
-rfbport 5900 -xkb -norc -noxrecord -noxdamage -nomodtweak -desktop :2 -display :2
# Once logged in, we can connect to the desktop
sudo x11vnc -auth /var/run/lightdm/root/:0 -forever -shared -rfbauth /home/revin/.vnc/passwd \
-rfbport 5900 -xkb -norc -noxrecord -noxdamage -nomodtweak -desktop :0 -display :0