程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 用Docker運行PerconaServer

用Docker運行PerconaServer

編輯:MySQL綜合教程

用Docker運行PerconaServer


用Docker運行Percona Server

Percona官方提供了一個Percona Docker鏡像,可以運行Percona Server MySQL和Percona Server for MongoDB。
Docker官方也提供了Percona鏡像,具體見: Percona,但是這個鏡像不是Percona官方提供的。
而在Percona官方提供的鏡像中,針對每種存儲引擎的鏡像都有,具體見:
https://hub.docker.com/r/percona/
但是,目前Percona官方提供的鏡像剛剛開始,還處於實驗性階段。

1、運行Percona Server/MySQL鏡像

docker run --name container-name -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag

container-name是你為容器賦予的名字
secret是Percona服務器root賬戶的密碼
tag是你想指定的Percona版本,目前有4個選擇:latest、5.6、5.6.28、5.6.27。

要從另一個Docker容器的應用程序連接到Percona Server容器:
(假定Percona使用默認的3306端口)

docker run --name app-container-name --link container-name -d app-that-uses-mysql

從MySQL命令行客戶端連接到Percona Server容器:
(下面的命令會從另一個Docker容器中運行MySQL命令行客戶端,再連接到Percona Server容器)

docker run -it --link container-name --rm percona/percona-server:tag mysql -h container-name -P 3306 -uroot -psecret'

2、運行Percona Server/MongoDB鏡像

要改變鏡像的存儲引擎很簡單,比如換成RocksDB引擎,可以這樣:

docker run --name psmdbrocks -d percona/percona-server-mongodb:latest --storageEngine=RocksDB

或者是換成PerconaFT存儲引擎:

docker run --name psmdbperconaft -d percona/percona-server-mongodb:latest --storageEngine=PerconaFT

3、環境變量

在啟動Percona Server容器時,可以通過docker run命令行傳遞一些環境變量來調整實例的運行配置。要注意,如果容器已經包含了數據庫數據目錄的話,那麼這些環境變量會不起作用,也即任何預先存在於鏡像中的數據庫會使得環境變量無效。主要使用的環境變量有下面幾個:

1)MYSQL_ROOT_PASSWORD
它表示Percona服務器root超級用戶的密碼。

2)MYSQL_RANDOM_ROOT_PASSWORD
如果這個值設置為yes,表示Percona服務器root超級用戶的密碼為隨機產生,且密碼會輸出到容器的控制台,可以使用命令docker logs container-name來找到密碼。

3)MYSQL_ONETIME_PASSWORD
這是可選的環境變量,如果設置為yes,表示Percona服務器root超級用戶的密碼是一次性的,會過期。當登陸Percona後,必須修改密碼。這個特性必須在5.6及以後版本才支持。

4)MYSQL_DATABASE
這是可選的環境變量,它表示在容器啟動時可以創建一個指定名字的數據庫。如果後面的user/password都設置了,那麼這個user將擁有對這個指定數據庫的超級權限(等同於GRANT ALL命令)。
注意:這種方式不應該用於創建root賬戶。

5)MYSQL_ALLOW_EMPTY_PASSWORD
如果這個值設置為yes,表示Percona服務器root超級用戶的密碼可以為空。
不推薦使用。

4、Percona容器的安全

在很多場景下,使用MYSQL_ROOT_PASSWORD環境變量來指定root超級用戶的密碼是不安全的。所以安全的做法應該這樣:使用MYSQL_RANDOM_ROOT_PASSWORD隨機密碼環境變量。如果想讓實例更加安全,還可以使用MYSQL_ONETIME_PASSWORD一次性密碼環境變量。

5、數據存儲

運行在Docker容器的應用程序要存儲數據有兩種方法:

1)讓Docker管理數據庫數據的存儲
通過把數據庫文件寫入主機系統磁盤(使用內部的卷管理),實現讓Docker管理數據庫數據的存儲。這種方法,devicemapper、aufs、overlayfs等對性能有很大影響。

2)在托管主機創建數據目錄(在容器外部)
在托管主機上也即容器外部創建數據目錄,且通過掛載使得此目錄對容器可見。這種方法使得數據庫文件易於被主機系統的工具或應用訪問到。這種方法用於必須確保數據目錄存在,且訪問權限和其它安全機制都要設置正確。通常可以這樣:

在主機系統適合的卷上創建數據目錄,比如/local/datadir 啟動容器:

.

docker run --name container-name -v /local/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag

-v參數表示從主機系統掛載/local/datadir目錄到容器內的/var/lib/mysql目錄,它是MySQL寫數據文件的位置。

還要注意主機系統的目錄是否對容器有寫權限,SELinux要啟用這個權限,執行:

chcon -Rt svirt_sandbox_file_t /local/datadir

如果啟動MySQL容器實例使用已有的數據目錄(即數據庫已存在),那麼在執行docker run命令時,MYSQL_ROOT_PASSWORD變量應該省略。

6、端口轉發

Docker允許在容器內映射端口到主機系統的端口,使用-p選項。

docker run --name container-name `-p 6603:3306` -d percona/percona-server
mysql -h docker_host_ip -P 6603

這樣就可以使用主機的6603端口連接到MySQL容器了。

7、傳遞參數給MySQL容器

還可以在docker run命令中傳遞任意參數給MySQL容器。

docker run --name my-container-name -d percona/percona-server --option1=value --option2=value

option1和option2在容器啟動時之間傳遞到Percona容器。比如想讓容器使用UTF-8作為字符集和collation的默認設置,可以這樣:

docker run --name container-name -d  percona/percona-server --character-set-server=utf8 --collation-server=utf8_general_ci

8、使用自定義的MySQL配置文件

MySQL容器的啟動配置文件是/var/lib/mysql/my.cnf,如果想自定義這個配置文件,可以修改它。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved