1

MySql-Cluster集群配置

MySql-Cluster下载安装包
点击一键下载所有包 或者去http://mirrors.sohu.com/mysql/MySQL-Cluster-7.1/ 找到和下面的包名对应
一共有5个包:
MySQL-Cluster-gpl-client- 7.1.10.rhel5.i386.rpm
MySQL-Cluster-gpl-management-7.1.10.rhel5.i386.rpm
MySQL-Cluster-gpl-server-7.1.10.rhel5.i386.rpm
MySQL-Cluster-gpl-storage-7.1.10.rhel5.i386.rpm
MySQL-Cluster-gpl-tools-7.1.10.rhel5.i386.rpm

3台CentOS 5.5 服务器:
管理节点(ndb_mgmd):192.168.0.1
SQL节点1(mysqld): 192.168.0.2
SQL节点2(mysqld): 192.168.0.3
数据节点1(ndbd): 192.168.0.2
数据节点2(ndbd): 192.168.0.3

//———————————从这个开始(几台机子都这样操做)
首先要做的是把这几台机子的防火墙关掉(如何不关的话每个节点都连不通)
关闭防火墙:
Service iptables stop;
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
如何这样关闭成功;

创建文件夹:
存储节点:mkdir /var/lib/mysql/data
管理结点:mkdir /var/lib/mysql-cluster
Sql结点:要不要都行

给两个文件赋权限:
#chmod -R mysql:mysql /var/lib/mysql
#chmod -R mysql:mysql /var/lib/mysql-cluster
//——————————————————————以这个结束

管理节点安装:
MySQL-Cluster-gpl-management-7.1.10.rhel5.i386.rpm MySQL-Cluster-gpl-tools-7.1.10.rhel5.i386.rpm

#rpm –ivh MySQL-Cluster-gpl-management-7.1.10.rhel5.i386.rpm
#rpm –ivh MySQL-Cluster-gpl-tools-7.1.10.rhel5.i386.rpm

vi /var/lib/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[tcp default]
SendBufferMemory=2M
ReceiveBufferMemory=2M
[NDB_MGMD DEFAULT]
PortNumber=1186
Datadir=/var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName= 192.168.0.1
[ndbd]
Id=2
HostName=192.168.0.2
datadir=/var/lib/mysql/data
[ndbd]
Id=3
HostName=192.168.0.3
datadir=/var/lib/mysql/data
[mysqld]
Id=14
HostName=192.168.0.2
[mysqld]
Id=15
HostName=192.168.0.3
[mysqld]
Id=16

//启动管理节点
#ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster

存储节点安装
MySQL-Cluster-gpl-storage-7.1.10.rhel5.i386.rpm
#rpm –ivh MySQL-Cluster-gpl-storage-7.1.10.rhel5.i386.rpm

vi /etc/my.cnf //确认添加修改了如下部分
[mysqld]
max_connections=100
slow_query_log=/var/lib/mysql/slow_query.log
long_query_time=1
datadir=/var/lib/mysql/data
ndbcluster
ndb-connectstring=192.168.0.1
[mysql_cluster]
ndb-connectstring=192.168.0.1

初始化启动数据节点的数据库,
注意://ndbd –initial 不能同时在所有数据节点机器上执行,否者会删除所有数据.即该命令只能在其中一台数据节点中执行
#ndbd –initial

如何这样:
[ndbd] INFO — Configuration fetched from ’192.168.0.1:1186′, generation: 1

SQL节点的安装:
MySQL-Cluster-gpl-client-7.1.10.rhel5.i386.rpm
MySQL-Cluster-gpl-server-7.1.10.rhel5.i386.rpm
#rpm –ivh MySQL-Cluster-gpl-server-7.1.10.rhel5.i386.rpm
#rpm -ivh MySQL-Cluster-gpl-client-7.1.10.rhel5.i386.rpm

vi /etc/my.cnf //确认添加修改了如下部分
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.1:1186
[mysql_cluster]
ndb-connectstring=192.168.0.1:1186

启动sql结点 我用这个 mysqld_safe &没有错
执行后
100308 13:46:32 mysqld_safe Logging to ‘/var/lib/mysql/localhost.localdomain.err’.
100308 13:46:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Sql结点就成功了
在管理节点的机子下(192.168.0.1)
ndb_mgm
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.3)
[mysqld(API)] 3 node(s)
id=14 @192.168.0.2 (mysql-5.1.44 ndb-7.1.3)
id=15 @192.168.0.3 (mysql-5.1.44 ndb-7.1.3)
id=16 (not connected, accepting connect from any host)
如何出现上面的信息就成功了.
出现not connected, accepting connect from any host是sql节点没有启来。
出现mysql-5.1.47 ndb-7.1.10,staring Nodegroup: 0 是说明存储节点没有启来。如何你的配置都没有错的话(那是你的防火墙没有关)

动态更新节点
关闭管理节点我这里的管理节点是1
ndb_mgm>1 stop
退出ndb_mgm
shell>vi /var/lib/mysql-cluster/config.ini
如果我们加一个ndbd节点
[ndbd]
Id=6
HostName=10.50.8.13
datadir=/var/lib/mysql/data
保存退出

#ndb_mgmb –f config.ini –reload
2010-03-08 13:47:15 [MgmtSrvr] INFO — NDB Cluster Management Server. mysql-5.1.39 ndb-7.0.9b
2010-03-08 13:47:16 [MgmtSrvr] INFO — Reading cluster configuration from ‘config.ini’
就从启成功了

把每个节点重启一下
Ndb节点在管理节点上执行 ndb_mgm>2 restart (如何你按上面安装的话应该知道进入ndb_mgm里)
Sql 节点在sql节点上 执行 service myql stop; mysqld_save &;
都做完了在管理节点上 show一下看看结果。

1. 管理节点启动:ndb_mgmd
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ndb_mgmd -f /var/lib/mysql-cluster/config.ini –reload

关闭:ndb_mgmd -e shutdown
2. 数据节点启动:ndbd启动
ndb_mgm>2 restart 数据节点重启
3. SQL节点启动:
关闭和启动:service mysql stop; mysqld_safe &

2

Linux系列教程之编译安装LAMP(一)

最近在学习配置完美支持wordpress的linux主机的方案。虽然网络上的教程很多,但是大部分都不够完整。
不废话了,首先去官网下载Apache+PHP+Mysql:
官方推荐Apache最稳定版本:httpd-2.2.17.tar.gz |    官方下载页面
官方目前PHP最新版本:php-5.3.6.tar.gz |  官方完整镜像下载页面
官方推荐Mysql最稳定版本:mysql-5.1.56.tar.gz官方完整镜像下载页面
下载完成后,将这三个文件传送至服务器/tmp目录下并登录服务器进入/tmp目录。

一、安装MySQL

1.编译安装

groupadd mysql      #创建mysql组
useradd -g mysql mysql    #创建用户mysql并添加到mysql组中,这个用户主要是作为mysql服务运行的用户
tar -xzf  mysql-5.1.56.tar.gz    #解压缩
cd mysql-5.1.56          #进入Mysql目录
./configure --prefix=/opt/mysql   #指定安装路径及目录
make      #编译源代码
make install     #安装
cp support-files/my-medium.cnf /etc/my.cnf     #复制配置文件模板
cd /opt/mysql
bin/mysql_install_db --user=mysql    #初始化安装mysql数据库
chown -R root  .      #修改当前目录的属主为root
chown -R mysql var   #修改当前目录的var目录属组为mysql
chgrp -R mysql .    #修改当前目录属组为mysql
bin/mysqld_safe --user=mysql &  #使用用户mysql安全启动mysql程序并放到后台执行

2.更改mysql的root密码

/usr/local/mysql/bin/mysqladmin -u root password kaychen

#为进入mysql数据库添加一个用户以及密码,假如用户为”root”,密码为”kaychen”(注意:这个和系统root是两个概念)

3.测试mysql是否可用

/usr/local/mysql/bin/mysql -u root -p      #使用用户root连接mysql

Enter password:kaychen #输入上一步显示的密码”kaychen”

4.设置mysql开机自启动
在/etc/rc.d/rc.local添加

/usr/local/mysql/bin/mysqld_safe --user=mysql &

至此mysql5.1已经安装完成了。

关于Mysql的安装及使用、推荐大家参阅一下Mysql5.1中文参考手册:Mysql5.1参考手册

下一篇,我们将学习安装Apache……

非常实用的8个WordPress数据库技巧

最近在学习linux平台下的mysql数据库,虽然只会点皮毛,但还是让自己感觉很充实。操作mysql的例子都是拿自己备份站点的数据库来演练的。
下面给大家分享下wordpress中8个很实用的数据库操作和优化:
wordpress数据库技巧
1 备份数据库
问题:尽管本文中所有的技巧都经过测试,但是在尝试前请务必首先备份MySQL数据库。

解决方法:手动备份数据库,请按以下步骤操作:

登陆phpMyAdmin,选中要备份的数据库。
点击水平菜单上的“导出”按钮。
选择压缩方法(我本人使用gzip),然后单击“执行”。
服务器接着会询问你是否下载备份,点击“是”,然后把它存储到硬盘。
注解:使用WP-DB-Backup插件执行数据库备份非常方便。WordPress用户可以安装这个插件并定期备份数据。

2 批量删除日志修订本
问题:日志修订本是2.6的新增功能,虽然十分有用,但这也增加了MySQL数据库的负担。你当然可以手动删除修订本,但这将十分麻烦且耗时过长。

解决方法:这个解决办法非常简单。我们可以使用SQL语句批量删除日志修订本。

登陆phpMyAdmin,选中你的WordPress数据库。
单击“SQL”按钮。把以下窗口中的命令复制粘贴到SQL命令下:

DELETE FROM wp_posts WHERE post_type = “revision”;

完成了!删除掉的日志为你腾除了大量数据库空间!
注解:wp_posts 表格包含一个名为post_type 的字段。这个字段可被赋予诸如日志,页面,修订本的值。当我们需要删除日志修订本时,只要运行wp_posts表格中相对应的修订本删除语句就行了。

3 快速删除垃圾评论
问题:我的一个朋友前不久开通博客后,一直在网上努力推广他的博客。 在他外出度假归来时,竟发现自己有5000多条评论等待审核!当然,其中多数都是垃圾广告。但他认为自己不得不逐个审核以防删除了正常评论。

解决方法:庆幸的是,他把这个问题告诉了我。当我告诉他可以使用 SQL时,他已经审核45分钟了。

登陆phpMyAdmin,选中你的WordPress数据库。
单击“SQL”按钮。把以下窗口中的命令复制粘贴到SQL命令下:

DELETE from wp_comments WHERE comment_approved = ’0′;

完成了!现在可以享受清洁无污染的数据库环境了!
注解:wp_comments表格中包含名为comment_approved的域,它是一个boolean值(1或0)。通过审核的评论值为1,等待审核的值为0.运行以上语句,其实就是删除还没有通过审核的评论。

此操作要谨慎执行。以上语句不仅能帮我们删除大量垃圾评论,同时也会删除无效的没有通过审核的评论。如果你还没有使用Akismet,现在就安装以打击垃圾评论吧。

4 更改日志属性
问题:管理帐户在安装WordPress时就已创建。但许多博主把这个帐户误以为就是写日志的帐号,以致到后来才发现这不是私人帐号。

解决方法:更改所有日志的作者属性要花费很多时间,但使用SQL就不用这么麻烦了。

登陆phpMyAdmin,选中你的WordPress数据库。
首先,打开SQL语句窗口,执行以下命令以获取正确的作者ID:

SELECT ID, display_name FROM wp_users;

phpMyAdmin会显示许多WordPress用户的ID。其中NEW_AUTHOR_ID是最近写日志的作者的ID, OLD_AUTHOR_ID是原始管理员的ID。
交换NEW_AUTHOR_ID 和 OLD_AUTHOR_ID ID后,运行以下语句:

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

完成了!以前的日志属性现在已改为你刚刚设置的了!
5 手动重设密码
问题:为了增加博客安全性,许多博主选择不易被破解的密码,如u7*KoF5i8_。这当然很好,但问题在于博主自己忘记密码的事情也时常发生啊。

解决方法:密码丢失后,WordPress会给你邮箱发送密码重设链接。但如果你在注册时使用的邮箱现已不可用,或你想使用简单语句执行这个操作的话,可参考以下步骤:

登陆phpMyAdmin,选中你的WordPress数据库并打开SQL窗口。
输入以下语句(假设你的用户名是“admin”):

UPDATE `wp_users` SET `user_pass` = MD5(‘PASSWORD’) WHERE `wp_users`.`user_login` =`admin` LIMIT 1;

完成了!你的密码已更改成功。
注释:用户密码存储在wp_users表格中。当然,WordPress使用了MD5哈希保护密码。

我们要使用“UPDATE” SQL语句和内置的MD5() MySQL函数来把密码转化为MD5算法形式,然后更新。“WHERE”从句使系统只更新管理员的密码。不带有“WHERE”从句会导致系统更新所有的密码。

6 更改域名
问题:虽然我们并不主张这样做,但也许有时你需要在保留博客和数据的同时改变博客的域名。由于WordPress把域名存储在数据库中,所以为了把新域名和博客连接起来,你必须更改数据库。

解决方法:

登陆phpMyAdmin,选中你的WordPress数据库。
点击“SQL”,打开SQL命令窗口,输入以下命令更改URL:

UPDATE wp_options SET option_value = replace(option_value, ‘http://www.oldsite.com’, ‘http://www.newsite.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

使用以下语句替代所有日志的相对URL(guid全局唯一标识符)

UPDATE wp_posts SET guid = replace(guid, ‘http://www.oldsite.com’,’http://www.newsite.com’);

搜索wp_posts表并替代其中的URL,以确保没有老的URL存在了:

UPDATE wp_posts SET post_content = replace(post_content, ‘http://www.oldsite.com’, ‘http://www.newsite.com’);

完成!现在可以使用新URL登陆WordPress控制台了。
注解:为了更快地更改WordPress域名,我选择使用超级有用的MySQL函数“replace,”,这会完全替代所有需要替代的内容。

7 在博客上显示SQL查询数量
问题:了解输入到数据库的查询数量对优化博客载入时间非常重要。为了减少查询,我们首先要知道单个页面的查询数量。

解决方法:

打开主题中的footer.php文件,添加以下代码:

queries in seconds.

保存文件,然后访问博客。在页脚,系统已经显示WordPress数据库的查询数目,及查询所用时间。
注解:许多用户似乎都不了解这个功能。get_num_queries()函数会显示页面载入时执行的查询数目。

以上代码只会对注册用户显示查询数目,因为访客和搜索引擎并不需要知道这些内容。但如果你想公开的话,直接删除if (is_user_logged_in())这个条件语句就可以了。

8 恢复WordPress数据库
问题:如果修改或升级过程或其它原因造成了博客数据的丢失或损坏,希望你有备份的数据库。这样,你可以把备份的数据库导入到数据库中以弥补损失。

解决办法:

登陆phpMyAdmin,选择你的WordPress数据库。
单击水平菜单上的“导入”按钮。
点击“浏览”,选择硬盘上最新备份的数据库。
单击“执行”。如果一切正常的话,你的数据库现在已在运行了!

这文章出自wordpress.la  因为确实很实用,在这里收藏下并分享给大家。