前提:1、主机名:www.nsm.com
          2、配置MySQL主从服务器复制的时候,一定要注意,从服务器的MySQL版本一定不能比主服务器的MySQL版本低

一、配置MySQL:

准备数据存放的文件系统
需新建分区,由于新建分区大家都以很熟悉了,在此步骤省略。新建一个逻辑卷,创建逻辑卷的分区系统ID要改为8e,并将其挂载至特定目录:  
# pvcreate  /dev/sda5
# vgcreate myvg /dev/sda5
# lvcreate -L 2G -n mylv myvg
# mke2fs -j /dev/myvg/mylv

下载平台对应的mysql软件版本至本地,这里是32位平台,因此,选择的为mysql-5.5.20-linux2.6-i686.tar.gz,源码包自己到网站上下载。
   
# tar xvf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/  
# ln -sv mysql-5.5.20-linux2.6-i686  mysql
# cd mysql
# chown -R mysql:mysql  .
初始化mysql:
    使用--help可以查看初始化mysql的选项,选择使用
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root  .
   
4、为mysql提供主配置文件:

# cd /usr/local/mysql/support-files/
# cp my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2
另外还需要添加如下行指定mysql数据文件的存放位置:
datadir = /mydata/data

5、为mysql提供sysv服务脚本:

# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

添加至服务列表,并设置开机启动:
# chkconfig --add mysqld
# chkconfig mysqld on

而后就可以启动服务测试使用了。
# service mysqld start

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

6、输出mysql的man手册至man命令的查找路径:

# man -M /usr/local/mysql/man mysql

编辑/etc/man.config,添加如下行即可:
MANPATH  /usr/local/mysql/man

7、输出mysql的头文件至系统头文件路径/usr/include:

这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include  /usr/include/mysql

8、输出mysql的库文件给系统库查找路径:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
# vim /etc/profile
编辑此文件,添加如下行:
PATH=$PATH:/usr/local/mysql/bin:/usr/local/apache/bin

而后让系统重新载入系统库:
# ldconfig -v

二、配置MySQL主服务器:

# vim /etc/my.cnf
server id = 1 (若主服务器为1,从服务器一定不能为1,为了避免循环复制)

还可以再加一项,使每个文件一个表:
innodb_file_per_table = 1

主服务器上要启动二进制日志,默认启动:
    log-bin=mysql-bin(从服务器的二进制日志是否启动,要看它是否要作为其他服务器的主服务器,若不,就不需要启动了,可以注释)

创建用户:
mysql> grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'redhat';

mysql> flush privileges;
查看所设置权限:
mysql> show grants for repl@'172.16.%.%';


三、配置MySQL从服务器:


# vim /etc/my.cnf
server id = 13(值可任意填写,但不可与主服务器相同)

还可以再加一项,使每个文件一个表:
innodb_file_per_table = 1

mysql> show global variables like 'relay%';   
+-----------------------+----------------+
| Variable_name         | Value          |
+-----------------------+----------------+
| relay_log             |                |
| relay_log_index       |                |
| relay_log_info_file   | relay-log.info |
| relay_log_purge       | ON             |
| relay_log_recovery    | OFF            |
| relay_log_space_limit | 0              |
+-----------------------+----------------+

作为从服务器,要打开中继日志文件,记录从主服务器复制过来的数据,开启中继日志文件要在/etc/my.cnf中定义:
# vim /etc/my.cnf
注释掉:
# log-bin=mysql-bin  (在此,从服务器不作为其他服务器的主服务器,此项不需开启)
添加如下行,开启中继日志:
relay-log=relay-bin           (“_”与“-”的意义是相同的)
relay-log-index=relay-bin.index

要想生效,服务器重启:
# service mysqld restart

查看从服务器运行状态:
mysql> show slave status\G

查看帮助信息:
mysql> help change master to

更改从服务器用于与主服务器进行连接和通讯的参数:
mysql> change master to 
    -> master_host='172.16.29.3',
    -> master_user='repl',
    -> master_password='redhat';

要使用此命令明确启动slave:
mysql> start slave;

mysql> show slave status\G
查看这两条信息是否启动:
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

从服务器启动成功,若中间出现问题,多就查看错误日志,错误日志中记录了出现错误的很多信息,对排错很有帮助:
# cd /mydata/data/
# tail www.nsm.com.err

四、验证
MySQL的主从服务器架构了配置完成,下面开始在主服务器中进行一些操作,并验证从服务器是否根据主服务器其进行复制:

主服务器:
mysql> create database student;
查看数据库是否创建成功:
mysql> show databases;
mysql> use student;
mysql> create table stu (
    -> Name varchar(30) not null,
    -> Age tinyint unsigned,
    -> Gender enum('F','M') default 'M',
    -> CID smallint unsigned );
查看表是否创建完成
mysql> show tables;

从服务器:
mysql> show databases;  
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student            |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use student
Database changed

mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| stu               |
+-------------------+
1 row in set (0.00 sec)

mysql> desc stu;
+--------+----------------------+------+-----+---------+-------+
| Field  | Type                 | Null | Key | Default | Extra |
+--------+----------------------+------+-----+---------+-------+
| Name   | varchar(30)          | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned  | YES  |     | NULL    |       |
| Gender | enum('F','M')        | YES  |     | M       |       |
| CID    | smallint(5) unsigned | YES  |     | NULL    |       |
+--------+----------------------+------+-----+---------+-------+

由此可见,主服务器的操作从服务器能够复制过来,并执行相同的操作,MySQL的主从服务器架构配置成功。