博客分享的第一篇技術文章; 項目主要搭建:主主數據庫高可用集群搭建。 數據庫互為主備,應用技術:MM+keepalived 使用的是虛擬機搭建的實驗向大家展示: 數據庫1:192.168.4.7 數據庫2:192.168.4.77 VIP:192.168.4.68 web1:192.168.4.69 web2:192.168.4.70 一、安裝mysql,部署主主同步結構。 直接yum安裝 配置主主同步: 由于主數據庫192.168.4.7里面存放著數據,所以需要先導出數據,方法很多,我們采取mysqldump: #mysqldump -uroot -p123456 --all-databases > /opt/all.sql 然后需要將數據拷貝到數據庫192.168.4.77。 數據庫2: 1、修改配置文件: 數據庫192.168.4.7 [mysqld] server_id=7 #兩臺主機不能重復 log-bin=master7 #開啟binlog功能 log-bin-index=master7.index datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock binlog_format="mixed" 數據庫192.168.4.77 [mysqld] #vim /etc/my.cnf [mysqld] log-bin=master77 server_id=77 binlog_format="mixed" log_slave_updates datadir=/var/lib/ mysqlsocket=/var/lib/mysql/mysql.sock :wq 依次啟動兩臺數據庫:systemctl start mariadb 2、導入數據庫: 將數據庫192.168.4.7備份出來的數據庫導入到數據庫192.168.4.77,以此保持兩端數據一致 mysql -uroot -p123456 < all.sql 3、配置用戶授權并查看master信息: 數據庫192.168.4.7 給用戶授權:允許192.168.4.77的數據庫用戶slave擁有replication slave權限: mysql>grant replication slave on *.* to slave@"192.168.4.77" identified by "123456"; mysql>show master status; //查看狀態; 數據庫192.168.4.77 給用戶授權:允許192.168.4.7的數據庫用戶slave擁有replication slave權限: mysql>grant replication slave on *.* to slave@"192.168.4.7" identified by "123456"; mysql>show master status; //查看狀態; 4、配置相互主從,并開啟slave模式: 數據庫192.168.4.7 #mysql -uroot -p123456 mysql>change master to master_host="192.168.4.77",master_user="slave",master_password="12 3456",master_log_file="master77.000001",master_log_pos=357; mysql>start slave; //啟動slave mysql>show slave status\G; //查看slave狀態 數據庫192.168.4.77 mysql>change master to master_host="192.168.4.7",master_user="slave",master_password="123 456",master_log_file="master7.000001",master_log_pos=357; mysql>start slave; mysql>show slave status\G; //查看slave狀態 狀態都為yes是正常,否則主主同步異常,需要進一步排查 Slave_IO_Running: Yes Slave_SQL_Running: Yes 主主同步配置完成后可以進行一些建庫,建表的測試測試,看看兩邊的數據是否一致 二、安裝keepalived并設置監控 keepalived是安裝在兩臺MySQL服務器上的 首先安裝keepalived過程不解釋就正常解壓安裝就好 1、修改配置文件/etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_mysql { script "/opt/mysql.sh" //監控腳本存放位置(最后有參考腳本,也可以自己寫) interval 2 //(檢測腳本執行的間隔) weight 2 } vrrp_instance VI_1 { state MASTER //備份服務器上將MASTER改為 BACKUP interface eth0 virtual_router_id 51 //主、備機的virtual_router_id必須相同 priority 100 //主、備機取不同的優先級,主機值較大,備份機值較小,備份服 務器設置為99 advert_int 1 authentication { auth_type PASS auth_pass 1111 //主、備機一樣 } track_script { check_mysql //檢測腳本 } virtual_ipaddress { 192.168.4.68 //VIP(虛擬IP,對外提供服務的IP) } } 數據庫192.168.4.77配置文件: vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_mysql { script "/opt/mysql.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_mysql } virtual_ipaddress { 192.168.4.68 } } ****************************************************************************** 監控腳本的作用是:實現keepalived主備的切換 附:監控腳本 vim /opt/ mysql.sh #!/bin/bash a=`ps -C mysqld --no-header | wc -l` if [ $a -eq 0 ];then systemctl start mariadb sleep 3 b=`ps -C mysqld --no-header | wc -l` if [ $b -eq 0 ];then killall keepalived fi fi
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。