實驗系統:CentOS 6.6_x86_64
實驗前提:防火墻和selinux都關閉
實驗說明:本實驗共有5臺主機,ip分配如拓撲
實驗軟件:mariadb-10.0.20 mysql-mmm-2.2.1 mysql-mmm-monitor-2.2.1 mysql-mmm-agent-2.2.1
下載地址:http://pan.baidu.com/s/1bnnYiMr
實驗拓撲:
一、準備工作
1.根據下表,將各主機名進行修改:
2.修改hosts文件,添加如下內容:
vim /etc/hosts------------------------------------------->192.168.19.21 mon192.168.19.66 db1192.168.19.74 db2192.168.19.76 db3 192.168.19.79 db4
3.規劃虛擬ip,列表如下:
二、安裝mariadb并配置
1.在db1-4上安裝:
tar xf mariadb-10.0.20-linux-x86_64.tar.gz -C /usr/local/cd /usr/local/ln -sv mariadb-10.0.20-linux-x86_64 mysqluseradd -r mysqlmkdir -pv /mydata/datachown -R mysql.mysql /mydata/data/cd mysql/chown -R root.mysql .scripts/mysql_install_db --user=mysql --datadir=/mydata/data/cp support-files/my-large.cnf /etc/my.cnfcp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on
2.編輯配置文件:
db1:
vim /etc/my.cnf--------------------------------------------->[mysqld]server-id = 1datadir = /mydata/datalog-bin = /mydata/data/mysql1-binbinlog_format = ROWrelay_log = /mydata/data/relay-logauto-increment-increment = 2auto-increment-offset = 1sync_binlog = 1sync_master_info = 1sync_relay_log = 1sync_relay_log_info = 1max_binlog_size = 100Mlog_slave_updates = 1<---------------------------------------------service mysqld start
db2:
vim /etc/my.cnf--------------------------------------------->[mysqld]server-id = 2datadir = /mydata/datalog-bin = /mydata/data/mysql2-binbinlog_format = ROWrelay_log = /mydata/data/relay-logauto-increment-increment = 2auto-increment-offset = 2sync_binlog = 1sync_master_info = 1sync_relay_log = 1sync_relay_log_info = 1max_binlog_size = 100Mlog_slave_updates = 1<---------------------------------------------service mysqld start
db3:
vim /etc/my.cnf--------------------------------------------->[mysqld]server-id = 3datadir = /mydata/datalog-bin = /mydata/data/mysql3-binbinlog_format = ROWrelay_log = /mydata/data/relay-logsync_binlog = 1sync_master_info = 1sync_relay_log = 1sync_relay_log_info = 1max_binlog_size = 100Mlog_slave_updates = 1<---------------------------------------------service mysqld start
db4:
vim /etc/my.cnf--------------------------------------------->[mysqld]server-id = 4datadir = /mydata/datalog-bin = /mydata/data/mysql4-binbinlog_format = ROWrelay_log = /mydata/data/relay-logsync_binlog = 1sync_master_info = 1sync_relay_log = 1sync_relay_log_info = 1max_binlog_size = 100Mlog_slave_updates = 1<---------------------------------------------service mysqld start
3.在db1上創建用戶:
這里需要創建三個用戶,如下表:
/usr/local/mysql/bin/mysql------------------------------------------------->GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.19.%' IDENTIFIED BY '123456';GRANT SUPER,REPLICATION CLIENT,PROCESS ON *.* TO 'mmm_agent'@'192.168.19.%' IDENTIFIED BY '123456';GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.19.%' IDENTIFIED BY '123456'
4.查看二進制日志位置:
FLUSH TABLES WITH READ LOCK; //施加鎖SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| mysql1-bin.000004 | 936 | | |+-------------------+----------+--------------+------------------+
5.不要關閉這個mysql進程連接,避免鎖失效,我們另起一個ssh連接db1服務器,進行數據庫備份:
/usr/local/mysql/bin/mysqldump --all-databases > /tmp/database-backup.sql
6.回到剛才mysql進程,進行解鎖:
UNLOCK TABLES;
7.將database-backup.sql文件復制到其他db節點:
scp /tmp/database-backup.sql db2:/tmp/scp /tmp/database-backup.sql db3:/tmp/scp /tmp/database-backup.sql db4:/tmp/
8.db2-4主機導入sql文件,并刷新權限:
/usr/local/mysql/bin/mysql < /tmp/database-backup.sql/usr/local/mysql/bin/mysql------------------------------------------------->FLUSH PRIVILEGES;
三、設置復制
1.在db2-4上操作,將db1設置為db2-4的主:
CHANGE MASTER TO MASTER_HOST='192.168.19.66',MASTER_USER='replication',MASTER_PASSWord='123456',MASTER_LOG_FILE='mysql1-bin.000004',MASTER_LOG_POS=936;START SLAVE;
2.查看狀態:
SHOW SLAVE STATUS/G
3.查看db2的master日志位置:
SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| mysql2-bin.000001 | 313 | | |+-------------------+----------+--------------+------------------+
4.在db1上操作,將db2設置為db1的主:
CHANGE MASTER TO MASTER_HOST='192.168.19.74',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql2-bin.000001',MASTER_LOG_POS=313;START SLAVE;SHOW SLAVE STATUS/G
四、安裝MMM
1.創建用戶:
useradd -s /sbin/nologin mmmd
2.在mon上安裝:
yum -y install mysql-mmm-monitor
3.在db1-4上安裝:
yum -y install mysql-mmm-agent
4.編寫配置文件,五臺主機必須一致:
vim /etc/mysql-mmm/mmm_common.conf-------------------------------------------------------->active_master_role writer<host default> cluster_interface eth0 pid_path /var/run/mysql-mmm/mmm_agentd.pid bin_path /usr/libexec/mysql-mmm/ replication_user replication //用于復制的用戶 replication_password 123456 //復制用戶的密碼 agent_user mmm_agent //用于改變模式的用戶 agent_password 123456 //改變模式用戶的密碼</host><host db1> ip 192.168.19.66 mode master peer db2 //需要監視的“同伴”</host><host db2> ip 192.168.19.74 mode master peer db1</host><host db3> ip 192.168.19.76 mode slave</host><host db4> ip 192.168.19.79 mode slave</host><role writer> hosts db1, db2 //可寫節點 ips 192.168.19.150 //寫操作使用的VIP mode exclusive //排他模式,此處資源同一時間只能分配給一個主機</role><role reader> hosts db1, db2, db3, db4 //可讀節點 ips 192.168.19.151, 192.168.19.152, 192.168.19.153, 192.168.19.154 //讀操作使用的VIP mode balanced //平衡模式</role>
5.在db1-4上修改mmm_agent.conf,只需要修改db1這里,是哪臺就改成哪臺,這里只給出db1的:
vim /etc/mysql-mmm/mmm_agent.conf------------------------------------------------->include mmm_common.conf# The 'this' variable refers to this server. Proper Operation requires # that 'this' server (db1 by default), as well as all other servers, have the # proper IP addresses set in mmm_common.conf.this db1 //只改這里
6.配置mon上的mmm_mon.conf:
vim /etc/mysql-mmm/mmm_mon.conf---------------------------------------------------->include mmm_common.conf<monitor> ip 127.0.0.1 pid_path /var/run/mysql-mmm/mmm_mond.pid bin_path /usr/libexec/mysql-mmm status_path /var/lib/mysql-mmm/mmm_mond.status ping_ips 192.168.19.50, 192.168.19.66, 192.168.19.74, 192.168.19.76, 192.168.19.79 //用于測試網絡可用性的IP地址,其中有一個地址能ping通,就代表網絡正常,不要寫入本機的ip地址 auto_set_online 60 //是否設置自動上線,如果該值大于0,抖動的主機在抖動的時間范圍過后,則設置自動上線 # The kill_host_bin does not exist by default, though the monitor will # throw a warning about it missing. See the section 5.10 "Kill Host # Functionality" in the PDF documentation. # # kill_host_bin /usr/libexec/mysql-mmm/monitor/kill_host #</monitor><host default> monitor_user mmm_monitor //用于監控的用戶 monitor_password 123456 //監控用戶的密碼</host>debug 0
五、啟動測試:
1.在db1-4上啟動agents:
chkconfig mysql-mmm-agent onservice mysql-mmm-agent start
2.在mon上啟動monitor:
vim /etc/default/mysql-mmm-monitor--------------------------------------------------->ENABLED=1<---------------------------------------------------service mysql-mmm-monitor start
3.檢查集群狀態:
mmm_control show
如果服務器狀態不是ONLINE,可以用如下命令將服務器上線,例如:
mmm_control set_online db1
4.從剛才圖片可以看到,寫請求的VIP在db1上,所有從節點也都把db1當做主節點。下面將db1停掉:
service mysqld stop //停掉db1的mysql服務
可以看到寫請求的VIP已經轉移到db2上了,且從節點的主都指向了db2:
5.最后開啟db3、db4的只讀:
vim /etc/my.cnf------------------------------->[mysqld]read_only = 1<-------------------------------service mysqld restart
到此為止,所有的配置都完成了。一個writer的VIP和四個reader的VIP都已經正常分配,大家可以創建一個遠程登錄賬號進行測試,這里就不再給出具體的過程了。由于時間緊迫,且經驗有限,配置過程中可能會出現紕漏,如有發現請及時聯系我,歡迎大家的指正,謝謝! 聯系QQ:82800542
新聞熱點
疑難解答