前提: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的主从服务器架构配置成功。