某些使用 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 =”,但没有一个有效......
我有多个用于 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 上的负载平衡连接。
这是我当前架构的表示图:
这很有效,但我意识到有些人的实现方式完全不同:Web 应用程序连接到单个 PGBouncer 实例,该实例连接到 HAproxy,它在多个 PG 服务器上进行负载平衡:
最好的方法是什么?第一个(我现在的)还是第二个?一种解决方案相对于另一种解决方案有什么优势吗?
谢谢
postgresql scalability high-availability pgbouncer load-balancing
前段时间我创建了一个名为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 中,您可以创建一个数据类型为字符可变(没有长度精度)或文本的列,如下所示:
ALTER TABLE test ADD COLUMN c1 varchar;
ALTER TABLE test ADD COLUMN c2 text;
Run Code Online (Sandbox Code Playgroud)
这两种数据类型有区别吗?
文档对此并不清楚。他们说 :
如果在没有长度说明符的情况下使用字符变化,则该类型接受任何大小的字符串。
[...]
另外,PostgreSQL 提供了text类型,可以存储任意长度的字符串。
似乎这两种数据类型是等效的,但它并不明确......有关此的更多信息?
谢谢你,尼科
运行后ANALYZE myview;
,我们是否应该在 PostgreSQL 9.6+ 物化视图上运行REFRESH MATERIALIZED VIEW CONCURRENTLY myview;
?
或者它没有用(也许索引统计信息已经在刷新时更新了?)
我正在寻找一种方法来防止 MariaDB 二进制日志在增长速度比平时更快时占用大量空间。
但是有没有办法设置所有二进制日志文件的“最大整体大小”?或者,也许更简单,最大数量的二进制日志文件,这会超载expire_log_days保留...
我尝试使用 Spider Engine 和 MariaDB 10.0.14 设置高可用性,但我不确定使用什么配置使其按预期工作。
我想要的是:
根据文档,我设置了以下配置:
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) 当从主服务器执行语句时在从服务器上发生错误时,有时使用 SQL_SLAVE_SKIP_COUNTER 变量跳过查询的执行会很有用,如下所示:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)
虽然这适用于主复制线程,但我想知道在 MariaDB 多源复制线程上这怎么可能?
我已经使用 3-Member Primary-Secondary-Arbiter Architecture 设置了一个 MongoDB 集群
一切似乎工作正常,复制工作正常:
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) postgresql ×4
mariadb ×3
binlog ×2
mysql ×2
replication ×2
datatypes ×1
debian ×1
logs ×1
mongodb ×1
permissions ×1
pgbouncer ×1
scalability ×1
statistics ×1