在一个网站架构中 只要有服务器的存在就必须要在确定架构的安全,在企业和网站中 数据库的作用是至关重要的,因此对数据库的两个重要的操作就是备份和提升其性能
备份有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台
实验的拓扑图如下
分别给三个用户安装三个论坛关联三个数据库每一个用户只对一个数据库有操作权限 对别的数据库没有操作权限
APACHE服务器的配置
1 安装httpd服务 php服务
yum �Cy install httpd php php-mysql
2 vim /etc/httpd/conf/httpd.conf
3 开启apache 服务
service httpd restart
4 这里我们不做DNS的配置只是在客户机的hosts文件中手动输入域名所对应的IP
这样在浏览器中输入域名就可以正常访问了 做完了apache准备部分再去做mysql 然后再去装discuz关联数据库
在mysql主服务器A上设置
1 yum �Cy install mysql-server mysql
2 初始化mysql数据库
service mysqld restart
3 因为在本机数据库进行操作所以不需要输入用户名和密码 在输入命令的时候只需要输入mysql就可以进入数据库
#mysql
mysql的数据库文件存放在/var/lib/mysql目录下
4 新建三个库分别为a,b,c
5 在a,b,c库下分别新建三个表a,b,c
6 在三个表中插入输入
mysql>use a;
这时再做mysql的主从服务器
在A服务器上需要做如下配置
1 vim /etc/my.cnf
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; 显示主数据库服务器的状态
最后一步解锁数据库表
记住这个Position号码和File名字 一会要用到
在BMain服务器中的操作
1 安装mysql-server
yum �Cy 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
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文件记录着连接上述主服务器的配置信息
第三行就是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 �CR
#mysql < /tmp/full.sql
重启服务后开启slave
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 �Cg
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之后就应该反过来开始测试
在apache上做如下操作
解压mysql-w-r.tar.gz文件
tar fxzv mysql-w-r.tar.gz
拷贝文件到html目录
在apache浏览器中输入http://localhost
可以看到页面中有三个表 在html目录中有几个PHP文件 页面中的超链接就是调用的文件 我们通过用PHP代码来实现读写分离
打开index.html可以看到超链接所调用的PHP文件
打开mysql.php 编辑里面配置文件让创建数据库和表和插入数据操作都在主数据库服务器中进行
在主数据库服务器开一个用户名让远程操作
GRANT all privileges ON *.* TO 'aligatao'@'%' identified by '123';
编辑msql-c.php 和insert.php 只修改第一行就可以
在两台辅助mysql上分别建立用户让以远程登录
GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';
GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';
编辑mysql-c.php文件
完成之后就可以测试打开第一个选项就出来
看mysql主服务器的情况
看到刚刚创建的数据库my_db 这时我们插入数据就插入到my_db这个数据库中了
这个是主服务器中数据 在看看辅助服务器中数据
可以看到从页面输入的值都显示在了上面
看! 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/
在客户端浏览器输入地址就可以安装
霸王条款 点击我同意一步一步开始安装
遇到这一步就要修改/var/www/html/baidu/里的响应文件的权限
执行完成后就可以继续安装
在填写数据库信息要注意上面的提醒----------
点击下一步接着论坛就安装成功了
创建discuz初始数据库的过程
如此过程给yahoo和sina站点都安装discuz就可以实现实验给的目的
下面还有很多表 截不出来了 不过大概可以看到表是一样的
Discuz成功关联mysql mysql实现了高可用 实验成功!