显示标签为“MySQL Sandbox”的博文。显示所有博文
显示标签为“MySQL Sandbox”的博文。显示所有博文

2020年3月16日星期一

MySQL和Docker ...一個簡單的設置

MySQL和Docker ...不是新概念,人們已經使用Docker已有一段時間了。 對於剛開始為此發展的人來說,可能會有一些障礙。

儘管MySQL在本地運行良好,但如果要在不同版本的MySQL上測試代碼,則很容易擁有多個版本是很好的。

多年來,一種選擇當然是Giuseppe Maxia的https://mysqlsandbox.net/ 這是一個非常有效的解決方案,能夠啟動多個實例並測試複製等。

在跨不同版本的MySQL進行測試時,Docker現在也是另一個經常使用的場景。 下面僅介紹一些步驟,以輕鬆安裝多個版本。 我使用OSX,因此這些示例適用於OSX。

您需要Docker才能啟動,當然,Docker Desktop是一個方便的工具,使您能夠輕鬆獲得訪問權限。

設置好Docker之後,就可以為MySQL準備好環境了。

在這裡,我創建了一個Docker文件夾,其中包含MySQL數據目錄,配置文件以及mysql-files目錄(如果需要)。

mkdir ~/Docker ;

mkdir ~/Docker/mysql_data;
mkdir ~/Docker/mysql-files;
mkdir ~/Docker/cnf;

現在在mysql_data


cd ~/Docker/mysql_data;
mkdir 8.0;
mkdir 5.7;
mkdir 5.6;
mkdir 5.5;


現在,我為該示例設置簡單的cnf文件。 要注意的主要事情是綁定地址。 這樣做是為了確保它對我們開放,使其可以在docker之外訪問MySQL。 您還可以注意到,對於每個MySQL docker實例,這些文件都可以用來設置其他配置信息。



cd ~/Docker/cnf;

cat my.8.0.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= /var/lib/mysql-files
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address = 0.0.0.0
port=3306
server-id=80


# Custom config should go here
!includedir /etc/mysql/conf.d/

cat my.5.7.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=57
max_allowed_packet=32M

$ cat my.5.6.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=56

$ cat my.5.5.cnf
[mysqld]
bind-address = 0.0.0.0
server-id=55


好的,現在我們已經設置了配置文件,我們需要構建docker。 生成命令要注意的幾件事。

--name我們為docker設置了一個命名引用。

在這裡,我們將配置文件,數據目錄和mysql-files目錄映射到docker。 這使我們可以輕鬆調整my.cnf文件等。
-v〜/ Docker / cnf / my.8.0.cnf:/etc/mysql/my.cnf
-v〜/ Docker / mysql_data / 8.0:/ var / lib / mysql
-v〜/ Docker / mysql文件:/ var / lib / mysql文件

我們希望能夠在docker之外訪問這些MySQL實例,因此我們需要相應地發布和映射端口。
-p 3306:3306這意味著3306在docker內部的3306本地
-p 3307:3306這意味著3307在docker內部3306本地
-p 3308:3306這意味著3308在docker內部3306本地
-p 3309:3306這意味著3309在docker內部3306本地

然後,我們還要傳遞幾個環境變量。
-e MYSQL_ROOT_HOST =%-e MYSQL_ROOT_PASSWORD = <在此處設置密碼>

所以放在一起...


docker run --restart always --name mysql8.0 -v ~/Docker/cnf/my.8.0.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/8.0:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3306:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:8.0

docker run --restart always --name mysql5.7 -v ~/Docker/cnf/my.5.7.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.7:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3307:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.7

docker run --restart always --name mysql5.6 -v ~/Docker/cnf/my.5.6.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.6:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3308:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.6

docker run --restart always --name mysql5.5 -v ~/Docker/cnf/my.5.5.cnf:/etc/mysql/my.cnf -v ~/Docker/mysql_data/5.5:/var/lib/mysql -v ~/Docker/mysql-files:/var/lib/mysql-files -p 3309:3306 -d -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=<set a password here> mysql:5.5

每次執行以上命令後,您都應該返回一個ID。
示例:3cb07d7c21476fbf298648986208f3429ec664167d8eef7fed17bf9ee3ce6316

您可以通過Docker桌面輕鬆啟動/重新啟動和訪問每個Docker終端,或者只需記下相關ID即可通過終端執行。

Docker桌面還會顯示您傳遞的所有變量,以便您進行驗證。
當然,您也可以在此處訪問CLI,輕鬆停止或啟動或銷毀它。


$ docker exec -it 3cb07d7c21476fbf298648986208f3429ec664167d8eef7fed17bf9ee3ce6316 /bin/sh; exit
# mysql -p

如果Docker容器已經在運行,您現在可以通過localhost終端訪問MySQL。

$ mysql --host=localhost --protocol=tcp --port=3306 -p -u root

現在,如果您遇到任何訪問問題,請記住確保MySQL帳戶正確並且您的端口和映射正確。
  • 在“讀取初始通信數據包”時失去與MySQL服務器的連接
  • 錯誤1045(28000):用戶'root'@'192.168.0.5'的訪問被拒絕(使用密碼:是)

現在,您可以看到所有設備均已啟動並且可用,並且服務器ID與我們為每個cnf文件的eariler設置的設置匹配。

$ mysql --host=localhost --protocol=tcp --port=3306 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| 58e9663afe8d | 8.0.19 | 80 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3307 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| b240917f051a | 5.7.29 | 57 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3308 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| b4653850cfe9 | 5.6.47 | 56 |
+--------------+-----------+-------------+
$ mysql --host=localhost --protocol=tcp --port=3309 -e "Select @@hostname, @@version, @@server_id "
+--------------+-----------+-------------+
| @@hostname | @@version | @@server_id |
+--------------+-----------+-------------+
| 22e169004583 | 5.5.62 | 55 |
+--------------+-----------+-------------+


2013年5月9日星期四

與MySQL數據庫系統:: MySQL :: Percona的:: MariaDB的比較沙箱

Original post: http://anothermysqldba.blogspot.com/2013/05/comparing-databases-mysql-percona.html

你經常發現自己的好奇,但忙不過來探索呢? 

人們往往呆在它們是什麼舒服,並開始使用。 MySQL有一個非常忠實的用戶。 它是確定好奇和探索叉的。 MySQL的沙箱使得它非常容易為你做到這一點。 

MySQL的沙盒是一個偉大的工具和文檔是可以的,如果你需要幫助。 
MySQL的沙箱 http://mysqlsandbox.net/docs.html還允許您輕鬆地檢查對叉子和不同版本的MySQL服務器。 

我已經有我的服務器上運行的MySQL 5.6版本。 


$的mysql-P 
輸入密碼: 
服務器版本:5.6.10-MySQL社區服務器日誌(GPL) 
版權所有(c)2000年,2013年,甲骨文公司及/或其附屬公司。 保留所有權利。 




我用MySQL的沙箱比較三個類似的MySQL版本: 

  • MariaDB的30年5月5日
  • Percona的服務器30年5月5日
  • MYSQL-31年5月5日
我決定讓我的沙箱方式: 
$ make_multiple_custom_sandbox MariaDB的30年5月5日的linux-i686.tar.gz Percona的服務器30年5月5日rel30.2 500.Linux.i686.tar.gz MYSQL-31年5月5日linux2.6下i686.tar的。 GZ 


在node1] $。/使用 
歡迎MariaDB的監視器。 命令結束或\ G。 
MariaDB的連接id為3 
服務器版本:30年5月5日MariaDB的日誌MariaDB的服務器 

版權所有(c)2000年,2013年,甲骨文,蒙蒂計劃Ab和他人。 
>選擇VERSION(); 
+ -------------------- + 
| VERSION() 
+ -------------------- + 
| 30年5月5日MariaDB的登錄| 
+ -------------------- + 

  • 好吧這是預料之中的。




node2的 ] $。/使用 
歡迎MariaDB的監視器。 命令結束或\ G。 
MariaDB的連接ID為4 

服務器版本:30年5月5日MariaDB的日誌MariaDB的服務器 

版權所有(c)2000年,2013年,甲骨文,蒙蒂計劃Ab和其他 
>選擇VERSION(); 
+ -------------------- + 
| VERSION() 
+ -------------------- + 
| 30年5月5日MariaDB的登錄| 
+ -------------------- + 
  • 啊? 確定並不如預期。


節點3] $。/使用 
歡迎到MySQL監視器。 命令結束或\ G。 
你的MySQL連接id為3 
服務器版本:31年5月5日日誌MySQL社區服務器(GPL) 

版權所有(c)2000年,2013年,甲骨文公司及/或其附屬公司。 保留所有權利。 
>選擇VERSION(); 
+ ------------ + 
| VERSION() 
+ ------------ + 
| 31年5月5日登錄| 
+ ------------ + 


我的預期,或者至少是有希望的,它要結果與此。 


我仍然認為, MySQL的沙盒是一個偉大的工具,使一些比較和測試,很容易做到。 我只是碰巧碰上一次試圖運行時,所有3個版本衝突。 這可能完全是我的錯誤,我剛才被忽視的東西。 我覺得一些人想要做的,雖然這將是一個有效的測試。 不管我感動,而不是從源代碼構建。 更可以在這裡找到: 

2013年5月6日星期一

從來源的MySQL :: MariaDB的:: Percona的建築

Original Post: http://anothermysqldba.blogspot.com/2013/05/building-from-source-mysql-mariadb.html

這是可能的,在同一服務器上運行一個以上的MySQL服務器。 有時人們可能會想安裝其他版本的數據庫在同一硬件上測試的目的,以及評估。

安裝源和自定義安裝為每個數據庫比聽起來更容易一些。 我會建議檢討MySQL的沙盒,雖然第一次,因為它允許做得非常快速,方便地評估和測試。 然而,從源代碼安裝工作更好地為我的時候,我做了一些比較。 下面是我使用的過程。 我會希望打造出了未來的博客文章,有一次我與這些數據庫調整,然後配置。



這是默認信息mysql.com 。 我已經安裝了MySQL,所以我沒有執行下面的,但我想在這裡僅供參考。 您可以比較這些步驟到MySQL,MariaDB的和Percona的源代碼安裝的,下面也看到我是如何更新的默認步驟,以獲得所有三個版本的同一台機器上運行的數據庫。 (這裡沒有生產價值做只是為了測試的過程。)

# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql

# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions

# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data

# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server


If you prefer to use the mysql.server腳本啟動和停止,確保相應的審查和編輯。
# Preconfiguration setup
shell> groupadd oracle_mysql
shell> useradd -r -g
 # Preconfiguration setup
shell> groupadd oracle_mysql
shell> useradd -r -g
 oracle_mysql oracle_mysql oracle_mysql 
# Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MySQL-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/
 # Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MySQL-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/
 oracle_mysql的TMP“
# End of source-build specific instructions

I do not like the results
-- Installing: /usr/local/ oracle_mysql的TMP的/ usr / local / mysql下/
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/
 If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/
 oracle_mysql的TMP
shell> mv usr/local/mysql/ ../ oracle_mysql ;
shell> cd ../; # rm -Rf oracle_mysql shell> cd ../; # rm -Rf -TMP

# Postinstallation setup
shell> cd /usr/local/ oracle_mysql的 
shell> chown -R
 
shell> chown -R
 oracle_mysql .
shell> chgrp -R oracle_mysql .

# Next command is optional
shell> cp support-files/my-small.cnf /etc/
 # Next command is optional
shell> cp support-files/my-small.cnf /etc/
 oracle_mysql的.cnf
shell> vi /etc/ .cnf shell> vi /etc/ oracle_mysql的.cnf

port = 3309

socket = /tmp/ oracle_mysql .sock


shell> scripts/mysql_install_db --defaults-file=/etc/oracle_mysql.cnf --basedir=/usr/local/oracle_mysql --skip-name-resolve --datadir=/var/lib/oracle_mysql --user=oracle_mysql
shell> chown -R oracle_mysql /var/lib/oracle_mysql /*

shell> # bin/mysqld_safe --defaults-file=/etc/ oracle_mysql .cnf --user= oracle_mysql --datadir=/var/lib/ oracle_mysql / --port=3309 &


shell> # bin/ mysql --port=3309 --socket=/tmp/ oracle_mysql .sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.31 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.








# Preconfiguration setup
shell> groupadd mariadb
shell> useradd -r -g mariadb mariadb

# Beginning of source-build specific instructions
shell> tar zxvf MariaDB -VERSION .tar.gz
shell> cd MariaDB-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/ mariadb -tmp "
# End of source-build specific instructions

I do not like the results
-- Installing: /usr/local/ mariadb-tmp /usr/local/mysql/
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/ mariadb -tmp
shell> mv usr/local/mysql/ ../ mariadb ;
shell> cd ../; # rm -Rf mariadb -tmp

# Postinstallation setup
shell> cd /usr/local/mariadb
shell> chown -R mariadb .
shell> chgrp -R mariadb .


#下的命令是可選的 
外殼> CP support-files/my-small.cnf的/ etc / CNF MariaDB的。

CNF殼> VI的/ etc / MariaDB的。

端口= 3308

插座= / tmp目錄/ MariaDB的襪子


shell> scripts/mysql_install_db --defaults-file=/etc/mariadb.cnf --basedir=/usr/local/ mariadb --skip-name-resolve --datadir=/var/lib/mariadb --user= mariadb
shell> chown -R mariadb /var/lib/ mariadb /*

shell> # bin/mysqld_safe --defaults-file=/etc/ mariadb .cnf --user= mariadb --datadir=/var/lib/mariadb / --port=3308 &


shell> # bin/ mysql --port=3308 --socket=/tmp/ mariadb .sock
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 5.5.30-MariaDB Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.






# Preconfiguration setup
shell> groupadd percona
shell> useradd -r -g percona percona

# Beginning of source-build specific instructions
shell> tar zxvf Percona-Server -VERSION .tar.gz
shell> cd Percona-Server-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR=" /usr/local/percona-tmp "
# End of source-build specific instructions

I do not like the results

-- Installing: /usr/local/percona-tmp/usr/local/mysql/

If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/percona-tmp

shell> mv usr/local/mysql/ ../percona ;

shell> cd ../; # rm -Rf percona-tmp




# Next command is optional
shell> cp support-files/my-small.cnf /etc/ percona .cnf

shell> vi /etc/ percona .cnf

port = 3307

socket = /tmp/percona.sock




#安裝後的設置
外殼> CD的/ usr /本地/ Percona的 
殼>喬敦-R Percona的。
外殼> chgrp命令ŗ的Percona的。

外殼腳本/ mysql_install_db的 -默認文件為/ etc / percona.cnf - BASEDIR = / USR /本地/ Percona的-跳過名稱決心的- DATADIR =的/ var / lib中/ Percona的-用戶= Percona的
外殼>喬敦-R Percona的的/ var / lib / Percona的中/ *
外殼>#斌/ mysqld_safe的-默認文件為/ etc / percona.cnf -用戶= Percona的- DATADIR =的/ var / lib / Percona的中/ -端口= 3307  



外殼>#斌/ MySQL的-端口= 3307 -插座= / TMP / percona.sock中
歡迎到MySQL監視器。 命令結束或\ G。
你的MySQL連接ID為1
服務器版本:30年5月5日來源分佈

版權所有(c)2000年,2013年,甲骨文公司及/或其附屬公司。 保留所有權利。




現在我有機會向所有3種口味或MySQL。
為了方便客戶端訪問,我加入這個我bashrc文件:

  • 別名Percona的='/ USR /本地/ Percona的/ bin中/ MySQL的 - 端口= 3307 - 插座= / tmp / percona.sock中'
  • 別名oracle_mysql ='/ USR /當地/ oracle_mysql / BIN / MySQL的 - 端口= 3309 - 插座= / TMP / oracle_mysql.sock中'
  • 別名瑪麗亞='/ USR /本地/ MariaDB的/ bin中/ MySQL的 - 端口= 3308 - 插座= / TMP / mariadb.sock的的'



2013年4月30日星期二

貿易的“工具”

Original Post: http://anothermysqldba.blogspot.com/2013/04/tools-of-trade.html

我想通它可能是值得的頂級貿易工具,大家都用創建列表。 
首先,這是說感謝大家誰幫助創建這些工具。 
其次,它是為了讓別人誰不使用這些看到和了解這些可以用,為什麼。 

  • MySQL命令行客戶端 。
    • 這是一個給定的,但我知道這是最好的進入到MySQL。
    • MYSQL-P - 提示=“\ U @ \ H [\ d〕> \ _大師>”
  • Xtrabackup
    • 。/ xtrabackup - 默認的文件為/ etc / my.cnf文件 - 備份 - 統計 - 目標-DIR =〜/備份/ - 準備 - 出口 - 用戶=根 - innodb_data_home_dir =的/ var / lib目錄/ / MYSQL - innodb_data_file_path中的/ var / lib中/ MySQL的/
  • mysqlbinlog的
  • mysqltuner
    • 一個很好的總體看法到什麼,你可能會與您的數據庫。
  • Percona的工具包
    • exampes:
      • PT查詢摘要
        • 例如:PT查詢摘要 - 問通的/ var / lib中/ mysql /下的mysql-slow.log
      • PT-表校驗
        • 例如:PT-表校驗 - 問通
      • PT-表同步
        • 例如:PT-表同步 - 檢查觸發器 - 問通 - 檢查觸發器 - 執行 - 打印
      • PT-顯示贈款
        • PT秀補助 - 問通
  • MySQL的實用工具
    • exampes:
      • 蟒蛇mysqldiskusage - 服務器=根:密碼@本地
      • 蟒蛇mysqlindexcheck - 服務器=根:密碼@本地ps_helper.schema_index_statistics
      • 蟒蛇mysqlprocgrep - 服務器=根:密碼@本地 - 匹配用戶=根
  • planet.mysql.com
    • 這可能使一些人的問題,但... 知識就是力量。 這是最好的位置,了解MySQL的。
    • 如果您有採訪到的MySQL DBA候選人,挑選一些常見的活躍作者,並詢問他們是否知道那個人是誰。 它可以讓你明白,如果他們研究的最新趨勢和圍繞MySQL的信息,或者是僅僅滿足於他們的經驗。
  • MySQL的沙盒
    • MYTOP
      • 靈感來自於頂部,但重點在MySQL
    • https://tools.percona.com/
      • 這也可能使一些問題。 我上手優於默認安裝的版本,創建一個my.cnf中的人,因為它是一個快速和良好的方式。 如果不出意外,你可以用它只是來比較,你覺得它應該是什麼。
    您可能會注意到,我不是一個球迷的GUI。 沒有違法那些GUI工具,但如果你不需要它為什麼GUI。 但是,這只是我的意見,這裡是一個GUI工具清單只是要公平。 畢竟架構圖是有益的,容易與MySQL工作台 。

    其他工具進行審查: