如何在Ubuntu 16.04使用MySQL 5.6配置Galera Cluster

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Ubuntu 16.04使用MySQL 5.6配置Galera Cluster相关的知识,希望对你有一定的参考价值。

参考技术A 第一个启动的mysql不能有地址。如果配了地址,这样启动也是可以的:service mysql start --wsrep-cluster-address="gcomm://"

如何在 ubuntu 中使用 xampp 填充 mysql 数据库中的区域表

【中文标题】如何在 ubuntu 中使用 xampp 填充 mysql 数据库中的区域表【英文标题】:How to populate zone tables in mysql database within ubuntu with xampp 【发布时间】:2016-06-22 05:06:06 【问题描述】:

我正在尝试根据此文档导入时区:http://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html。

当我尝试通过终端点击第一个命令时,即

mysql_tzinfo_to_sql tz_dir

它说

There were fatal errors during processing of zoneinfo directory 'tz_dir'

当我跑步时:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

然后它返回

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

操作系统: Ubuntu

服务器: XAMPP(具有 mariadb)

所以,我无法将时区数据导入mysql 数据库的时区表中。

【问题讨论】:

解决这个问题的更好更简单的方法datawookie.netlify.app/blog/2017/08/… 【参考方案1】:

我今天早上在我们的生产服务器(使用 CentOS)上填充时区表时也遇到了这个问题。

我通过从我的开发计算机导出表创建脚本解决了这个问题(在 Windows 上填充表只需要下载表并将它们复制到正确的目录中)。

我稍微调整了创建脚本,现在它可以为我工作了:

由于脚本太长,我无法将其发布在我的答案中。

https://drive.google.com/file/d/0B7iwL5F-hwr_YkItRXk2Z1VZdlE/view?usp=sharing

这是一个带有注释的版本(但它似乎不起作用,所以使用没有 cmets 的版本)。

https://drive.google.com/file/d/0B7iwL5F-hwr_dWdjTDREcXNHQmM/view?usp=sharing

脚本的运行时间不应超过几秒钟。您可能需要使用root 用户才能运行它。

您可以使用此查询来验证安装:

SELECT CONVERT_TZ(CURRENT_DATE(),'UTC','America/Montreal');

如果它返回NULL 而不是datetime,则表示脚本失败。

成功

【讨论】:

@hardlyNoticeable 表示您正在尝试将数据插入到已经包含数据的表中。主键 (PK) 或唯一键(UK,通常在外键 FK)上存在冲突。您需要查看错误消息以了解导致问题的表(可能已经填充了多个表)。【参考方案2】:

There were fatal errors during processing of zoneinfo directory 'tz_dir'

错误信息表示目录无法读取(没有足够的访问权限甚至不存在)。

知道mysql_tzinfo_to_sql程序只是一个将一堆时区文件转换成SQL脚本的工具,你可以用它来为mysql安装时区,你的任务如下:

从某处获取时区文件 执行 mysql_tzinfo_to_sql 以从这些文件创建 SQL 脚本 在您的 mysql 数据库中执行该 SQL 脚本。

如果您在它们之间传输文件,这些步骤可以在不同的计算机上执行。例如,我在一台未完成mysql安装的机器上安装了时区,即mysql_tzinfo_to_sql不可用,我也无法安装它。

在这种情况下,您可以结合以下步骤:

如果mysql_tzinfo_to_sql 在您的mysql 数据库所在的计算机上不可用,则查找已安装mysql_tzinfo_to_sql 的计算机 使zoneinfo 文件夹在该计算机上可用。它只是不同文件夹中的一堆文件,因此您可以将它们以 gzip 文件的形式从一台计算机传输到另一台计算机。在正常的 mysql 安装中,该文件夹应该存在,但可能您的安装不完整,su 随便从任何地方获取它。

执行mysql_tzinfo_to_sql 命令创建如下SQL 脚本:

mysql_tzinfo_to_sql path-to-your-zoneinfo-folder >install_mysql_zoneinfo.sql

将创建的SQL脚本移动到你的mysql数据库所在的电脑上*

像这样执行脚本:

mysql --user=root --password=abc123 mysql <install_mysql_zoneinfo.sql

根据需要调整用户名和密码,您的脚本将被执行。这将使用适当的值填充与时区相关的表,您将能够使用它们:

SELECT convert_tz(NOW(),'UTC','Australia/Melbourne'); 
如果您可以从生成 SQL 脚本的计算机访问 mysql 数据库,那么将-h <hostname> 命令行参数添加到后续脚本执行程序就足够了,您不必将 SQL 脚本复制到目标机器。

【讨论】:

以上是关于如何在Ubuntu 16.04使用MySQL 5.6配置Galera Cluster的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu 16.04使用MySQL 5.6配置Galera Cluster

在 Ubuntu 16.04 上重新安装 MySQL 5.7 服务器的问题

ubuntu 16.04安装mysql-server_5.7.17

Ubuntu16.04安装指定版本的Mysql(5.5/5.6)

MySQL 5.7 存储过程语法错误,通过 phpadmin 和 Ubuntu 16.04

Ubuntu16.04+Java8+Mysql5.7+Tomcat8.5服务器环境配置