在一个网站架构中 只要有服务器的存在就必须要在确定架构的安全,在企业和网站中 数据库的作用是至关重要的,因此对数据库的两个重要的操作就是备份和提升其性能

备份有mysql自带的mysqldump 在有优点的同时也存在着缺点,就是读写的差异,由于大多数网站的数据库是读取多于写入,所以这里做了一个读取的从属服务器的LVS对写入

数据库的操作让它去找主服务器 然后主从服务器做一个AB复制同步 在这里还要在apache搭建一个论坛用来测试

实验环境:vmware 9.0 RHEL5.5

实验所需软件包:mysql-w-r.tar.gz Discuz_7.2_FULL_SC_UTF8.zip

为避免干扰 实验开始前关闭selinux功能 配置好IP地址和本地Yum源

实验所需机器最少7台

实验的拓扑图如下

通过LVS实现WEB站点的mysql高可用_服务器

  分别给三个用户安装三个论坛关联三个数据库每一个用户只对一个数据库有操作权限 对别的数据库没有操作权限

APACHE服务器的配置

1 安装httpd服务 php服务

yum –y install httpd php php-mysql

2 vim /etc/httpd/conf/httpd.conf

通过LVS实现WEB站点的mysql高可用_数据库_02 

3 开启apache 服务

service httpd restart

4 这里我们不做DNS的配置只是在客户机的hosts文件中手动输入域名所对应的IP

通过LVS实现WEB站点的mysql高可用_mysql_03

这样在浏览器中输入域名就可以正常访问了 做完了apache准备部分再去做mysql 然后再去装discuz关联数据库

在mysql主服务器A上设置

1 yum –y install mysql-server mysql

2 初始化mysql数据库

service mysqld restart

3 因为在本机数据库进行操作所以不需要输入用户名和密码 在输入命令的时候只需要输入mysql就可以进入数据库

#mysql

mysql的数据库文件存放在/var/lib/mysql目录下

4 新建三个库分别为a,b,c

通过LVS实现WEB站点的mysql高可用_服务器_04

5 在a,b,c库下分别新建三个表a,b,c

通过LVS实现WEB站点的mysql高可用_服务器_05

6 在三个表中插入输入

mysql>use a;

通过LVS实现WEB站点的mysql高可用_服务器_06

这时再做mysql的主从服务器

在A服务器上需要做如下配置

1 vim /etc/my.cnf

通过LVS实现WEB站点的mysql高可用_网站_07

server_id = 1

log-bin=binlog
log-bin-index=binlog.index

编辑完成之后重启服务让配置生效

2 GRANT replication slave ON *.* TO 'kyo'@'%' identified by '123';-------------主从复制时要用到的

GRANT all privileges ON a.* TO 'baidu'@'%' identified by '123';   -------------在安装论坛时要设置的

GRANT all privileges ON b.* TO 'sina'@'%' identified by '456';----------------在安装论坛时要设置的

GRANT all privileges ON c.* TO 'yahoo'@'%' identified by '789';---------------在安装论坛时要设置的

3 mysql> flush privileges;

  #mysqldump -A -x > /tmp/full.sql 数据库备份到/tmp下

4 #scp /tmp/full.sql root@slaveip:/tmp/    ----------这里我的slaveip是192.168.1.101 所以IP写192.168.1.101就可以了

5 这时如果数据库有写操作要对数据库加锁

mysql> flush tables with read lock;

如果没有写操作可以省掉这一步

6 mysql> show master status;  显示主数据库服务器的状态

通过LVS实现WEB站点的mysql高可用_服务器_08

最后一步解锁数据库表

记住这个Position号码和File名字 一会要用到

在BMain服务器中的操作

1 安装mysql-server

yum –y install mysql-server

2 启动服务

service mysqld restart

3 编辑配置文件

vim /etc/my.cnf

server_id = 2

relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index

通过LVS实现WEB站点的mysql高可用_服务器_09

4 重启服务使配置生效

service mysqld restart

#mysql < /tmp/full.sql

5 进入mysql数据库

mysql> change master to master_host='192.168.1.100', master_port=3306, master_user='kyo', master_password='123', master_log_file='binlog.000001',master_log_pos=366;------------------------------在这里要注意的是master的IP地址和端口还有文件名和Position

mysql> start slave;--------------启动slave

mysql> show slave status \G
      Slave_IO_Running: Yes
     Slave_SQL_Running: Yes

只要有这两个模块处于YES状态就表示从属服务器就成功了

这时我们再去配置另一个从属服务器 这次要用另一种方式

1 前面安装和启动方式都同BMain一样 修改配置文件在server_id = 3即可

再从BMain中拷贝full.sql和mysql目录下的master.info 需要说明的是master.info文件记录着连接上述主服务器的配置信息

通过LVS实现WEB站点的mysql高可用_mysql_10

第三行就是position位置 由于我插入删除表操作使position位置发生变化 具体以自己实验为标准

2 scp root@192.168.1.101:/var/lib/mysql/master.info /var/lib/mysql/master.info

scp root@192.168.1.101:/tmp/full.sql /tmp/full.sql

由于master.info文件不具有权限需要赋权

chown mysql.mysql /var/lib/mysql/master.info –R

#mysql < /tmp/full.sql

重启服务后开启slave

通过LVS实现WEB站点的mysql高可用_网站_11

LVS

做完了mysql的主从服务再对两个从属服务器做一个负载均衡

在LVS上做如下配置

mount /dev/cdrom /mnt

#rpm -ivh /mnt/Cluster/ipvsadm-1.24-10.i386.rpm

如果要做mysql的负载均衡的话要知道它的端口号 3306

LVS#ipvsadm -A -t 192.168.1.200:3306 -s rr
LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.101 -g
LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.102 –g

LVS#ifconfig eth0:1 192.168.1.200  -----------做一个虚拟网卡VIP

在BMain中和BBak中分别做如下配置

#ifconfig lo:1 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.255 up

ain#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
BMain#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

做好之后再来看LVS

 通过LVS实现WEB站点的mysql高可用_mysql_12

做好LVS之后就应该反过来开始测试

在apache上做如下操作

解压mysql-w-r.tar.gz文件

tar fxzv mysql-w-r.tar.gz

拷贝文件到html目录

在apache浏览器中输入http://localhost

通过LVS实现WEB站点的mysql高可用_服务器_13

可以看到页面中有三个表 在html目录中有几个PHP文件 页面中的超链接就是调用的文件 我们通过用PHP代码来实现读写分离

通过LVS实现WEB站点的mysql高可用_数据库_14

打开index.html可以看到超链接所调用的PHP文件

通过LVS实现WEB站点的mysql高可用_mysql_15

打开mysql.php 编辑里面配置文件让创建数据库和表和插入数据操作都在主数据库服务器中进行

在主数据库服务器开一个用户名让远程操作

GRANT all privileges ON *.* TO 'aligatao'@'%' identified by '123';

编辑msql-c.php 和insert.php 只修改第一行就可以

通过LVS实现WEB站点的mysql高可用_mysql_16

在两台辅助mysql上分别建立用户让以远程登录

GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';

GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';

编辑mysql-c.php文件

通过LVS实现WEB站点的mysql高可用_mysql_17

完成之后就可以测试打开第一个选项就出来

通过LVS实现WEB站点的mysql高可用_mysql_18

看mysql主服务器的情况

通过LVS实现WEB站点的mysql高可用_服务器_19

看到刚刚创建的数据库my_db 这时我们插入数据就插入到my_db这个数据库中了

通过LVS实现WEB站点的mysql高可用_网站_20

这个是主服务器中数据 在看看辅助服务器中数据

通过LVS实现WEB站点的mysql高可用_数据库_21

可以看到从页面输入的值都显示在了上面

通过LVS实现WEB站点的mysql高可用_服务器_22

看! LVS上面的数据走向 查询一次就经过一次LVS分发

至此Mysql的高可用已经做完了 接下来再想自己安装个discuz论坛实现CDN空间服务商的类似服务项目,三个虚拟主机对应三个域名安装三个论坛 数据库用已经创建的

1 解压Discuz

APACHE#unzip Discuz_7.2_FULL_SC_UTF8.zip

APACHE#cp -r upload/* /var/www/html/baidu/

APACHE#cp -r upload/* /var/www/html/sina/

APACHE#cp -r upload/* /var/www/html/yahoo/

在客户端浏览器输入地址就可以安装

通过LVS实现WEB站点的mysql高可用_网站_23

霸王条款 点击我同意一步一步开始安装

通过LVS实现WEB站点的mysql高可用_数据库_24 

遇到这一步就要修改/var/www/html/baidu/里的响应文件的权限

通过LVS实现WEB站点的mysql高可用_mysql_25

执行完成后就可以继续安装

通过LVS实现WEB站点的mysql高可用_网站_26

在填写数据库信息要注意上面的提醒----------

通过LVS实现WEB站点的mysql高可用_网站_27

点击下一步接着论坛就安装成功了

通过LVS实现WEB站点的mysql高可用_mysql_28

创建discuz初始数据库的过程

通过LVS实现WEB站点的mysql高可用_服务器_29

如此过程给yahoo和sina站点都安装discuz就可以实现实验给的目的

下面还有很多表 截不出来了 不过大概可以看到表是一样的

Discuz成功关联mysql mysql实现了高可用 实验成功!