小编nin*_*ich的帖子

在 5.7.19、5.7.21 版中找不到 MySQL 组复制插件

我正在尝试在 MySQL 5.7.21 上启用 MySQL 组复制插件,根据文档 ( https://dev.mysql.com/doc/refman/5.7/en/group-replication.html),该插件应该在 5.7 中可用)

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using  EditLine wrapper
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 MySQL 启用插件时:

$ mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/group_replication.so' (errno: 2 /usr/lib/mysql/plugin/group_replication.so: cannot open shared object file: No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我的插件在 MySQL 中的输出:

$ mysql> SHOW PLUGINS;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-group-replication

6
推荐指数
1
解决办法
3736
查看次数

MySQL 组复制:等待组通信引擎准备就绪时超时

我在将第二个实例加入 MySQL 复制组时遇到问题。这似乎是通信错误或超时错误。简而言之,我在第二个节点的日志中看到此错误:

"Timeout while waiting for the group communication engine to be ready!"
"The group communication engine is not ready for the member to join. Local port: 33061"
Run Code Online (Sandbox Code Playgroud)

我建立该小组所采取的步骤:

1)首先,我确保两台服务器之间打开了正确的端口:

作为参考,我使用这四个变量来保护隐私:

  • AA.AAA.AA.A = 我的第一台服务器的公共 IP 地址
  • AA.0.0.000 = 我的第一台服务器的私有 IP 地址
  • BBB.BBB.BBB.BBB = 我的第二台服务器的公共 IP 地址
  • BBB.0.0.000 = 我的第二个服务器的私有 IP 地址

FIRST 服务器位于 Amazon AWS 上,它有一个向 3306 和 33061 上的 BBB.BBB.BBB.BBB 开放的安全组。

第二台服务器位于专用服务器上,它有一个防火墙,允许来自 3306 和 33061 上的 AA.AAA.AA.A 的流量。

从第一台服务器,确保我可以访问第二台服务器:

mysql -u repl -p'XXXXXXXXXXXXX' -h BBB.BBB.BBB.BBB
telnet BBB.BBB.BBB.BBB 3306 …
Run Code Online (Sandbox Code Playgroud)

mysql amazon-web-services

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

如何使用 Python 将 cp1252 字符的 unicode 字符串转换为 UTF-8?

我通过 API 获取文本,该 API 返回带有 Windows 编码撇号 (\x92) 的字符:

> python
>>> title = u'There\x92s thirty days in June'
>>> title
u'There\x92s thirty days in June'
>>> print title
Theres thirty days in June
>>> type(title)
<type 'unicode'>
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此字符串转换为 UTF-8,以便它返回:“六月有三十天”

当我尝试解码或编码此 unicode 字符串时,它会引发错误:

>>> title.decode('cp1252')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/cp1252.py", line 15, in decode
    return codecs.charmap_decode(input,errors,decoding_table)
UnicodeEncodeError: 'ascii' codec can't encode character u'\x92' in position 5: ordinal not in range(128)

>>> title.encode("cp1252").decode("utf-8") …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding utf-8 cp1252

4
推荐指数
1
解决办法
8678
查看次数

当 . 主目录中的 pgpass 不是一个选项?

我正在运行一个 cron 作业,使用以下命令创建数据库转储pg_dump,如下所示:

export PGPASSWORD="XXXXXXXX"; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Run Code Online (Sandbox Code Playgroud)

但是当我运行此命令时,出现密码身份验证错误:

pg_dump: [archiver (db)] connection to database "my_db" failed: FATAL:  password authentication failed for user "my_user"
FATAL:  password authentication failed for user "my_user"
Run Code Online (Sandbox Code Playgroud)

我无法将.pgpass文件放置在运行 cron 的用户下,但我可以将其放置在其他位置并指定如下PGPASSFILE

export PGPASSFILE=/path/to/.pgpass; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Run Code Online (Sandbox Code Playgroud)

但这再次返回相同的身份验证错误。我已经确认这不是密码错误的问题,因为当我使用交互式提示时它有效:

pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
Run Code Online (Sandbox Code Playgroud)

当我查看文档时,它看起来像是PGPASSWORD环境PGPASSFILE变量中缺少的(也许它们已被删除?)https://www.postgresql.org/docs/10/app-pgdump.html

如果我无法.pgpass在运行脚本的用户的主目录中创建文件,我还能如何运行pg_dump command?

对于上下文,我运行的是pg_dump …

authentication postgresql pg-dump

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