MySQL環境搭建利器---Sandbox

lhrbest發表於2019-08-30

MySQL環境搭建利器---Sandbox



https://www.cnblogs.com/gomysql/p/3767445.html



經常看見新同學對於安裝MySQL十分懼怕,這是因為不熟悉的緣故,確實原始碼編譯比較麻煩,缺少各種依賴包也夠折騰的。當然還有預編譯包,但是對於新同學來說好像都挺麻煩的。當然有yum安裝,但是我們需要多例項,測試多個版本就不方便了。那麼我來說說比較簡單的方法。使用沙箱環境。MySQL Sandbox是什麼呢?簡單來說就是一個沙盒,可以用於快速搭建mysql的環境,讓我們可以不用費勁的去安裝,或者編譯。通常對於學習來說是不錯的選擇。畢竟我們是自己學習,而不是線上環境。專案主頁: 。對於安裝也是非常簡單的。我這裡就採用  cpan來安裝,當然各位童鞋也可以採用原始碼安裝。看你口味了。我反正喜歡簡單,能滿足需求就行,或許這也是我的性格哈。:)

1.安裝cpan

yum install cpan -y

2.安裝軟體依賴的包

yum install perl-Test-Simple -y

3.安裝MySQL Sandbox

cpan MySQL::Sandbox

4.設定環境變數(否則會拋錯)

[root@localhost ~]# echo 'export SANDBOX_AS_ROOT=1' >> /root/.bash_profile
[root@localhost ~]# source /root/.bash_profile

5.下載mysql二進位制軟體包(我這裡下載mysql5.6和mariadb-10,軟體各位童鞋自己搜尋,我這裡已經下載,如下)

[root@localhost mysql]# pwd
/opt/mysql
[root@localhost mysql]# ll
total 588236
-rw-r--r--. 1 root root 295874759 Jun  4 04:56 mariadb-10.0.12-linux-x86_64.tar.gz
-rw-r--r--. 1 root root 306470256 Jun  4 04:56 mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
[root@localhost mysql]#

6.在沙箱環境中執行我們mysql兩個例項

(1)首先建立mysql5.6的例項

[root@localhost mysql]# cd /opt/mysql/
[root@localhost mysql]# make_sandbox mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz 
unpacking /opt/mysql/mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
Executing low_level_make_sandbox --basedir=/opt/mysql/5.6.12 \
        --sandbox_directory=msb_5_6_12 \
        --install_version=5.6 \
        --sandbox_port=5612 \
        --no_ver_after_name \
        --my_clause=log-error=msandbox.err
    The MySQL Sandbox,  version 3.0.44
    (C) 2006-2013 Giuseppe Maxia
installing with the following parameters:
upper_directory                = /root/sandboxes
sandbox_directory              = msb_5_6_12
sandbox_port                   = 5612
check_port                     = 
no_check_port                  = 
datadir_from                   = script
install_version                = 5.6
basedir                        = /opt/mysql/5.6.12
tmpdir                         = 
my_file                        = 
operating_system_user          = root
db_user                        = msandbox
remote_access                  = 127.%
bind_address                   = 127.0.0.1
ro_user                        = msandbox_ro
rw_user                        = msandbox_rw
repl_user                      = rsandbox
db_password                    = msandbox
repl_password                  = rsandbox
my_clause                      = log-error=msandbox.err
master                         = 
slaveof                        = 
high_performance               = 
prompt_prefix                  = mysql
prompt_body                    =  [\h] {\u} (\d) > 
force                          = 
no_ver_after_name              = 1
verbose                        = 
load_grants                    = 1
no_load_grants                 = 
no_run                         = 
no_show                        = 
do you agree? ([Y],n)

看見各種提示都給出了,相信童鞋們都看的懂,選擇Y同意。

do you agree? ([Y],n) y
loading grants
.... sandbox server started
Your sandbox server was installed in $HOME/sandboxes/msb_5_6_12
[root@localhost mysql]#

最後會有安裝路徑的提示,預設在家目錄下的sandboxes下。我們可以看看

[root@localhost sandboxes]# pwd
/root/sandboxes
[root@localhost sandboxes]# ll
total 40
-rwxr-xr-x. 1 root root   54 Jun  4 05:25 clear_all
drwxr-xr-x. 4 root root 4096 Jun  4 05:25 msb_5_6_12
-rw-r--r--. 1 root root 3621 Jun  4 05:25 plugin.conf
-rwxr-xr-x. 1 root root   56 Jun  4 05:25 restart_all
-rwxr-xr-x. 1 root root 2139 Jun  4 05:25 sandbox_action
-rwxr-xr-x. 1 root root   58 Jun  4 05:25 send_kill_all
-rwxr-xr-x. 1 root root   54 Jun  4 05:25 start_all
-rwxr-xr-x. 1 root root   55 Jun  4 05:25 status_all
-rwxr-xr-x. 1 root root   53 Jun  4 05:25 stop_all
-rwxr-xr-x. 1 root root   52 Jun  4 05:25 use_all
[root@localhost sandboxes]#

那麼如何啟動mysql呢,預設安裝以後就啟動了。

[root@localhost ~]# pgrep -fl mysql2151 /bin/sh /opt/mysql/5.6.12/bin/mysqld_safe --defaults-file=/root/sandboxes/msb_5_6_12/my.sandbox.cnf2331 /opt/mysql/5.6.12/bin/mysqld --defaults-file=/root/sandboxes/msb_5_6_12/my.sandbox.cnf --basedir=/opt/mysql/5.6.12 --datadir=/root/sandboxes/msb_5_6_12/data --plugin-dir=/opt/mysql/5.6.12/lib/plugin --user=root --log-error=/root/sandboxes/msb_5_6_12/data/msandbox.err --pid-file=/root/sandboxes/msb_5_6_12/data/mysql_sandbox5612.pid --socket=/tmp/mysql_sandbox5612.sock --port=5612[root@localhost ~]#

可以殺掉程式,自己啟動看看,啟動停止指令碼在/root/sandboxes/msb_5_6_12

[root@localhost msb_5_6_12]# pkill -9 mysqld
[root@localhost msb_5_6_12]# ./start 
sandbox server already started (found pid file /root/sandboxes/msb_5_6_12/data/mysql_sandbox5612.pid)
 sandbox server started
[root@localhost msb_5_6_12]# rm -f /root/sandboxes/msb_5_6_12/data/mysql_sandbox5612.pid
[root@localhost msb_5_6_12]# ./start 
. sandbox server started
[root@localhost msb_5_6_12]#

登陸mysql瞧瞧

[root@localhost msb_5_6_12]# pwd
/root/sandboxes/msb_5_6_12
[root@localhost msb_5_6_12]# ./use 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.12 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, 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)) >

就這麼簡單哈,當然有複雜的用法,大家可以試試,通常這樣能快速部署一個mysql用於測試已經足夠了。(下面的是mariadb例項,安裝例項都是一樣的)

[root@localhost msb_10_0_10]# pwd/root/sandboxes/msb_10_0_10
[root@localhost msb_10_0_10]# ./use 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5Server version: 10.0.10-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql [localhost] {msandbox} ((none)) >

各個mysql例項的埠號就是mysql的版本號哦:)

[root@localhost msb_10_0_10]# netstat -nltp | grep mysqld
tcp        0      0 127.0.0.1:5612              0.0.0.0:*                   LISTEN      2547/mysqld         
tcp        0      0 127.0.0.1:10010             0.0.0.0:*                   LISTEN      3015/mysqld         
[root@localhost msb_10_0_10]#

對於需要部署多個例項呢?同一個版本部署多例項,其實也非常的簡單,提供了make_multiple_sandbox這個命令,具體的引數自行help。或者查閱官方文件。

對於部署多個例項,我們還可以新增一個環境變數,就是將例項安裝在指定的位置,

[root@mysql-server-01 mysql]# echo "export SANDBOX_HOME=/data/" >> /root/.bash_profile 
[root@mysql-server-01 mysql]# source /root/.bash_profile

下面預設部署3個例項(相同的版本)

[root@mysql-server-01 mysql]# make_multiple_sandbox mariadb-10.0.12-linux-x86_64.tar.gz 

installing node 1

installing node 2

installing node 3

group directory installed in $SANDBOX_HOME/multi_msb_mariadb-10_0_12

[root@mysql-server-01 mysql]# 

預設部署3個例項,想要部署更多例項可以加引數--how_many_nodes = number,上面部署完成以後我們看看。

[root@mysql-server-01 multi_msb_mariadb-10_0_12]# pwd
/data/multi_msb_mariadb-10_0_12
[root@mysql-server-01 multi_msb_mariadb-10_0_12]# ll
total 72
-rwxr-xr-x 1 root root  365 Jul 13 16:18 check_slaves
-rwxr-xr-x 1 root root  432 Jul 13 16:18 clear_all
-rw-r--r-- 1 root root 7811 Jul 13 16:18 connection.json
-rw-r--r-- 1 root root  626 Jul 13 16:18 default_connection.json
-rwxr-xr-x 1 root root   48 Jul 13 16:18 n1
-rwxr-xr-x 1 root root   48 Jul 13 16:18 n2
-rwxr-xr-x 1 root root   48 Jul 13 16:18 n3
drwxr-xr-x 4 root root 4096 Jul 13 16:17 node1
drwxr-xr-x 4 root root 4096 Jul 13 16:17 node2
drwxr-xr-x 4 root root 4096 Jul 13 16:18 node3
-rw-r--r-- 1 root root 1088 Jul 13 16:18 README
-rwxr-xr-x 1 root root  204 Jul 13 16:18 restart_all
-rwxr-xr-x 1 root root  460 Jul 13 16:18 send_kill_all
-rwxr-xr-x 1 root root  432 Jul 13 16:18 start_all
-rwxr-xr-x 1 root root  232 Jul 13 16:18 status_all
-rwxr-xr-x 1 root root  425 Jul 13 16:18 stop_all
-rwxr-xr-x 1 root root  315 Jul 13 16:18 use_all
[root@mysql-server-01 multi_msb_mariadb-10_0_12]#

可以可以已經有3個節點了,我們登陸其中一個看看。

[root@mysql-server-01 multi_msb_mariadb-10_0_12]# ./n1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.0.12-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
node1 [localhost] {msandbox} ((none)) >

現在是不是開始愛上MySQL Sandbox了呢?那你還等什麼?心動就上吧!哈哈,就寫到這裡了。

 

mysql sandbox經典講義(因為被牆,故放在網盤給同學們下載)

參考資料




一 sandbox是什麼?
是一個非常簡單快捷的安裝搭建MySQL例項的工具,它可以非常快速地滿足我們對MySQL環境各種需求:單機例項,主從,一主多從等等架構(區別於自己安裝MySQL 軟體)。比如 新的資料庫版本發行之後,想要儘快嚐鮮 ,又不想花太多資源去安裝,就可以使用sandbox幫助我們完成建立單個或者主從結構的例項。對於那些不懂MySQL安裝的開發,測試同學而言,可以使用sandbox的快速搭建一個符合要求的資料庫。MySQL Sandbox 快速,是以秒來衡量的,誰用誰知道。
二 如何安裝和使用
2.1 安裝sandbox
本文的案例是基於Centos虛擬機器測試。 

  1. yum install cpan  -y
  2. yum install perl - Test -Simple  -y
  3. cpan MySQL : :Sandbox
  4. echo  'export SANDBOX_AS_ROOT=1'  > > /root/ .bash_profile && source /root/ .bash_profile

獲取Percona server 5.7.17 版本

  1. wget  "

2.2 常用命令
安裝完成之後預設會在 /usr/local/bin/ 目錄下產生make_開頭的檔案。

  1. make_sandbox                 基於二進位制壓縮包建立MySQL例項 
  2. make_sandbox_from_source     基於原始碼建立MySQL例項,引數是而執行  . /configure && make 成功的原始碼存放目錄 
  3. make_sandbox_from_installed  基於已經安裝好的mysql可執行檔案目錄安裝MySQL例項
  4. make_sandbox_from_url        從網上下載docker 映象進行安裝,具體參考  - -help 命令
  5. make_multiple_sandbox        建立多個相同版本的MySQL例項
  6. make_multiple_custom_sandbox 建立不同版本的MySQL例項
  7. make_replication_sandbox     搭建主從複製結構 ,可以是一主一從,也可以是一主多從。
  8. sbtool :                     sandbox管理工具

要深入瞭解各個命令的具體用法,請參考原始碼目錄下的README文件,然後再自己動手實踐,能理解更深刻,畢竟紙上來得終覺淺,絕知此事要躬行。下面主要透過
make_sandbox 和 make_replication_sandbox 來介紹如何使用 。
2.3 使用sandbox
安裝單個例項

  1. root@rac4 : /data/mysql#  >make_sandbox /data/mysql/Percona -Server -5 .7 .17 -11 -Linux .x86_64 .ssl101 .tar .gz
  2. unpacking /data/mysql/Percona -Server -5 .7 .17 -11 -Linux .x86_64 .ssl101 .tar .gz
  3. Executing low_level_make_sandbox  - -basedir = /data/mysql/5 .7 .17 \
  4. - -sandbox_directory =msb_5_7_17 \
  5. - -install_version =5 .7 \
  6. - -sandbox_port =5717 \
  7. - -no_ver_after_name \
  8. - -my_clause =log -error =msandbox .err
  9.     The MySQL Sandbox , version 3 .2 .05
  10.      (C ) 2006 -2016 Giuseppe Maxia
  11. Installing with the following parameters :
  12. upper_directory  = /root/sandboxes
  13. sandbox_directory  = msb_5_7_17
  14. sandbox_port  = 5717
  15. check_port  =
  16. no_check_port  =
  17. datadir_from  = script
  18. install_version  = 5 .7
  19. basedir  = /data/mysql/5 .7 .17
  20. tmpdir  =
  21. my_file  =
  22. operating_system_user  = root
  23. db_user  = msandbox
  24. remote_access  = 127 . %
  25. bind_address  = 127 .0 .0 .1
  26. ro_user  = msandbox_ro
  27. rw_user  = msandbox_rw
  28. repl_user  = rsandbox
  29. db_password  = msandbox
  30. repl_password  = rsandbox
  31. my_clause  = log -error =msandbox .err
  32. . . . . . . 省略部分內容
  33. prompt_prefix  = mysql
  34. prompt_body  =  [ \h ] {\u}  ( \d )  >
  35. force  =
  36. no_ver_after_name  = 1
  37. verbose  =
  38. load_grants  = 1
  39. no_load_grants  =
  40. no_run  =
  41. no_show  =
  42. keep_uuid  =
  43. history_dir  =
  44. do you agree ?  ( [Y ] ,n ) Y

輸入Y 然後sandbox就會啟動一個例項,需要等待20s 左右。

  1. # Starting server
  2. . sandbox server started
  3. # Loading grants
  4. Your sandbox server was installed  in $HOME/sandboxes/msb_5_7_17

因為本案例採用root使用者安裝測試,新生成的資料庫目錄在  /root/sandboxes/msb_5_7_17 ,其中的檔案如下 

大家可以研究各個可執行檔案的具體內容。常用的有use,stop,start,restart 等等,例如

  1. root@rac4 : ~ /sandboxes/msb_5_7_17#  > . /use  - -登陸資料庫
  2. Welcome to the MySQL monitor . Commands end with  ;  or \g .
  3. Your MySQL connection id is 9
  4. Server version : 5 .7 .17 -11 Percona Server  (GPL ) , Release 11 , Revision f60191c
  5. Copyright  (c ) 2009 -2016 Percona LLC  and / or its affiliates
  6. mysql  [localhost ] {msandbox}  ( (none ) )  > show databases ;
  7. + - - - - - - - - - - - - - - - - - - - - +
  8. | Database            |
  9. + - - - - - - - - - - - - - - - - - - - - +
  10. | information_schema  |
  11. | mysql               |
  12. | performance_schema  |
  13. | sys                 |
  14. |  test                |
  15. + - - - - - - - - - - - - - - - - - - - - +
  16. 5 rows  in set  (0 .00 sec )

搭建主從 ,本例中啟用gtid 並且設定建立1個slave. 因為上例已經建立了一個5.7.17 源程式目錄,我們可以基於該目錄建立主從,當然也可以基於原始碼的壓縮包。

  1. root@rac4 : /data/mysql#  >make_replication_sandbox  - -gtid  - -how_many_slaves =1 5 .7 .17
  2. installing  and starting master
  3. installing slave 1
  4. starting slave 1
  5. . . sandbox server started
  6. initializing slave 1
  7. replication directory installed  in $HOME/sandboxes/rsandbox_5_7_17

根據結果提示sandbox建立的主從在目錄$HOME/sandboxes/rsandbox_5_7_17,進入該目錄檢視有如下檔案 

其中master 和node1 分別是主庫和備庫的資料庫目錄,  m和n1 都是登陸主庫的命令,s1 和n2 都是登陸slave 的命令 ,其他的可以從檔名知道具體用途。這裡介紹兩個命令 test_replication和 check_slaves 兩個命令功能類似,都是檢查slave 的狀態資訊。 check_slaves會把主庫相關資訊輸出。

  1. root@rac4 : ~ /sandboxes/rsandbox_5_7_17#  >sh test_replication 檢查主備關係
  2. # Master log : mysql -bin .000001  - Position : 10732  - Rows : 20
  3. # Testing slave #1
  4. ok  - Slave #1 acknowledged reception  of transactions from master
  5. ok  - Slave #1 IO thread is running
  6. ok  - Slave #1 SQL thread is running
  7. ok  - Table t1 found on slave #1
  8. ok  - Table t1 has 20 rows on #1
  9. # TESTS  : 5
  10. # FAILED : 0  ( 0 .0% )
  11. # PASSED : 5  (100 .0% )
  12. # exit code : 0
  13. root@rac4 : ~ /sandboxes/rsandbox_5_7_17#  > . /check_slaves  #
  14. master
  15. port : 20192
  16.              File : mysql -bin .000001
  17.          Position : 10732
  18. Executed_Gtid_Set : 00020192 -1111 -1111 -1111 -111111111111 :1 -40
  19. slave # 1
  20. port : 20193
  21.               Master_Log_File : mysql -bin .000001
  22.           Read_Master_Log_Pos : 10732
  23.              Slave_IO_Running : Yes
  24.             Slave_SQL_Running : Yes
  25.           Exec_Master_Log_Pos : 10732
  26.            Retrieved_Gtid_Set : 00020192 -1111 -1111 -1111 -111111111111 :1 -40
  27.             Executed_Gtid_Set : 00020192 -1111 -1111 -1111 -111111111111 :1 -40

三 小結
     按照之前要部署虛擬機器安裝MySQL的時間和精力來看,使用sandbox的感覺就是一個字- ,只需簡單的命令即可完成而且對使用者幾乎是透明的當你需要快速搭建最小化測試環境時,完全可以使用sandbox助你一臂之力。當然本文僅僅只是本人在比較短時間內測試的總結,需要更加深入瞭解sandbox使用的,可以多看看原始碼和各個命令。推薦 



About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2019-08-01 06:00 ~ 2019-08-31 24:00 在西安完成

● 最新修改時間:2019-08-01 06:00 ~ 2019-08-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2655520/,如需轉載,請註明出處,否則將追究法律責任。

相關文章