MM(主主數據庫)+keepalived主備高可用集群
博客分享的第一篇技術文章; 項目主要搭建:主主數據庫高可用集群搭建。 數據庫互為主備,應用技術: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 { [email protected]