使用MySQL沙盒快速設定資料庫
介紹
建立MySQL快速“沙箱”執行個體有各種各樣的原因。 您可以使用它們來測試不同類型的複制(例如主主或各種從屬拓撲),根據不同版本的MySQL測試代碼,或者在每個開發人員的基礎上設定每個人擁有自己的資料庫的MySQL執行個體運作在不同的端口,以便他們可以輕松地分解/設定資料庫或進行模式更改,而不影響其他團隊成員。 一個完美的工具來做這些事情很容易的是MySQL Sandbox 。
下載下傳先決條件
要有效使用MySQL沙箱,您需要兩件事,即MySQL沙箱工具本身,以及沙盒腳本可用于設定執行個體的MySQL壓縮包。 您可以下載下傳最新的MySQL沙盒版本(如本文所述的2.0.12):
wget http://launchpad.net/mysql-sandbox/mysql-sandbox-2.0/2.0/+download/mysql_sandbox_2.0.12.tar.gz
您可以從任何MySQL鏡像下載下傳MySQL tarball。 重要的是獲得非RPM,Intel C / C ++編譯,glibc-2.3版本(在檔案名中查找具有“icc”的tar.gz檔案),例如,如果要版本5.1:
wget ftp://mirror.anl.gov/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz
使用MySQL沙箱安裝執行個體
首先,您需要提取MySQL Sandbox工具并将目錄更改為:
$ tar xzvf mysql_sandbox_2.0.12.tar.gz
$ cd mysql_sandbox_2.0.12
建立執行個體的最簡單和最快捷的方法是:
$ ./make_sandbox /path/to/mysql-X.X.XX-osinfo.tar.gz
其中mysql-XXXX-osinfo.tar.gz是我們剛剛下載下傳的MySQL壓縮包。 你完成了 但是,這将把沙盒放在您的主目錄( $ HOME / sandboxes / msb_X_X_XX )下的目錄中 ,這可能或可能不符合您的目的。 它使用預設使用者,密碼,端口和目錄名稱進行設定。 我們來微調一下吧。
設定自定義調整執行個體
我想将我的執行個體放入我建立的分區,名為/ mnt / mysql_sandboxes 。 我建立了一個名為tarballs的子目錄,它儲存了我們下載下傳的MySQL壓縮包,MySQL的Sandbox将提取用于安裝。 因為我正在安裝5.1.30版本,是以我想調用安裝MySQL資料檔案5.1.30_single的目錄 ,但是你可以調用它。 我将建立一個名為jgoulah和密碼goulah的預設使用者。 預設情況下,它将端口設定為版本号,而沒有點(在這種情況下為5130),是以我們給它一個自定義端口,以便它監聽10000。
mysql_sandbox_2.0.12 $ ./make_sandbox \
/mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz \
--upper_directory=/mnt/mysql_sandboxes/ --sandbox_directory=5.1.30_single \
--db_user=jgoulah --db_password=goulah --sandbox_port=10000
以下是輸出:
unpacking /mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz
Executing ./low_level_make_sandbox \
--basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 \
--sandbox_directory=msb_5_1_30 \
--install_version=5.1 \
--sandbox_port=5130 \
--no_ver_after_name \
--upper_directory=/mnt/mysql_sandboxes/ \
--sandbox_directory=5.1.30_single \
--db_user=jgoulah \
--db_password=goulah \
--basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 \
--sandbox_port=10000 \
--my_clause=log-error=msandbox.err
The MySQL Sandbox, version 2.0.12 16-Oct-2008
(C) 2006,2007,2008 Giuseppe Maxia, Sun Microsystems, Database Group
installing with the following parameters:
upper_directory = /mnt/mysql_sandboxes/
sandbox_directory = 5.1.30_single
sandbox_port = 10000
datadir_from = script
install_version = 5.1
basedir = /mnt/mysql_sandboxes/tarballs/5.1.30
my_file =
operating_system_user = jgoulah
db_user = jgoulah
db_password = goulah
my_clause = log-error=msandbox.err
prompt_prefix = mysql
prompt_body = [\h] {\u} (\d) > '
force = 0
no_ver_after_name = 1
verbose = 0
load_grants = 1
no_load_grants = 0
do you agree? ([Y],n) y
loading grants
. sandbox server started
installation options saved to current_options.conf.
To repeat this installation with the same options,
use ./low_level_make_sandbox --conf_file=current_options.conf
----------------------------------------
Your sandbox server was installed in /mnt/mysql_sandboxes//5.1.30_single
現在已經安裝并啟動了,我們可以看到正在運作的程序正确選擇:
$ ps -ef | grep mysql | grep jgoulah
jgoulah 11128 1 0 13:48 pts/3 00:00:00 /bin/sh /mnt/mysql_sandboxes/tarballs/5.1.30/bin/mysqld_safe --defaults-file=/mnt/mysql_sandboxes//5.1.30_single/my.sandbox.cnf
jgoulah 11203 11128 0 13:48 pts/3 00:00:00 /mnt/mysql_sandboxes/tarballs/5.1.30/bin/mysqld --defaults-file=/mnt/mysql_sandboxes//5.1.30_single/my.sandbox.cnf --basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 --datadir=/mnt/mysql_sandboxes//5.1.30_single/data --user=jgoulah --log-error=/mnt/mysql_sandboxes//5.1.30_single/data/msandbox.err --pid-file=/mnt/mysql_sandboxes//5.1.30_single/data/mysql_sandbox10000.pid --socket=/tmp/mysql_sandbox10000.sock --port=10000
我們可以在端口10000上連接配接它:
$ mysql -u jgoulah --protocol=TCP -P 10000 -pgoulah
您也可以進入我們安裝此目錄的目錄,并有一些友善的腳本:
$ cd /mnt/mysql_sandboxes/5.1.30_single/
您可以運作使用腳本來連接配接到mysql(我們剛才做的同樣的事情,除了我們不必記住我們的端口,使用者或通過):
$ ./use
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.30 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql [localhost] {jgoulah} ((none)) >
停止執行個體:
$ ./stop
或者再次啟動它:
$ ./start
. sandbox server started
還有一些其他腳本,您可以在此目錄中進行實驗 ,這些腳本在此記錄。
設定複制執行個體
這個工具的好處是它還将使用單個指令設定MySQL的複制執行個體。 這允許您在複制環境下測試應用程式,甚至可以測試不同的複制拓撲,包括多個從站或多主站複制。 我們将使用與上述單個執行個體類似的選項,除了我們将使用端口11000(從站擷取端口+ 1,...,端口+ n,其中n是從站數)。 我們将安裝進入/mnt/mysql_sandboxes/5.1.30_replicated 。 注意這一次我們使用make_replication_sandbox腳本:
mysql_sandbox_2.0.12 $ ./make_replication_sandbox \
/mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz \
--upper_directory=/mnt/mysql_sandboxes/ \
--replication_directory=5.1.30_replicated --sandbox_base_port=11000
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 on /mnt/mysql_sandboxes//5.1.30_replicated
現在我們有一個主人和兩個Minion去。 請注意,安裝複制沙箱的指令不會像我們對單個執行個體一樣指定使用者,但預設情況下會建立兩個使用者:
使用者: root @ localhost密碼: msandbox
使用者: msandbox @%密碼: msandbox
您可以如上所示運作使用腳本,或直接連接配接到主要:
$ mysql -u msandbox --protocol=TCP -P 11000 -pmsandbox
建立資料庫:
mysql> create database jg_repl_test;
mysql> exit;
連接配接到其中一個從站:
$ mysql -u msandbox --protocol=TCP -P 11001 -pmsandbox
mysql> show databases like '%jg_%';
+------------------+
| Database (%jg_%) |
+------------------+
| jg_repl_test |
+------------------+
我們可以看到它已經複制了。 有各種各樣的選項,你可以給make_replication_sandbox指令,例如你可以給它--master_master選項來設定一個多主要執行個體。
結論
我們已經看到了如何建立一個單一的MySQL執行個體,還有一個有兩個從站的複制主機。 一旦您确定了目錄布局,這些設定隻需幾秒鐘即可進行設定。 為了各種不同的目的,設定MySQL的臨時執行個體真的不是一個更簡單的方法。