PolarFlex MySQL

--- 單節點部署範例 ---

前置條件
1. 初始化
# 解壓安裝包
tar -xf polarflex-{version}-{build-date}.tar.gz
cd polarflex-{version}-{build-date}/polarflex
# Python環境初始化, 需要root權限執行
./install.sh
# 確認安裝成功
pdbcli version

2. 本機 SSH 免密
# 生成rsa key
ssh-keygen -t rsa
# 在host00寫入公鑰
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.22.22.199

# 在/polarflex/assets/ansible.cfg 中新增
[defaults]
remote_port = 22
private_key_file = ~/.ssh/id_rsa

3. 配置config.yaml
## file: config.yaml
all:
  # 提供所有主机列表,确保 `root` 用户 SSH 免密码打通,部署后不要改动
  hosts:
    # 主机按照 hostNN 来命名,提供 ansible_host 指定主机 IP
    host00:
      ansible_host: 172.22.22.199    # 填上主機的內網IP
  vars:
    ## cluster setup 

    # WARNING: don't change after DB cluster created.
    cluster_id: mycluster
    # 部署实例版本,默认支持部署版本为8.0
    db_version: '8.0'

    # 参数模板 可选值为default async performance
    param_template: default

    # db 实例结构,basic 模式下仅支持 1 DB 主节点, cluster 支持一主多备
    category: basic
    # metadb 主节点所在主机,如果未提供会用 all.children.metadb[0] 主机
    primary_metadb_host: host00

    # DB 主节点所在的主机,如果未提供会用 all.children.db[0] 主机
    primary_db_host: host00

    # proxy params
     # PolarDB Proxy 工作并发 (default: 2)
    polardb_proxy_concurrency: 2
     # RW_TYPE为1时有效。主节点是否参与读请求的负载均衡。如果设置为false,则读请求不发往主库 (default: true)
    polardb_proxy_master_accept_ready: true
     # 是否开启事务拆分。设置为false时,事务所有请求路由到主库。如果设置为true,则事务中写之前的读请求可以路由到只读库。写之后的读还是路由到主库 (default: true)
    polardb_proxy_trx_split: true
     # 是否开启会话一致性。设置为false时,不保证会话内读写一致性。设置为true时,保证会话一致性。效果为同一个连接内,读请求一定能读到这个连接之前写入的数据 (default: true)
    polardb_proxy_casual_reads: true
     # 是否开启读写分离。设置为false时,所有请求路由到主库
    polardb_proxy_rw_split: true
    
    # [INTERNAL] - DON'T CHANGE FOLLOWING
    ## ansible vars
    # ansible_user:
    # ansible_password:
    ansible_group_priority: 99
    ansible_python_interpreter: /usr/bin/python3
    # --

  # 应用角色划分、配置
  children:

    # 以下为应用分组映射主机: 
    #   - metadb - 元数据库 host
    #   - ha - HA 服务 hosts
    #   - dashboard - UI  [可选]
    metadb:
      hosts:
        host00:
          metadb_port: 3400
      var:
    ha:
      hosts:
        host00:
      var:
    dashboard:
      hosts:
        host00:
          port: 8080

    #   - db - DB 服务 hosts
    db:
      hosts:
        host00:
          # [REQUIRED] polardb_polar_hostid, host unique index
          polardb_polar_hostid: 1
          polardb_port: 3006
          polardb_classMemory: 8192  # 示例值,单位为MB
          polardb_classCPU: 4        # 示例值
      vars:

4. rpm 包安裝部署

pdbcli install cluster

5. metadb 安裝

pdbcli init metadb

6. ha 組件安裝

pdbcli init ha

7. 創建DB 集群

pdbcli create cluster

8. 創建 dashboard(可選)

pdbcli init dashboard


--- Audit Log ---

問題:

Audit Log在哪裡?

# 日誌初始儲存位置

/home/mysql/data{port}/tmp

可透過Rds_audit_log_dir變量控制


# 數據庫內查看相關變量

show global variables like '%audit%';

# 日誌相關配置 (需使用root 登入數據庫)

set global rds_audit_log_row_limit = 2000000;

set global rds_audit_log_buffer_size = 167772160;

SET GLOBAL rds_audit_log_enabled = ON;


--- Web Dashboard ---

問題:

使用iptables對流量進行限制,放行8080port後訪問Web Dashboard時沒法出現監控資訊。



原因:

放通8080Port時Web服務是沒有問題的。沒有出現監控資訊的原因是因為iptables沒有放通Polar其他核心服務。例如metadb和DNS服務

解決方法:
# 對單機部署,放通所有loopback流量
sudo iptables -I INPUT 1 -i lo -j ACCEPT
# 對多機部署,放通對應之metadb流量和DNS流量
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT -s {source_ip}
sudo iptables -A INPUT -p tcp --dport {metadb-port} -j ACCEPT  -s {source_ip}




留言