我正在尝试在 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 复制组时遇到问题。这似乎是通信错误或超时错误。简而言之,我在第二个节点的日志中看到此错误:
"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)
我建立该小组所采取的步骤:
作为参考,我使用这四个变量来保护隐私:
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) 我通过 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) 我正在运行一个 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 …