sandbox和MHA快速測試(r12筆記第32天)
昨天寫了一篇使用指令碼搭建一主多從的指令碼之後,奇龍兄建議我看看sandbox的功能,可以秒級搭建主從環境,簡單試了下,確實很好很強大。
環境部署其實很簡單,如果有網路環境,直接cpan一個命令即可。或者使用wget的方式來安裝也可以。
安裝sandbox使用cpan來安裝,非常簡單,就是下面的命令:
cpan MySQL::Sandbox
一些日誌的輸出之後就提示你安裝成功,在/usr/local/bin下面就會多幾個make_sandbox相關的命令。
[root@grtest bin]# ll make*
-r-xr-xr-x 1 root root 8681 Apr 12 16:16 make_multiple_custom_sandbox
-r-xr-xr-x 1 root root 13862 Apr 12 16:16 make_multiple_sandbox
-r-xr-xr-x 1 root root 22260 Apr 12 16:16 make_replication_sandbox
-r-xr-xr-x 1 root root 11454 Apr 12 16:16 make_sandbox
-r-xr-xr-x 1 root root 4970 Apr 12 16:16 make_sandbox_from_installed
-r-xr-xr-x 1 root root 7643 Apr 12 16:16 make_sandbox_from_source
-r-xr-xr-x 1 root root 5772 Apr 12 16:16 make_sandbox_from_url
另外一種方式是透過安裝包的方式,可以透過編譯安裝完成。
可以使用wget下載安裝包:
# wget 然後使用make,make install的方式即可安裝。
比如我要部署一個MySQL資料庫環境,我們給定一個二進位制安裝包,直接make_sandbox即可。
# make_sandbox mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz這個命令有一點需要說明,就是考慮到安全,預設使用root是敏感的,會丟擲下面的警告。主要就是向你確認是否確實要這兒做,如果是一個線上環境,操作的風險很高,所以就特別提示,需要你設定一個變數值,確認之後才可以。
# make_sandbox percona-server-5.6.25-73.1.tar.gz
MySQL Sandbox should not run as root
If you know what you are doing and want to
run as root nonetheless, please set the environment
variable 'SANDBOX_AS_ROOT' to a nonzero value我們就給這個變數給一個值,比如go
export SANDBOX_AS_ROOT=go一套資料庫環境就自動部署出來了,難得的是會自動生成對應的快捷指令碼,如果下個做一些批次管理類的任務,就非常快捷方便,這裡的資料庫安裝目錄是msb_5_7_17,資料檔案都在這個目錄下面。
[root@grtest sandboxes]# ll
total 48
-rwxr-xr-x 1 root root 54 Apr 12 16:35 clear_all
drwxr-xr-x 4 root root 4096 Apr 12 16:35 msb_5_7_17
-rw-r--r-- 1 root root 3621 Apr 12 16:35 plugin.conf
-rwxr-xr-x 1 root root 56 Apr 12 16:35 restart_all
-rwxr-xr-x 1 root root 2145 Apr 12 16:35 sandbox_action
-rwxr-xr-x 1 root root 58 Apr 12 16:35 send_kill_all
-rwxr-xr-x 1 root root 54 Apr 12 16:35 start_all
-rwxr-xr-x 1 root root 55 Apr 12 16:35 status_all
-rwxr-xr-x 1 root root 53 Apr 12 16:35 stop_all
-rwxr-xr-x 1 root root 4514 Apr 12 16:35 test_replication
-rwxr-xr-x 1 root root 52 Apr 12 16:35 use_all連線資料庫,只需要一個use命令即可。
./use
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql [localhost] {msandbox} ((none)) >其它的啟停命令也是如此,非常快捷方便。
而要搭建主從環境,操作步驟簡單,輸出日誌也很簡單,比如我指定一個已經解壓的二進位制目錄5.7.17,就會預設建立一主兩從的環境。
# export SANDBOX_AS_ROOT=go
# make_replication_sandbox 5.7.17
installing and starting master
installing slave 1
installing slave 2
starting slave 1
.. sandbox server started
starting slave 2
. sandbox server started
initializing slave 1
initializing slave 2
replication directory installed in $HOME/sandboxes/rsandbox_5_7_17檢視主從的狀態,使用status_all即可。
# ./status_all
REPLICATION rsandbox_5_7_17
master on
port: 20192
node1 on
port: 20193
node2 on
port: 20194
當然上面的工作可以使用sandbox來做,也可以使用自定義指令碼來做,各有好處,相對來說,手工指令碼的方式最起碼自己更清楚一些。
動態搭建一主多從,我的一個設想就是快速模擬MHA的環境。
我們先建立一個資料庫使用者mha_test,作為配置中的連線使用者
GRANT ALL PRIVILEGES ON *.* TO 'mha_test'@'%' identified by 'mha_test' ;然後指定一個配置檔案,內容如下:
# cat /home/mha/conf/app1.cnf
[server default]
manager_workdir=/home/mha/manager
manager_log=/home/mha/manager/app1/manager.log
port=24801
user=mha_test
password=mha_test
repl_user=rpl_user
repl_password=rpl_pass
[server1]
hostname=127.0.0.1
port=24801
candidate_master=1
[server2]
hostname=127.0.0.1
candidate_master=1
port=24802
[server3]
hostname=127.0.0.1
candidate_master=1
port=24803因為是同一臺伺服器,所以能夠快速模擬MHA的容災切換和快速恢復。
使用如下的指令碼來檢測SSH的情況。
# masterha_check_ssh --conf=/home/mha/conf/app1.cnf基本就是如下的ssh連線請檢查。
Wed Apr 12 18:35:52 2017 - [debug] Connecting via SSH from root@127.0.0.1(127.0.0.1:22) to root@127.0.0.1(127.0.0.1:22)..
Wed Apr 12 18:35:52 2017 - [debug] ok.
Wed Apr 12 18:35:52 2017 - [debug] Connecting via SSH from root@127.0.0.1(127.0.0.1:22) to root@127.0.0.1(127.0.0.1:22)..
Wed Apr 12 18:35:52 2017 - [debug] ok.
Wed Apr 12 18:35:52 2017 - [info] All SSH connection tests passed successfully.檢查主從的複製情況,可以使用如下的命令
masterha_check_repl --conf=/home/mha/conf/app1.cnf
輸出日誌部分如下,可以看到主從關係和複製檢測都可以清晰看到。
Wed Apr 12 18:35:29 2017 - [info]
127.0.0.1(127.0.0.1:24801) (current master)
+--127.0.0.1(127.0.0.1:24802)
+--127.0.0.1(127.0.0.1:24803)
Wed Apr 12 18:35:29 2017 - [info] Checking replication health on 127.0.0.1..
Wed Apr 12 18:35:29 2017 - [info] ok.
Wed Apr 12 18:35:29 2017 - [info] Checking replication health on 127.0.0.1..
Wed Apr 12 18:35:29 2017 - [info] ok.
Wed Apr 12 18:35:29 2017 - [warning] master_ip_failover_script is not defined.
Wed Apr 12 18:35:29 2017 - [warning] shutdown_script is not defined.
Wed Apr 12 18:35:29 2017 - [info] Got exit code 0 (Not master dead).
MySQL Replication Health is OK.接著我們啟動MHA-manager
nohup masterha_manager --conf=/home/mha/conf/app1.cnf > /tmp/mha_manager.log 2>&1 &如果檢查目前 MHA的狀態,可以使用如下的命令:
# masterha_check_status --conf=/home/mha/conf/app1.cnf
app1 (pid:11701) is running(0:PING_OK), master:127.0.0.1這個時候我們來破壞一下,可以手工Kill掉24081埠的mysqld_safe和mysqld服務。
這個就會從日誌中發現MHA開始工作了。
tail -f /home/mha/manager/app1/manager.log
Wed Apr 12 22:54:53 2017 - [info] Resetting slave info on the new master..
Wed Apr 12 22:54:53 2017 - [info] 127.0.0.1: Resetting slave info succeeded.
Wed Apr 12 22:54:53 2017 - [info] Master failover to 127.0.0.1(127.0.0.1:24802) completed successfully.
Wed Apr 12 22:54:53 2017 - [info]
----- Failover Report -----
app1: MySQL Master failover 127.0.0.1(127.0.0.1:24801) to 127.0.0.1(127.0.0.1:24802) succeeded
Master 127.0.0.1(127.0.0.1:24801) is down!
Check MHA Manager logs at grtest:/home/mha/manager/app1/manager.log for details.
Started automated(non-interactive) failover.
Selected 127.0.0.1(127.0.0.1:24802) as a new master.
127.0.0.1(127.0.0.1:24802): OK: Applying all logs succeeded
127.0.0.1(127.0.0.1:24803): OK: Slave started, replicating from 127.0.0.1(127.0.0.1:24802)
127.0.0.1(127.0.0.1:24802): Resetting slave info succeeded.
Master failover to 127.0.0.1(127.0.0.1:24802) completed successfully.這樣一來24802埠的mysql服務會自動接管,由從庫變為主庫。而24803埠的從庫會自動從24802埠的服務接受資料變更。
整個過程有條不紊,會分為5個階段來做。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2137149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysqlpump的效能測試(r12筆記第89天)MySql筆記
- Oracle閃回原理測試(三)(r12筆記第16天)Oracle筆記
- 分分鐘搭建MySQL Group Replication測試環境(二)(r12筆記第41天)MySql筆記
- 聊點高考往事和駕照科目二考試(r12筆記第86天)筆記
- MySQL自增列主從不一致的測試(r12筆記第37天)MySql筆記
- 一種Oracle快速的整合遷移方案(r12筆記第98天)Oracle筆記
- MySQL中的批量初始化資料的對比測試(r12筆記第71天)MySql筆記
- mysqlpump和mysqldump的效能大比拼(r12筆記第90天)MySql筆記
- 使用pt工具檢測MySQL主從延遲(r12筆記第7天)MySql筆記
- MySQL中的binlog和redo淺析(r12筆記第5天)MySql筆記
- MySQL MHA部署 Part 6 MHA故障轉移測試MySql
- MySQL中的derived table(r12筆記第47天)MySql筆記
- 歸零的心態(r12筆記第82天)筆記
- MySQL MHA部署 Part 7 MHA手動切換測試MySql
- MHA安裝搭建和測試
- MySQL MHA部署與測試-下篇MySql
- 我爸爸眼中的我(r12筆記第22天)筆記
- 一個IT人和ppt的故事(r12筆記第39天)筆記
- 我的女兒二三事(七)(r12筆記第58天)筆記
- 玩足彩的一點感受(r12筆記第80天)筆記
- TTS 測試筆記TTS筆記
- MySQL原始碼安裝總結(r12筆記第12天)MySql原始碼筆記
- Oracle 12c DBCA淺析(r12筆記第48天)Oracle筆記
- mysqldump的一點使用總結(r12筆記第81天)MySql筆記
- 駕考的一點總結(r12筆記第93天)筆記
- mysql MHA搭建和切換測試MySql
- XtraBackup官方文件讀書筆記和測試筆記
- 閃回原理測試(二)(r11筆記第23天)筆記
- MySQL傳輸表空間小結(r12筆記第2天)MySql筆記
- MySQL service啟動指令碼淺析(r12筆記第59天)MySql指令碼筆記
- 推薦最近收藏的幾篇文章(r12筆記第85天)筆記
- jmeter介面測試筆記JMeter筆記
- iOS 單元測試和 UI 測試快速入門iOSUI
- 軟體測試筆記——11.自動化測試和手動測試的選擇筆記
- 關於金錢的幾個小故事(r12筆記第8天)筆記
- MySQL自增列的重複值問題(r12筆記第25天)MySql筆記
- MySQL無法建立表的問題分析(r12筆記第73天)MySql筆記
- 學習筆記之測試筆記