如何设置 Mysql 集群?

如何设置 Mysql 集群?

过去三周我一直尝试mysql-cluster-gpl-7.1.17-linux-i686-glibc23.tar.gz在服务器上进行设置,但尚未成功。ubuntu 10.04

我关注的链接是:

http://stepbysteparticles.com/index.php?option=com_content&view=article&id=48&Itemid=54

http://cyrenity.wordpress.com/2010/08/12/howto-setup-mysql-cluster-beginners-tutorial/

http://tech.jocke.no/2011/03/13/mysql-cluster-how-to-with-load-balancing-failover/

http://www.lod.com/whitepapers/mysql-cluster-howto.html

http://blog.rimuhosting.com/2011/07/06/building-database-clusters-with-mysql/

上述链接中的所有配置几乎相同,只有一些细微的变化,我只是尝试了所有方法,看看是否有用,但都没有。

我已经发过帖子了服务器故障但我仍然无法让它工作。

如果尝试多次后仍无效果,我总是会回到这里,现在我就是这样的。

另外,我不明白是否mysql-server需要与其他mysql-client一起安装才能在 SQL 节点上运行。在我的例子中,设置是。mysql-clustermysql-clustermysqld3 nodes=(data1+sql1 + data2+sql2 + mgmt node)

常见错误

/etc/init.d/mysql.server启动

输出:

Starting MySQL
 * Couldn't find MySQL manager (/usr/bin/mysqlmanager) or server (/usr/bin/mysqld_safe)

我甚至尝试复制/usr/local/mysql/bin/*但仍然没有用,因为它在尝试启动时/usr/bin就提示!. * Manager of pid-file quit without updating file.

尝试在 data/sql 节点上启动 mysql 守护进程时

cd /usr/本地/mysql

./bin/mysqld_safe --user=mysql --defaults-file=/etc/my.cnf &

输出:

[1] 2338
root@web2:/usr/local/mysql# 111208 15:53:47 mysqld_safe Logging to syslog.
111208 15:53:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
111208 15:53:47 mysqld_safe mysqld from pid file /var/lib/mysql/web2.pid ended

[1]+  Done                    ./bin/mysqld_safe --user=mysql --defaults-file=/etc/my.cnf

有人能帮我一下吗?有人能澄清一下 ubuntu 或集群配置是否有问题吗?一旦成功,我就必须在云服务器上实现这一点。

谢谢你!

更新:1

现在,我已经在 SQL/Data 节点上删除了它们mysql-servermysql-client我通常将它们作为任何全新安装的基本包进行安装。我通过运行以下命令删除了它们,并且在两个节点上只有mysql-cluster我无法设置的可用:

apt-get 删除 mysql 客户端 mysql-client-5.1 mysql-client-core-5.1 mysql-common mysql 服务器 mysql-server-5.1 mysql-server-core-5.1

更新:2

我已经解决了我遇到的问题。现在我还有以下事情要做。

  1. 添加/删除在线节点的mgmt最佳方法是什么?SQL/DATA

    编辑:我试过mysql文档/var/lib/mysql-cluster用于在线添加节点但感到困惑,并且除非我关闭所有节点并删除所有节点上的日志,否则它不起作用。

  2. my.conf为了进行最佳性能调整,我应该在我的文件中包含哪些附加配置DataMemoryIndexMemory如果有人用于生产,可以推荐或粘贴在这里吗?

更新:3

  1. 如何将数据库的所有表引擎转换为具有外键的 NDB?

    编辑:我找到了一个用于转换所有表引擎的脚本,但是我的数据库的所有表都没有转换,错误如下:第 11 行出现错误 1217 (23000):无法删除或更新父行:外键约束失败

  2. 有没有一种方法可以同时拥有 NDB 和 InnoDB 的功能以及集群和多主复制,而且没有风险(停机时间)?

答案1

哦……经过多次尝试,我自己终于成功了,现在需要等到。链接是很好的教程,我可以用这种方法解决我遇到的问题。

另外,我不明白是否需要与 mysql-cluster 一起安装 mysql-server 或 mysql-client,否则单独 mysql-cluster 就足以在 SQL 节点上运行 mysqld。

A:我不确定是否可以mysql-cluster正常工作mysql-server,以及mysql-client哪些已经安装,apt但我确信 Ubuntu 上的 mysql-cluster 不需要这些或任何额外的包,因为它本身具有所有包。因此,我可以mysqld从集群提取的包运行,并且不需要为 SQL 节点额外安装任何包。

./bin/mysqld_safe --user=mysql --defaults-file=/etc/my.cnf &

A:无需mysqld手动运行,而是可以使用/etc/init.d/mysql.server start复制来/usr/local/mysql/support-files/mysql.server启动mysqld / SQL节点。

启动 MySQL * 找不到 MySQL 管理器 (/usr/bin/mysqlmanager) 或服务器 (/usr/bin/mysqld_safe)

A:以上是尝试启动时遇到的错误mysql.server,那是因为我已经安装了mysql-servermysql-client。这些应该被完全删除(我不确定是否可以与它们一起成功运行集群),我做到了。这些没有被完全删除(可能我必须使用apt --purge remove)。检查dpkg --get-selections | grep mysql,如果你发现deinstall那些没有完全卸载,这应该否则将不得不面对上述错误。执行以下命令完全删除了它们,我可以启动 mysql.server 而不会出现任何错误。

aptitude purge $(dpkg --get-selections | grep deinstall | sed s/deinstall//) #To completely remove all deinstall package
pkill -9 mysqld
/etc/init.d/mysql.server

...... * pid-file 管理器退出,未更新文件。

A:我在测试启动时多次遇到上述错误mysql.server。我可以通过简单地向datamysql 用户授予权限来避免这种chown -R mysql:mysql /usr/local/mysql/data情况,这个错误是因为我尝试多次提取新的 mysql-cluster,因此错误为用户无法在数据目录下创建 pid 文件,因为没有权限, sql/data 节点mysql下的错误日志帮助我跟踪了这​​个问题。/var/lib/mysql-cluster

应该非常具体地分配给/usr/local/mysql/数据,如果你只是这样做chown -R mysql:mysql /usr/local/mysql并且保持安静,它将不会起作用并且会引发相同的错误!

授予权限后,通过发出检查mysqld是否正常工作并正在运行/usr/local/mysql/bin/mysql -uroot -p。即使输入密码后您也无法连接并抛出错误,则mysql root密码未设置或您忘记了。使用以下命令重置mysql root密码,然后尝试再次连接:

/usr/local/mysql/bin/mysqladmin -uroot password your-new-password-here

我对这个答案既不满意,也不愿意接受并奖励自己,因为我在这个集群中还有很多事情要做。我愿意用更多查询更新我的问题,并等待为其他将要回答的人奖励积分。更新的问题!

谢谢你!

更新

我们考虑使用 MySQL Cluster 作为生产 Web 服务器,其中 apache-tomcat 提供一些静态和 jsp 页面,但由于速度慢joins、不支持foreign keys等等……这些问题在我们的环境中至关重要,并且在 Innodb 引擎中比 NDB 运行良好,我最终不再使用 mysql 集群,而是再次回头考虑复制,尽管它存在同步问题。谢谢!

相关内容