2008年12月23日

Mysql中复制介绍及主从服务器的配置

复制介绍

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主 服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

如果你想要设置链式复制服务器,从服务器本身也可以充当主服务器。

请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。

单向复制有利于健壮性、速度和系统管理:

· 主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。

· 通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。

· 使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。

主从服务器的配置

假如有两台机器,
A: 192.168.10.86
B: 192.168.10.87

想把A配置成主服务器,B配置成从服务器(从服务器可以有多个,这里做一个为例子,其它的从机操作基本相同),操作步骤如下:
机器A上的操作:
1.为从服务器创建复制帐号(建议只用这个用户做复制帐号使用,不要做为它用)
mysql> GRANT REPLICATION SLAVE ON *.*
TO 'repl'@'192.168.10.87' IDENTIFIED BY 'slavepass';

2.修改/etc/my.cnf

在[mysqld]中添加如下内容:
server-id = 1 #主机标示,唯一整数,不能和其它主从服务器相同。
log_bin = /var/log/mysql/mysql-bin #确保此文件mysql可写
binlog-do-db =test #需要备份数据,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行

$ sudo service mysqld restart

机器B上的操作:1. 先测试一下,复制帐号是否可用:
$ mysql -h192.168.10.86 -urepl -pslavepass

2. 修改/etc/my.cnf
在[mysqld]中添加如下内容:

server-id=2
master-host=192.168.10.86
master-port=3306
master-user=repl
master-password=test
master-connect-retry=5

replicate-do-db =test


参数介绍:

master-host=host

主复制服务器的主机名或IP地址。如果没有给出该选项,从服务器线程不启动。

master-password=password

连接主服务器时从服务器线程用于鉴定的账户的密码。如果未设置,假定密码为空。

master-port=port_number

mysql的的端口号(如果你没有修改的话就是3306)

master-user=username

连接主服务器时从服务器线程用于鉴定的账户的用户名。该账户必须具有REPLICATION SLAVE权限。如果未设置主服务器用户,假定使用用户test

replicate-do-db=db_name

告诉从服务器限制默认数据库(USE所选择)db_name的语句的复制。要指定多个数据库,应多次使用该选项,每个数据库使用一次。请注意不复制跨数据库的语句,例如当已经选择了其它数据库或没有数据库时执行UPDATE some_db.some_table SET foo='bar'。如果需要跨数据库进行更新,使用--replicate-wild-do-table=db_name.%。请读取该选项列表后面的注意事项。

一个不能按照期望工作的例子:如果用--replicate-do-db=sales启动从服务器,并且在主服务器上执行下面的语句,UPDATE语句不会复制:

USE prices; UPDATE sales.january SET amount=amount+1000; 如果需要跨数据库进行更新,应使用--replicate-wild-do-table=db_name.%

master-connect-retry=retry_seconds
从服务器丢失与主服务器的连接,从服务器尝试立即重新连接。如果失败,则过retry_seconds秒后重新连接。

数据库同步

修改完后,要进行
数据同步。
同步方法可以用两种方法
1.
mysql> LOAD DATA FROM MASTER
;

使用这种方法时,授予复制帐户必须有SUPERRELOAD全局权限(前面我们创建的帐号没有这个权限)。
LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的主服务器上工作。并且,该语句将获得全局读锁定,因此当表正复制到从服务器上时,不可能在主服务器上进行更新。

2.
用mysqldump将主服务器中要复制的数据库导出,在本例中我们用test
$ mysqldump -uroot -p test --databases > test.sql

然后将其拷贝到B机器中,导入数据。
$ mysql -uroot -p < test.sql

验证

在主机A中,mysql>show master status;

在从机B中,mysql>show slave status;

然后,在主机中插入一条数据,看一下B机上的数据库中有相应的数据。

注意:你不能从使用新二进制日志格式的主服务器向使用旧二进制日志格式的从服务器复制(例如,从MySQL 5.0MySQL 4.1。这样操作在复制设置升级服务器时后果严重

合理利用mysql的主从数据库,可以为大负载的需求提供负载均衡,并且可以实现读写分离,可以做更多的优化。





阅读全文

yum 更新问题

最近在Fedora 10中更新软件包时经常会出现一个提示:
Not using downloaded repomd.xml because it is older than what we have:
Current : Sun Dec 21 12:42:31 2008
Downloaded: Sun Dec 14 12:10:52 2008
没有包标志为升级

根据Fedora 中软件包的更新频率,应该是有更新了,新下载repomd.xml怎么会比原来的旧呢?
$ sudo yum clean all

这样清理一下之后,再进行更新
$ sudo yum update
此时看到很多软件包要更新。
不清楚为什么会出现这个提示,如果你也遇到了这个问题,可以按照上面的方法处理一下。
阅读全文

2008年12月21日

修改mysql的最大连接数

mysql 5.0的默认最大连接数为100, 对于大负载量的并发需求可能不够,这时你可以修改mysql的最大连接。
查看mysql的当前最大连接数:
mysqladmin -uroot -ppassword variables | grep max_connections
或者
mysql> SHOW GLOBAL VARIABLES WHERE Variable_name='max_connections';

修改方法有如下几种

1.
mysql> SET GLOBAL max_connections=1000;

修改后会立即生效,不需要重启mysql服务,但是重启后会失效。

2.修改/etc/my.cnf,
在[mysqld] 下面添加:
max_connections=1000

修改后需要重启mysql服务才会重效。
结合第1和第2种方法,可以实现修改立即生效,以后重启也会有效。

3.修改/usr/bin/mysqld_safe
将下面的内容
if test -z "$args"
then
$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking >> $err_log 2>&1
else
eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking $args >> $err_log 2>&1"

改为(添加红色字体的内容):
if test -z "$args"
then
$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking   -O max_connections=1000 >> $err_log 2>&1
else
eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking $args -O max_connections=1000 >> $err_log 2>&1"

修改后重启mysql服务后有效。

建议用第一和第二种方法进行修改。

阅读全文

2008年12月19日

在Linux下查看、修改Windows分区的卷标

修改Linux分区的卷标可以用 e2label,比如要把/dev/sda1 的卷标改为/boot,则可这样

$ e2label /dev/sda1 /boot
查看Linux分区文件系统卷标
$ e2label /dev/sda1
/boot

Linux中如何修改Windows分区的卷标呢?我们要用到两个工具:
对于 VFAT 文件系统,可以使用来自 dosfstools 软件包的 dosfslabel;对于 NTFS 文件系统,可以使用来自 ntfsprogs 软件包的 ntfslabel

dosfslabel (若没有安装,Fedora用户可以直接yum install -y dosfstools)
用于VFAT分区,命令用法:
dosfslabel device [label]

如修改vfat分区(fat16,fat32均可)卷标

$
dosfslabel /dev/sda5 /windows

查看
vfat分区卷标

$ dosfslabel /dev/sda5

ntfsprogs (若没有安装,Fedora用户可以直接yum install -y ntfsprogs)

用于NTFS分区,命令用法:
ntfslabel device [label]
如修改ntfs分区卷标

$
ntfslabel /dev/sda6 /xp

查看
ntfs分区卷标

$ ntfslabel /dev/sda6
/xp
阅读全文

Sun xVM VirtualBox 2.1.0正式发布!


2.1.0不像此前2.0.X一样主要是修正Bug和完善原有功能,这个版本增加了许多新特性。强烈建议VBox的用户们更新!

在官方网站的ChangeLog上,我们可以看到这个版本的主要更新信息:

  • 支持Max OS X客户机的硬件虚拟化技术(VT-x和AMD-V);
  • 支持在32位操作系统上模拟64位客户机!(实验性质,具体看用户手册);
  • 支持Intel Nehalem虚拟化增强技术(EPT和VPID,具体看用户手册);
  • 通过OpenGL支持3D加速!(看用户手册4.8章);

还有很多更新,但是光是以上四样就有足够地理由让用户去升级了!

VirtualBox终于支持了通过OpenGL实验的的3D加速,并且率先支持了在32位的操作系统上模拟64位的客户机(需要64位CPU支持)。这意味着虚拟机平台的限制更少了,你可以在你的x86平台上模拟AMD64!

为了了解详细情况,我下载并稍微阅读了“用户手册”,这里下载

针对“OpenGL 3D加速”这一项,我了解到,这项特性目前只在Windows系统上可用,并且只能实现OpenGL加速,而没有Direct3D加速。这意味着,你已经可以在Windows虚拟机运行一些OpenGL的3D应用,而Direct3D就要稍微等等了。

还等什么呢,这是一个进步相当大的版本。赶紧下载试用吧:

http://www.virtualbox.org/wiki/Linux_Downloads

转自Linux桌面中文网



阅读全文

2008年12月8日

Linux 下查看CPU温度

Linux下可以通过lm_sensors来查看CPU的温度(当然你的硬件首先要支持),要使用这个功能要有内核相关模块(比如I2C)的支持,下面说一下操作方法:

先看一下你的机器上是否安装了lm_sensors,
$ rpm -q lm_sensors

如果没有安装就先安装一下
$ sudo yum install -y lm_sensors

检测传感器:
$ sudo sh -c "yes|sensors-detect"


如果以上步骤没有问题,执行下面的命令就可以查看CPU的温度了:
$ sensors

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +41.0°C (crit = +100.0°C)

coretemp-isa-0001
Adapter: ISA adapter
Core 1: +41.0°C (crit = +100.0°C)

(crit 值应该是上限值)

另外,也可以通过文件查看(我机器用的双核,所以有两个):
$ cat /proc/acpi/thermal_zone/TZS0/temperature
temperature: 41 C

$ cat /proc/acpi/thermal_zone/TZS1/temperature
temperature: 41 C

以下操作在Fedora 10下测试通过。
阅读全文

如何启用 RPM Fusion

在前一段时间我在Blog上介绍过,RPM Fusion(见RPM Fusion 正式启动),RPM Fusion 合并了原有的 Dribble、Freshrpms、Livna 等软件包仓库,是目前最大的第三方软件包仓库(RPM源)。

如何在系统中启用呢?方法很简单,看下面的步骤:

Fedora 8, Fedora 9 或 Fedora 10 启用RPM Fusion方法

su -c 'rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'

Fedora Alpha, Beta, Preview, Rawhide, RC, Snapshot 启用 RPM Fusion 方法

su -c 'rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-rawhide.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-rawhide.noarch.rpm'

RHEL5 或 其它的兼容发行版(例如 CentOS) 启用 RPM Fusion 的方法

su -c 'rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm'

启用之后就可以方便的安装仓库里的软件包了,比如安装播放器mplayer,则直接执行:
yum install -y mplayer

这样mplayer就安装完成了~
阅读全文

2008年12月5日

解决Linux下Firefox Flash文字乱码或不能显示的问题

在Linux下用Firefox浏览有Flash的网页时,经常碰到有些文字不能正常显示,有些还可能显示乱码,比如Google 的在线音乐 播放音乐时,完全显示不了文字,如下图:


添加图片
另外还有Google Analytics上的内容也是有些文字显示不出了,这个问题困扰我很久了,试过网上的很多方法,终于找到了一种简单的方法,操作如下:
修改/etc/fonts/conf.d/49-sansserif.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
If the font still has no generic name, add sans-serif
-->
<match target="pattern">
<test qual="all" name="family" compare="not_eq">
<string>sans-serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>monospace</string>
</test>
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
</match>
</fontconfig>


将上面的红色的内容改为:
<string>sans</string>


保存一下,重启Firefox问题就解决了。
Fedora和Ubuntu 都适用。
终于可以安逸的收听Google的音乐了~
见下图:



阅读全文

2008年12月2日

Fedora 10是真正尖端的Linux发行版本

一款所谓尖端(cutting-edge)产品和前沿(bleeding-edge)产品的区别是什么?尖端产品是最新的、运行正常的产品,前沿产 品是最新的、“基本”运行正常的产品。如果你正投身一个最前沿的项目,最终你会以“伤亡惨重”而告终。然而,Fedora 10是一款真正的尖端Linux发行版。


红帽公司Fedora项目主管Pail Frields表示,Fedora发布的这十几年是它的“黄金时期”,期间没有出现任何重大的漏洞。根据笔者对Fedora 10的研究,Frield说的没错。也就是说,Fedora 10是一款尖端Linux发行版。


最初它被用于加载新的Plymouth图形配置系统,并且通过一项新的内核模式设定功能加速了启动流程。从目前来看,Fedora可以使用ATI卡在PC机上最大程度发挥它的优势。Frields表示未来还将扩展支持其他更多类型的显卡。


Fedora另外一个值得称赞的特性就是Network Manager连接共享功能。你有没有遇到过这样的麻烦:在一个没有Wi-Fi的会议室、只有一个以太网接口、需要同时连线5个人?我就遇到过,而且情况 的确很糟糕。有了NetworkManager你可以通过Wi-Fi与其他人共享Fedora带宽连接。这也许比不上Wi-Fi接入点,但是我们中有多少 人会在自己的笔记本电脑包里随时携带这些?


笔者比较看好最新版本的PackageKit,它是一个关联打包的管理器。它运行在其他Linux发行版管理器的上层,使软件安装变得更简单。最让 笔者印象深刻的就是PackageKit能够自动识别你的媒体播放器不知道如何播放的编码器和译码器。PackageKit会寻找合适的编码器,如果你同 意安装,PackageKit会自动为你安装好。你不需要知道编码器在哪,也不需要处理更多细节,PackageKit会帮你做好一切。这一点很不错。


Frields说,更好的一点是PackageKit开发者还将进一步完善它的桌面识别功能。例如,如果你安装了一个新设备,PackageKit 马上就能够找到、下载并安装这个设备的驱动程序。虽然很少设备需要Linux驱动才能运行,但是这对于对Linux设备驱动程序细节不熟悉的用户来说很有 帮助。


除了以上这些优点之外,Fedora 10最好的一点是能够无缝而流畅地运行,这也正是Fedora 10作为一个尖端Linux发行版本的原因。


阅读全文