mysql router docker_MySQL Router 完全讲解

mysql router docker_MySQL Router 完全讲解

MySQL Router 是一款轻量级 MySQL 中间件,提供应用与任意 MySQL 后端服务器的透明路由。同时插件式架构也方便开发者扩展其功能。

1. 安装

rpm -ivh mysql-router-2.0.4-1.el6.x86_64.rpm

2. 配置文件

2.1 配置文件语法

2.1.1 注释

支持 # 和 ; 作为注释

不支持行尾的注释

2.1.2 section

[section name:optional section key]

option = value

option = value

option = value

[section name]

option = value

option = value

option = value

每个section 包含一个name和一个可选的key,[ ]内不能有空格。但是键值对可以含有空格,服务器会自动忽略。且键值对大小写不敏感。

可以使用{ }引用变量。当{ }内的变量名没有定义,就使用字面意思。

[DEFAULT]

prefix = /usr/

[sample]

bin = {prefix}bin/{name}

lib = {prefix}lib/{name}

name = magic

directory = C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}

所以,这里 directory = C:\foo\bar\3a339172-6898-11e6-8540-9f7b235afb23。

2.2 配置文件位置

2.2.1 读取顺序

依次读取:

/etc/mysqlrouter/mysqlrouter.ini

$HOME/.mysqlrouter.ini

另外,还可以使用两个参数指定

-c : 当指定这个参数,就不扫描默认位置了。

-a: 指定额外胚子文件。当读取了默认位置的配置文件(或用-c 指定的配置文件),紧接着读取这个位置的配置文件。

如下所示:

shell> mysqlrouter -c /custom/path/to/router.ini -a /another/config.ini

3. 配置

3.1 general

bind_address 和 bind_port

将router绑定到哪个网络接口NIC,

可以写成

[routing:example_1]

bind_address =127.0.0.1

bind_port = 7001

或者

[routing:example_1]

bind_address =127.0.0.1:7001

Connect Timeout

connect_timeout = 1

允许范围1-65536 ,read-write模式可以设置大一些,read-only模式要设置低一点。

Destinations

destinations= a.example.com,b.example.com,c.example.com

提供一个逗号分隔的用于建立连接使用的地址池。默认端口3306。

Modes

[routing:example_strategy]

bind_port = 7001

destinations = master1.example.com,master2.example.com,master3.example.com

mode = read-write

必须参数。

read-write:

主要用于路由到 mysql master。

In read-write mode, all traffic is directed to the initial address on the list. If that fails,then MySQL Router will try the next entry on the list, and will continue trying each MySQL server on the list. If no more MySQL servers are available on the list, then routing is aborted. This method is also known as ”first-available“。

第一个成功连接的服务器保存在内存中,以用于未来的连接请求,但这是一个临时状态,重启就失去记忆了。

read-only:

主要用于路由到 slave 上。

使用一种简单的 round-robin 方式来扫描服务器,第一个连接发送到第一个地址,第二个连接发送到第二个地址,以此类推,往返重复。如果其中一个地址不可达,直接跳过。不可达的地址将被隔离。当它恢复后,将被重新添加到可用队列中。

Max Connections

max_connections = 512

类似于Mysql的max_connections,一种可用的应用是抵御DDOS,范围从1-65536,默认512。

max_connect_errors

默认= 100 , 类似于 mysql 的 max_connect_errors 参数。

client_connect_timeout

默认 = 9 , 类似于 mysql 的  connect_timeout ,合法的范围是 2-31536000.

3.2 Logging

[logger]

level = DEBUG

可选的有 INFO (default) 和 DEBUG,不区别大小写。

INFO = all informational messages, warnings, and error messages

DEBUG= additional diagnostic information from the Router code, including successful routes.

默认是 INFO级别。这个需要在 [default]里先设置 logging_folder,如果 logging_folder 留空或者没设置,将输出到命令行。

3.3 配置文件demo

[DEFAULT]

logging_folder = /var/log/mysqlrouter #后面不指定具体的文件名

[logger]

level = DEBUG

[routing:failover]  # failover可选,方便理解

bind_port = 7001

mode = read-write

destinations = a.example.com,b.example.com,c.example.com

上面案例,read-write 模式,所有请求将转发至 a.example.com ,当它挂了,转发到 b.example.com,以此类推。但如果 read-only 模式,将使用round-robin 轮训。

4. Router的应用

4.1 用户选项

-v 显示更多

-h 帮助

-c 指定配置文件

-a 指定额外配置文件

4.2 启动Router

shell> mysqlrouter --config=/path/to/file/my_router.ini

2015-10-22 10:51:34 INFO [7f5f66768700] routing:basic_redirect started: listening on localhost:7001; read-write

2015-10-22 10:51:34 INFO [7f5f65f67700] routing:read_only_redirect started: listening on localhost:7002;

5. Plugins

5.1 Connection Routing 插件

[DEFAULT]

logging_folder = /var/log/mysql/router

config_folder = /usr/local/etc/mysqlrouter

plugin_folder = /usr/local/lib/mysqlrouter

runtime_folder = /usr/local/

[logger]

level = INFO

[routing]

bind_address = 127.0.0.1:7002

destinations = slave1.example.com,slave2.example.com,slave3.example.com

mode = read-only

其实就是前面讲到的内容的一个简单应用。

6. Q&A

6.1 Router 应该部署在哪?

应该和应用部署在一台服务器上。

6.2 可以运行多个router实例吗?

可以。

6.3 怎么部署router的高可用?

目前还木有。不过你可以使用脚本或类似的机制监控router。

6.4 router对性能会有影响吗?

测试发现,大约会有1%的影响。

Read more

使用本地大模型调用代码,根本就是一场骗局!

使用本地大模型调用代码,根本就是一场骗局!

通过大模型调用其他工具到底可不可行?ChatGPT 或许能轻松搞定一切,但同样的需求落在本地大模型上,恐怕就要打个问号了。 法国开发工程师 Emilien Lancelot 尝试了多款号称具备工具调用功能的 agent 框架,来看看本地大模型到底能不能完成任务,但结果就像他总结的“一无所获”。是什么让这位工程师失望了? 用 AutoGPT,得会点“糊弄学” AutoGPT 是款貌似强大的框架,提供很酷的 CLI 外加 Flutter UI,能够通过浏览器创建 agent。其主要功能是处理用户的文档、音频、视频等本地内容。 但是……它主要依靠 ChatGPT 或其他专有大模型服务来完成繁重工作,至少给我们的感觉是如此。 我们必须“唬弄”AutoGPT 才能使用 Ollama 端点,让其误认为是 ChatGPT。 ## OPENAI_API_KEY - OpenAI API

By Ne0inhk
详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

Poe Encoder-only 架构的特点 Encoder-only 模型只使用 Transformer 的编码器部分,专注于对输入序列的理解和表征学习。这类模型通常被用在需要对输入文本进行深度理解的任务上,如文本分类、问答和语义匹配。以下是 Encoder-only 架构的核心特点: 1. 双向上下文建模 * 特点:Encoder-only 模型通过自注意力机制(Self-Attention)同时关注输入序列的前后文。 * 优势:相比单向模型(如 Decoder-only),它可以更全面地捕捉输入序列的全局语义,适合需要理解复杂上下文的任务。 * 实现方式:在训练过程中,不对输入序列进行因果掩码(Causal Masking),允许模型在任何位置访问序列的所有位置。 * 例子:BERT 的 Masked Language Model(MLM)训练任务通过随机遮盖部分单词,依赖左侧和右侧的信息来预测被遮盖的词,即双向建模的典型体现。 2. 适用于理解任务 * 特点:Encoder-only 模型专注于理解输入序列,而不生成输出序列,因此适合处理分类、

By Ne0inhk
手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解 原创 极客见识  2025年02月09日 09:02 广东 DeepSeek 通过发布其开源推理模型 DeepSeek-R1 颠覆了 AI 格局,该模型使用创新的强化学习技术,以极低的成本提供与 OpenAI 的 o1 相当的性能。 更令人印象深刻的是,DeepSeek 已将其推理能力提炼成几个较小的模型。这篇文章,我们将使用其蒸馏版本之一引导大家完成 DeepSeek-R1 的整个微调过程。 本文章将演示了如何微调其中一个模型(使用我们自己的自定义思维链数据集),然后保存和部署微调后的模型。 高级推理模型微调 DeepSeek 简介 DeepSeek-R1 是由深度求索(DeepSeek)公司开发的突破性推理模型。DeepSeek-R1 基于 DeepSeek-V3-Base(总共 671B 个参数,每次推理 37B 处于活动状态)构建,使用强化学习 (RL) 在提供最终答案之前生成思路链

By Ne0inhk
LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到 凌青羽  2025年02月09日 09:30 上海 蒙特卡洛树搜索算法的核心是:选择与模拟。 蒙特卡洛树搜索算法的主要目标是:给定一个游戏状态来选择最佳的下一步。 前言 在讲解蒙特卡罗树算法之前,我们先玩一个“赌博”游戏。多臂老虎机(Multi-Armed Bandits)。 多臂老虎机(Multi-Armed Bandits) 游戏规则如下:赌博机有K个摇臂,每次摇动其中的任意一个摇臂,赌博机都会随机吐出一些硬币。现在允许你摇T次,请问如何尝试使得收益最大化。(有限次数的尝试的收益最大化) 思考一下,你会如何尝试?(是下面的玩法中的哪一种类型呢?) * • 纯随机(Random):每次随机选一个摇臂进行摇动。 * • 劣势:能算个期望收益,但收益不是最大的。 * • 仅探索(Exploration-only):每个摇臂摇动T/K次。 * • 相当于每个摇臂摇动的次数都一样。(劣势:浪费次数在收益较差的摇臂上) * • 仅利用(Exploitation-only):

By Ne0inhk