MySQL環境搭建利器---Sandbox
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虛擬機器測試。
-
yum install cpan
-y
- yum install perl
-
Test
-Simple
-y
- cpan MySQL
:
:Sandbox
- echo 'export SANDBOX_AS_ROOT=1' > > /root/ .bash_profile && source /root/ .bash_profile
獲取Percona server 5.7.17 版本
- wget "
2.2 常用命令
安裝完成之後預設會在 /usr/local/bin/ 目錄下產生make_開頭的檔案。
-
make_sandbox 基於二進位制壓縮包建立MySQL例項
- make_sandbox_from_source 基於原始碼建立MySQL例項,引數是而執行
.
/configure && make 成功的原始碼存放目錄
- make_sandbox_from_installed 基於已經安裝好的mysql可執行檔案目錄安裝MySQL例項
- make_sandbox_from_url 從網上下載docker 映象進行安裝,具體參考
-
-help 命令
- make_multiple_sandbox 建立多個相同版本的MySQL例項
- make_multiple_custom_sandbox 建立不同版本的MySQL例項
- make_replication_sandbox 搭建主從複製結構 ,可以是一主一從,也可以是一主多從。
- sbtool : sandbox管理工具
要深入瞭解各個命令的具體用法,請參考原始碼目錄下的README文件,然後再自己動手實踐,能理解更深刻,畢竟紙上來得終覺淺,絕知此事要躬行。下面主要透過
make_sandbox 和 make_replication_sandbox 來介紹如何使用 。
2.3 使用sandbox
安裝單個例項
-
root@rac4
:
/data/mysql#
>make_sandbox /data/mysql/Percona
-Server
-5
.7
.17
-11
-Linux
.x86_64
.ssl101
.tar
.gz
- unpacking /data/mysql/Percona
-Server
-5
.7
.17
-11
-Linux
.x86_64
.ssl101
.tar
.gz
- Executing low_level_make_sandbox
-
-basedir
=
/data/mysql/5
.7
.17 \
-
-
-sandbox_directory
=msb_5_7_17 \
-
-
-install_version
=5
.7 \
-
-
-sandbox_port
=5717 \
-
-
-no_ver_after_name \
-
-
-my_clause
=log
-error
=msandbox
.err
- The MySQL Sandbox
, version 3
.2
.05
-
(C
) 2006
-2016 Giuseppe Maxia
- Installing with the following parameters
:
- upper_directory
= /root/sandboxes
- sandbox_directory
= msb_5_7_17
- sandbox_port
= 5717
- check_port
=
- no_check_port
=
- datadir_from
= script
- install_version
= 5
.7
- basedir
= /data/mysql/5
.7
.17
- 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
-
.
.
.
.
.
. 省略部分內容
- 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
=
- keep_uuid
=
- history_dir
=
- do you agree ? ( [Y ] ,n ) Y
輸入Y 然後sandbox就會啟動一個例項,需要等待20s 左右。
-
# Starting server
-
. sandbox server started
- # Loading grants
- Your sandbox server was installed in $HOME/sandboxes/msb_5_7_17
因為本案例採用root使用者安裝測試,新生成的資料庫目錄在
/root/sandboxes/msb_5_7_17
,其中的檔案如下
大家可以研究各個可執行檔案的具體內容。常用的有use,stop,start,restart 等等,例如
-
root@rac4
:
~
/sandboxes/msb_5_7_17#
>
.
/use
-
-登陸資料庫
- Welcome to the MySQL monitor
. Commands end with
;
or \g
.
- Your MySQL connection id is 9
- Server version
: 5
.7
.17
-11 Percona Server
(GPL
)
, Release 11
, Revision f60191c
- Copyright
(c
) 2009
-2016 Percona LLC
and
/
or its affiliates
- mysql
[localhost
] {msandbox}
(
(none
)
)
> show databases
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
| Database
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
| information_schema
|
-
| mysql
|
-
| performance_schema
|
-
| sys
|
-
|
test
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
- 5 rows in set (0 .00 sec )
搭建主從
,本例中啟用gtid 並且設定建立1個slave. 因為上例已經建立了一個5.7.17 源程式目錄,我們可以基於該目錄建立主從,當然也可以基於原始碼的壓縮包。
-
root@rac4
:
/data/mysql#
>make_replication_sandbox
-
-gtid
-
-how_many_slaves
=1 5
.7
.17
- installing
and starting master
- installing slave 1
- starting slave 1
-
.
. sandbox server started
- initializing slave 1
- 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會把主庫相關資訊輸出。
-
root@rac4
:
~
/sandboxes/rsandbox_5_7_17#
>sh test_replication 檢查主備關係
- # Master log
: mysql
-bin
.000001
- Position
: 10732
- Rows
: 20
- # Testing slave #1
- ok
- Slave #1 acknowledged reception
of transactions from master
- ok
- Slave #1 IO thread is running
- ok
- Slave #1 SQL thread is running
- ok
- Table t1 found on slave #1
- ok
- Table t1 has 20 rows on #1
- # TESTS
: 5
- # FAILED
: 0
( 0
.0%
)
- # PASSED
: 5
(100
.0%
)
- # exit code
: 0
- root@rac4
:
~
/sandboxes/rsandbox_5_7_17#
>
.
/check_slaves #
- master
- port
: 20192
- File
: mysql
-bin
.000001
- Position
: 10732
- Executed_Gtid_Set
: 00020192
-1111
-1111
-1111
-111111111111
:1
-40
- slave # 1
- port
: 20193
- Master_Log_File
: mysql
-bin
.000001
- Read_Master_Log_Pos
: 10732
- Slave_IO_Running
: Yes
- Slave_SQL_Running
: Yes
- Exec_Master_Log_Pos
: 10732
- Retrieved_Gtid_Set
: 00020192
-1111
-1111
-1111
-111111111111
:1
-40
- 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在容器環境搭建mysql備庫MySql
- Linux搭建PHP+MySQL+Apache環境LinuxPHPMySqlApache
- 在Mac下怎麼搭建MySQL環境?MacMySql
- 環境搭建
- 生產環境中MySQL複製的搭建KPMySql
- 如何在 Kubernetes 環境中搭建 MySQL(四):使用 StMySql
- CentOS7搭建Java環境(JDK、MySQL和Tomcat)CentOSJavaJDKMySqlTomcat
- Mac搭建PHP開發環境(PHP+Nginx+MySQL)MacPHP開發環境NginxMySql
- PyFlink 開發環境利器:Zeppelin Notebook開發環境
- gogs環境搭建Go
- App環境搭建APP
- mac搭建環境Mac
- Kubernetes環境搭建
- swoft 環境搭建
- Flutter環境搭建Flutter
- 搭建Java環境Java
- Supervisor 環境搭建
- react環境搭建React
- FNA環境搭建
- FNA 環境搭建
- Maven 環境搭建Maven
- Dubbo環境搭建
- Vagrant 環境搭建
- LNMP 環境搭建LNMP
- OpenGL 環境搭建
- keil環境搭建
- python環境搭建Python
- 搭建lnmp環境LNMP
- 搭建gym環境
- Linuxg環境搭建Linux
- JDK環境搭建JDK
- Angular環境搭建Angular
- anaconda 環境搭建
- ReactNative環境搭建React
- window環境下testlink環境搭建(xammp)
- Windows環境下的Nginx環境搭建WindowsNginx
- Linux 環境下 PHP 專案基礎執行環境搭建(PHP 7.3.6 + MySQL 8.0.16 + Nginx)LinuxPHPMySqlNginx
- 基於Docker搭建PHP+Nginx+MySQL開發環境DockerPHPNginxMySql開發環境