1. 程式人生 > >配置 MySQL 服務器容器

配置 MySQL 服務器容器

pda sha contain oot 主機 導出 城市 使用 address

本文介紹在單一宿主機上如何配置自動備份。建議使用兩個容器,其中一個容器作為 MySQL 的服務器,用來處理數據;另一個容器用於自動備份。這樣保證隔離,避免備份的容器影響到 MySQL Server 的可用性。

配置 MySQL 服務器容器

建立容器:

docker run --name mysql-a \
-p 3306:3306 \
-v /zc/mysql/datadir-a:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=‘123456‘ -d mysql:latest

進入容器的 bash :

docker exec -it mysql-a bash
1
設置時區:

tzselect
1
輸入tzselect命令後,根據屏幕提示輸入大洲、城市。因為中國的東八區時間,所以選擇 Asia/Hong Kong。做好選擇後,輸入命令:

cp /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime
1
來持久化你的設置。

進入 /etc/mysql/conf.d

cd /etc/mysql/conf.d
1
在這個目錄下,可以創建一個新的文件。文件名可隨便起,只要保證後綴名是 .cnf 即可。因為 MySQL 的官方鏡像默認沒有帶 vim 編輯器,所以建議使用 cat 命令來編寫配置文件:

cat >zhangchao.cnf <<EOF
[mysqldump]
user=root
password=‘123456‘
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=www.tianzunyule178.com 300
max_connect_errors=www.tygj178.com 200
EOF
輸入 exit 來退出容器,使用 docker stop mysql-a 和 docker start mysql-a 重啟容器即可。

配置 MySQL 備份容器

建立容器:

docker run --name mysql-b \
-v /zc/mysql/backup-a:/zc/mysql/backup \
-e MYSQL_ROOT_PASSWORD=‘123456‘ -d mysql:latest

查看虛擬網絡,其中 bridge 是 Docker 默認使用的虛擬網絡:

docker network inspect bridge
1
在返回的結果中,找到 Containers 部分。內容如下:

"Containers": {
"asdf2334a": {
"Name": "mysql-a"
"EndpointID": "sadfas234"
"MacAddress": "...."
"IPv4Address": "192.168.0.2"
Containers 列出了所有使用 bridge 網絡的容器。因為我給 MySQL 服務器容器起名為 mysql-a,所以我查看Name 為 mysql-a 的配置。IPv4Address表示容器mysql-a的虛擬IP是 192.168.0.2 。記錄下這個IP 。

進入容器的 bash :

docker exec -it mysql-b bash
1
更改時區,使用 tzselect 命令和cp命令,具體步驟與上面的mysql-a一樣。

安裝VIM和CRON定時任務:

apt-get update && apt-get www.dfgjpt.com/ install vim
apt-get update && apt-get www.zhongdayule.cn/ install cron

生成一個shell腳本文件來進行備份。

cat >/zc/mysql/backup.sh <<EOF
#!/bin/sh
zcDATE=\$(date +%Y%m%d)
mkdir /zc/mysql/backup/\$zcDATE
mysqldump -h ‘192.168.0.2‘ -uroot -p‘123456‘ --databases db1 > /zc/mysql/backup/\$zcDATE/db1.sql
mysqldump -h ‘192.168.0.2‘ -uroot -p‘123456‘ --databases db2 > /zc/mysql/backup/\$zcDATE/db2.sql
EOF

MySQL上存在兩個數據庫,名稱分別是 db1 和 db2,利用這種方式在硬盤上備份數據。-h表示遠程的服務器IP。-u 和 -p 分別是遠程服務器的用戶名和密碼。這裏不建議使用 mysqldump 的 –all-database 選項。因為該選項會把遠程MySQL裏的系統數據庫也備份下來,包括 root 用戶的密碼等內容。如果你要把導出的內容導入到別的機器上,這些系統設置(比如用戶名和密碼)會覆蓋你的機器上原來的設置。

設置定時任務的啟動時間:

crontab -e
1
在打開的文件中輸入一下內容:

0 23 * * * sh /zc/mysql/backup.sh
1
系統默認使用VIM打開這個文件。修改完後用 wq 命令保存文件。
啟動定時任務的服務:

service cron start
1!

配置 MySQL 服務器容器