在一個網站架構中 只要有服務器的存在就必需要在肯定架構的安全,在企業和網站中 數據庫的做用是相當重要的,所以對數據庫的兩個重要的操做就是備份和提高其性能php
備份有mysql自帶的mysqldump 在有優勢的同時也存在着缺點,就是讀寫的差別,因爲大多數網站的數據庫是讀取多於寫入,因此這裏作了一個讀取的從屬服務器的LVS對寫入html
數據庫的操做讓它去找主服務器 而後主從服務器作一個AB複製同步 在這裏還要在apache搭建一個論壇用來測試mysql
實驗環境:vmware 9.0 RHEL5.5linux
實驗所需軟件包:mysql-w-r.tar.gz Discuz_7.2_FULL_SC_UTF8.zipsql
爲避免干擾 實驗開始前關閉selinux功能 配置好IP地址和本地Yum源數據庫
實驗所需機器最少7臺apache
實驗的拓撲圖以下vim
分別給三個用戶安裝三個論壇關聯三個數據庫每個用戶只對一個數據庫有操做權限 對別的數據庫沒有操做權限瀏覽器
APACHE服務器的配置安全
1 安裝httpd服務 php服務
yum –y 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 –y 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 –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
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 –R
#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 –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以後就應該反過來開始測試
在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實現了高可用 實驗成功!