行走在路上的MHA
承接上回書說到,我們搭建我們的MySQL主從,是的,一主雙從那個,如果沒有印象了,那麼證明你看反了,可以試試去看看前面的一條龍服務。
現在國內基本上沒有mha的源,沒辦法下載,你可以去github上看看,興許可以看到,找找罪行版本的。
我還是通過我的師兄的三叔的四嬸子的小舅子的鄰居的狗的朋友的小舅子的主人的二大娘家的孩子找到了。
地址: https://code.google.com/archive/p/mysql-master-ha/downloads
下載頁面類似。
上面標記了manager和node,下載下來準備使用就可以了。如果說你要是找不到我的師兄的三叔的四嬸子的小舅子的鄰居的狗的朋友的小舅子的主人的二大娘家的孩子的話,那你還需要努力啊小夥子!你的路還很長啊!
下面清點伺服器:
1 、192.168.0.181 (mysql-001 master)
2 、192.168.0.182 (mysql-002 備master)
3 、192.168.0.183 (mysql-003 從)
4 、192.168.0.184 (manager)
四台伺服器足夠了,如果說你的伺服器不夠,可以使其中一台的伺服器同時做mysql伺服器,也做manager,這樣三台就可以了。
首先使做準備工作,對伺服器的環境進行設置。
1、來進行免密鑰認證:
ssh-keygen -t rsa
這個步驟,需要再你的每一台伺服器上執行,一步都不能少,不要想著偷工減料,害的只有自己。
GIF
做好了免密鑰,做好還是手動的連接一下,這樣可以確保彼此都認識了。
由於系統可能是最小安裝,所以用的源都是國外的源,信號不是很好,建議換成163,或者阿里的源,同時添加epel源。
2、添加epel源
下載阿里和163源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache fast
源添加完成。可以開始添加相應的必要的依賴了,可能依賴比較多,但是還是要耐心添加。
GIF
3、添加相應的依賴。
yum -y install perl-DBD-MySQL
yum install perl-DBD-MySQL
yum install perl-Config-Tiny -y
yum install epel-release -y
yum install -y perl-Log-Dispatch
yum install -y perl-Parallel-ForkManager
這些東西,務必要安裝完成。安裝完成依賴的話,我們可以開始安裝我們的MHA。
4、MHA開始安裝
yum install -y mha4mysql-node-0.54-0.el6.noarch.rpm 這個需要再每一個節點上安裝,包括你們的manager。
yum install -y mha4mysql-manager-0.55-0.el6.noarch.rpm 這個在manager上安裝就可以。不用每一台上都安裝,真勒。
下面的操作需要在管理節點上執行。
mkdir -p /usr/local/mha
mkdir -p /etc/mha
cat > /etc/mha/mha.conf
[server default]
master_binlog_dir=/data/mysql
user=joelhy
password=root123
ssh_user=root
manager_workdir=/usr/local/mha
remote_workdir=/usr/local/mha
repl_user=slave_user #確保你的每個資料庫上都有這個用戶,並且賦予許可權。
repl_password=bigs3cret #從庫無所謂,主要是備主。
ping_interval=1
[server1]
hostname=192.168.0.181
port =3306
[server2]
hostname=192.168.0.187
candidate_master=1
check_repl_delay=0
[server3]
hostname=192.168.0.188
port =3306
EOF
GRANT REPLICATION SLAVE ON *.* TO "slave_user"@"192.168.71.%" IDENTIFIED BY "bigs3cret";
Query OK, 0 rows affected (0.00 sec)
GRANT ALL ON *.* TO joelhy@"192.168.71.%" IDENTIFIED BY "root123";
Query OK, 0 rows affected (0.00 sec)
這樣就基本完成了,剩下的就是測試一下了。
GIF
測試一下節點之間的登陸。
masterha_check_ssh --conf=/etc/mha/mha.conf
如果當前的從庫沒有設置log-bin,很明顯按照主從複製的要求,是不能作為新的主庫的,所以作為候選主庫的從庫節點必須啟用log-bin,本例中只有2個從庫節點,且都打算作為候選主庫,故都需要啟用log-bin。
使用masterha_check_repl檢查當前的MySQL集群拓撲結構是否符合MHA的要求。使用masterha_check_repl檢查當前的MySQL集群拓撲結構是否符合MHA的要求。
[root@localhost ~]# masterha_check_repl --conf=/etc/mha/mha.conf
Fri Feb 6 20:16:18 2015 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Fri Feb 6 20:16:18 2015 - [info] Reading application default configuration from /etc/mha/mha.conf..
Fri Feb 6 20:16:18 2015 - [info] Reading server configuration from /etc/mha/mha.conf..
Fri Feb 6 20:16:18 2015 - [info] MHA::MasterMonitor version 0.56.
Fri Feb 6 20:16:18 2015 - [info] GTID failover mode = 0
Fri Feb 6 20:16:18 2015 - [info] Dead Servers:
Fri Feb 6 20:16:18 2015 - [info] Alive Servers:
Fri Feb 6 20:16:18 2015 - [info] 192.168.71.151(192.168.71.151:3306)
Fri Feb 6 20:16:18 2015 - [info] 192.168.71.152(192.168.71.152:3306)
Fri Feb 6 20:16:18 2015 - [info] 192.168.71.153(192.168.71.153:3306)
Fri Feb 6 20:16:18 2015 - [info] Alive Slaves:
Fri Feb 6 20:16:18 2015 - [info] 192.168.71.152(192.168.71.152:3306) Version=10.0.16-MariaDB-log (oldest major version between slaves) log-bin:enabled
Fri Feb 6 20:16:18 2015 - [info] Replicating from 192.168.71.151(192.168.71.151:3306)
Fri Feb 6 20:16:18 2015 - [info] 192.168.71.153(192.168.71.153:3306) Version=10.0.16-MariaDB-log (oldest major version between slaves) log-bin:enabled
Fri Feb 6 20:16:18 2015 - [info] Replicating from 192.168.71.151(192.168.71.151:3306)
Fri Feb 6 20:16:18 2015 - [info] Current Alive Master: 192.168.71.151(192.168.71.151:3306)
Fri Feb 6 20:16:18 2015 - [info] Checking slave configurations..
Fri Feb 6 20:16:18 2015 - [info] read_only=1 is not set on slave 192.168.71.152(192.168.71.152:3306).
Fri Feb 6 20:16:18 2015 - [warning] relay_log_purge=0 is not set on slave 192.168.71.152(192.168.71.152:3306).
Fri Feb 6 20:16:18 2015 - [info] read_only=1 is not set on slave 192.168.71.153(192.168.71.153:3306).
Fri Feb 6 20:16:18 2015 - [warning] relay_log_purge=0 is not set on slave 192.168.71.153(192.168.71.153:3306).
Fri Feb 6 20:16:18 2015 - [info] Checking replication filtering settings..
Fri Feb 6 20:16:18 2015 - [info] binlog_do_db= , binlog_ignore_db=
Fri Feb 6 20:16:18 2015 - [info] Replication filtering check ok.
Fri Feb 6 20:16:18 2015 - [info] GTID (with auto-pos) is not supported
Fri Feb 6 20:16:18 2015 - [info] Starting SSH connection tests..
Fri Feb 6 20:16:20 2015 - [info] All SSH connection tests passed successfully.
Fri Feb 6 20:16:20 2015 - [info] Checking MHA Node version..
Fri Feb 6 20:16:20 2015 - [info] Version check ok.
Fri Feb 6 20:16:20 2015 - [info] Checking SSH publickey authentication settings on the current master..
Fri Feb 6 20:16:20 2015 - [info] HealthCheck: SSH to 192.168.71.151 is reachable.
Fri Feb 6 20:16:21 2015 - [info] Master MHA Node version is 0.56.
Fri Feb 6 20:16:21 2015 - [info] Checking recovery script configurations on 192.168.71.151(192.168.71.151:3306)..
Fri Feb 6 20:16:21 2015 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/var/lib/mysql,/var/log/mysql --output_file=/usr/local/mha/save_binary_logs_test --manager_version=0.56 --start_file=mysql-bin.000011
Creating /usr/local/mha if not exists.. ok.
Checking output directory is accessible or not..
ok.
Binlog found at /var/lib/mysql, up to mysql-bin.000011
Fri Feb 6 20:16:21 2015 - [info] Binlog setting check done.
Fri Feb 6 20:16:21 2015 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Fri Feb 6 20:16:21 2015 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user="joelhy" --slave_host=192.168.71.152 --slave_ip=192.168.71.152 --slave_port=3306 --workdir=/usr/local/mha --target_version=10.0.16-MariaDB-log --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to relay-bin.000002
Temporary relay log file is /var/lib/mysql/relay-bin.000002
Testing mysql connection and privileges.. done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Fri Feb 6 20:16:22 2015 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user="joelhy" --slave_host=192.168.71.153 --slave_ip=192.168.71.153 --slave_port=3306 --workdir=/usr/local/mha --target_version=10.0.16-MariaDB-log --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to relay-bin.000005
Temporary relay log file is /var/lib/mysql/relay-bin.000005
Testing mysql connection and privileges.. done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Fri Feb 6 20:16:23 2015 - [info] Slaves settings check done.
Fri Feb 6 20:16:23 2015 - [info]
192.168.71.151(192.168.71.151:3306) (current master)
+--192.168.71.152(192.168.71.152:3306)
+--192.168.71.153(192.168.71.153:3306)
Fri Feb 6 20:16:23 2015 - [info] Checking replication health on 192.168.71.152..
Fri Feb 6 20:16:23 2015 - [info] ok.
Fri Feb 6 20:16:23 2015 - [info] Checking replication health on 192.168.71.153..
Fri Feb 6 20:16:23 2015 - [info] ok.
Fri Feb 6 20:16:23 2015 - [warning] master_ip_failover_script is not defined.
Fri Feb 6 20:16:23 2015 - [warning] shutdown_script is not defined.
Fri Feb 6 20:16:23 2015 - [info] Got exit code 0 (Not master dead).
MySQL Replication Health is OK.
如果最後出現MySQL Replication Health is OK.
那就證明你可以了,厲害啊!!
後台開啟就好了》》nohup masterha_manager --conf=/etc/mha/mha.conf &
停止命令: masterha_stop --conf=/etc/mha/mha.conf


TAG:玄奘騎過的馬 |