小编Nic*_*art的帖子

使用 log_bin 变量禁用 MySQL 二进制日志记录

某些使用 APT 的 debian 包安装的默认 MySQL 配置文件 /etc/mysql/my.cnf 经常设置 log_bin 变量,因此启用了 binlog:

log_bin = /var/log/mysql/mysql-bin.log
Run Code Online (Sandbox Code Playgroud)

当我想在这样的安装上禁用二进制日志记录时,当然注释掉 my.cnf 中的行,但我想知道是否有办法通过将 log_bin 显式设置为 OFF 来禁用二进制日志记录,在 debian 风格中,我的意思是在一个包含文件,如 /etc/mysql/conf.d/myCustomFile.cnf,因此默认 my.cnf 不会更改,如有必要,可以通过 apt 轻松更新。

我试过“log_bin = 0”、“log_bin = OFF”或“log_bin =”,但没有一个有效......

mysql logs binlog debian

52
推荐指数
5
解决办法
12万
查看次数

使用 HAProxy 和 PGBouncer 的 PostgreSQL 高可用性/可扩展性

我有多个用于 Web 应用程序的 PostgreSQL 服务器。通常在热备模式(异步流复制)下一个主多从。

我使用 PGBouncer 进行连接池:安装在每个 PG 服务器(端口 6432)上的一个实例连接到本地主机上的数据库。我使用事务池模式。

为了在从站上平衡我的只读连接,我使用 HAProxy (v1.5) 和 conf 或多或少像这样:

listen pgsql_pool 0.0.0.0:10001
        mode tcp
        option pgsql-check user ha
        balance roundrobin
        server master 10.0.0.1:6432 check backup
        server slave1 10.0.0.2:6432 check
        server slave2 10.0.0.3:6432 check
        server slave3 10.0.0.4:6432 check
Run Code Online (Sandbox Code Playgroud)

因此,我的 Web 应用程序连接到 haproxy(端口 10001),即在每个 PG 从站上配置的多个 pgbouncer 上的负载平衡连接。

这是我当前架构的表示图:

haproxy > pgbouncer > postgresql

这很有效,但我意识到有些人的实现方式完全不同:Web 应用程序连接到单个 PGBouncer 实例,该实例连接到 HAproxy,它在多个 PG 服务器上进行负载平衡:

pgbouncer > haproxy > postgresql

最好的方法是什么?第一个(我现在的)还是第二个?一种解决方案相对于另一种解决方案有什么优势吗?

谢谢

postgresql scalability high-availability pgbouncer load-balancing

19
推荐指数
2
解决办法
3万
查看次数

查找链接到 PostgreSQL 角色的对象

前段时间我创建了一个名为user1(PostgreSQL 9.4.9)的 PostgreSQL 用户。

我想放弃这个用户。所以我首先撤销对表、序列、函数、默认权限和所有权的所有权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;

REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;

REASSIGN OWNED BY user1 TO postgres;
Run Code Online (Sandbox Code Playgroud)

但是,似乎有一个对象在 …

postgresql permissions

17
推荐指数
2
解决办法
4万
查看次数

PostgreSQL 数据类型 text vs varchar 没有长度

在 PostgreSQL 中,您可以创建一个数据类型为字符可变(没有长度精度)或文本的列,如下所示:

ALTER TABLE test ADD COLUMN c1 varchar;
ALTER TABLE test ADD COLUMN c2 text;
Run Code Online (Sandbox Code Playgroud)

这两种数据类型有区别吗?

文档对此并不清楚。他们说 :

如果在没有长度说明符的情况下使用字符变化,则该类型接受任何大小的字符串。

[...]

另外,PostgreSQL 提供了text类型,可以存储任意长度的字符串。

似乎这两种数据类型是等效的,但它并不明确......有关此的更多信息?

谢谢你,尼科

postgresql datatypes

11
推荐指数
1
解决办法
6152
查看次数

刷新物化视图后需要分析吗?

运行后ANALYZE myview;,我们是否应该在 PostgreSQL 9.6+ 物化视图上运行REFRESH MATERIALIZED VIEW CONCURRENTLY myview;

或者它没有用(也许索引统计信息已经在刷新时更新了?)

postgresql statistics materialized-view

9
推荐指数
1
解决办法
2641
查看次数

MariaDB 二进制日志的最大总大小

我正在寻找一种方法来防止 MariaDB 二进制日志在增长速度比平时更快时占用大量空间。

但是有没有办法设置所有二进制日志文件的“最大整体大小”?或者,也许更简单,最大数量的二进制日志文件,这会超载expire_log_days保留...

mysql mariadb binlog

5
推荐指数
1
解决办法
9101
查看次数

设置 MariaDB Spider HA

我尝试使用 Spider Engine 和 MariaDB 10.0.14 设置高可用性,但我不确定使用什么配置使其按预期工作。

我想要的是:

  • 在远程服务器 A 上使用 Spider Engine 访问远程表(假设下面是“主服务器”)
  • 如果主服务器 A 关闭 => 访问“备份服务器”B

根据文档,我设置了以下配置:

CREATE SERVER server_main
 FOREIGN DATA WRAPPER mysql
OPTIONS(
 HOST '10.2.0.1',
 PORT 3306,
 DATABASE 'db01',
 USER 'spider',
 PASSWORD '123456'
);

CREATE SERVER server_backup
 FOREIGN DATA WRAPPER mysql
OPTIONS(
 HOST '10.2.0.2',
 PORT 3306,
 DATABASE 'db01',
 USER 'spider',
 PASSWORD '123456'
);

INSERT INTO mysql.spider_link_mon_servers 
(db_name, table_name, link_id, sid, server) 
VALUES
('%', '%', '%', 100, 'server_main'),
('%', '%', '%', 101, 'server_backup');

SELECT …
Run Code Online (Sandbox Code Playgroud)

mariadb high-availability

3
推荐指数
1
解决办法
1470
查看次数

MariaDB 多源复制 SQL_SLAVE_SKIP_COUNTER

当从主服务器执行语句时在从服务器上发生错误时,有时使用 SQL_SLAVE_SKIP_COUNTER 变量跳过查询的执行会很有用,如下所示:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)

虽然这适用于主复制线程,但我想知道在 MariaDB 多源复制线程上这怎么可能?

replication mariadb

3
推荐指数
1
解决办法
2415
查看次数

MongoDB stepDown 在 PSA 架构中失败

我已经使用 3-Member Primary-Secondary-Arbiter Architecture 设置了一个 MongoDB 集群

环境:

  • LXC 容器
  • Linux Debian Stretch (9.8)
  • MongoDB 服务器版本:4.0.6

MongoDB 容器:

  • lxc-mongodb-01(主要)
  • lxc-mongodb-02(二级)
  • lxc-mongodb-03(仲裁者)

复制状态

一切似乎工作正常,复制工作正常:

np:PRIMARY> rs.printSlaveReplicationInfo()
source: lxc-mongodb-02:27017
    syncedTo: Wed Mar 06 2019 12:08:27 GMT+0100 (CET)
    0 secs (0 hrs) behind the primary 
Run Code Online (Sandbox Code Playgroud)

切换失败

但是当我尝试使用 rs.stepDown() 切换主要/次要时,它失败并显示“没有可选的次要被捕获”错误消息:

np:PRIMARY> rs.stepDown(60, 30)
{
    "operationTime" : Timestamp(1551870647, 1),
    "ok" : 0,
    "errmsg" : "No electable secondaries caught up as of 2019-03-06T12:11:19.140+0100Please use the replSetStepDown command with the argument {force: true} to force node to …
Run Code Online (Sandbox Code Playgroud)

replication mongodb high-availability

2
推荐指数
1
解决办法
621
查看次数