1. 程式人生 > >MySQL Docker 單一機器上如何配置自動備份

MySQL Docker 單一機器上如何配置自動備份

本文介紹在單一宿主機上如何配置自動備份。建議使用兩個容器,其中一個容器作為 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

設定時區:

tzselect

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

cp /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime

來持久化你的設定。

進入 /etc/mysql/conf.d

cd /etc/mysql/conf.d

在這個目錄下,可以建立一個新的檔案。檔名可隨便起,只要保證字尾名是 .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=300 max_connect_errors=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

在返回的結果中,找到 Containers 部分。內容如下:

"Containers": {
  "asdf2334a": {
    "Name": "mysql-a"
    "EndpointID": "sadfas234"
    "MacAddress": "...."
    "IPv4Address": "192.168.0.2"
    "IPv6Address": ""
  }

}

Containers 列出了所有使用 bridge 網路的容器。因為我給 MySQL 伺服器容器起名為 mysql-a,所以我檢視Name 為 mysql-a 的配置。IPv4Address表示容器mysql-a的虛擬IP是 192.168.0.2 。記錄下這個IP 。

進入容器的 bash :

docker exec -it mysql-b bash

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

安裝VIM和CRON定時任務:

apt-get update && apt-get install vim
apt-get update && apt-get 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

在開啟的檔案中輸入一下內容:

0 23 * * * sh /zc/mysql/backup.sh

系統預設使用VIM開啟這個檔案。修改完後用 wq 命令儲存檔案。
啟動定時任務的服務:

service cron start

然後退出容器即可。

相關推薦

MySQL Docker 單一機器如何配置自動備份

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

git 在一臺機器配置多個賬戶

rac ssh xxxxxx pla 必須 account ack entity 設置 前提: 必須知道怎樣配置git賬戶,請參考git官方教程:https://help.github.com/articles/generating-ssh-keys 這個教程能教你怎

Confluence 6 配置自動備份

custom embedded edit jobs cfg manual location RM att 希望配置 Confluence 備份:進入 > 基本配置(General Configuration) > 備份管理(Backup administrat

Co. - Microsoft - Windows - 通過任務計劃,備份本地MySQL,數據傳Linux備份服務器

ffffff ftp 顯示 open mil pan -c -s linu 需求 客戶為Windows系統,安裝MySQL,需要每日備份數據庫到指定目錄,並且上傳到公司的備份服務器(Linux)。 1.使用mysqldump備份MySQL數據庫,使用FTP上傳到阿裏雲L

在不同的機器配置secondarynamenode

只需要修改namenode那臺主機的配置檔案即可: 修改hdfs-site.xml: <configuration> <property>     <name>dfs.replication</name> &nbs

VMware虛擬機器配置nginx後,本機無法訪問問題(轉載)

  轉自:http://www.server110.com/nginx/201407/10794.html 把nginx裝在CentOS上,用本機訪問虛擬機器的時候卻出現了不能訪問的問題,查了資料以後,原來是防火牆的問題。具體情況如下:防火牆可以ping通虛擬機器,虛擬機器也可以ping通防火牆

多臺Linux機器配置Jenkins任務

建立資料夾 mkdir jenkins 下載jenkins.war  cd jenkins && wget http://mirrors.jenkins.io/war/latest/jenkins.war 用nohup在後臺執行jenkins n

React-native Android 在Jenkins配置自動打包方案

使用jenkins來實現自動化構建,可以簡化開發測試的流程,原來debug包都不會做混淆,現在用了jenkins會自動的打混淆包,除了環境不一樣,其他配置debug和release包都一樣,這樣就可以避免程式碼混淆帶來的問題,早日發現早日治療。推薦大家在廢棄的

docker在mac配置並建立後臺容器

1. 首先需要去官網上下載並安裝docker  https://docs.docker.com/mac/step_one/ 步驟很簡單。 2. 啟動docker  啟動docker有多種方法,可以在l

powershell 學習------hpyer-v 虛擬機器優化(自動備份,壓縮磁碟)

Get-WmiObject -NameSpace root\virtualization msVM_storagejob | ft jobStatus, description, percentcomplete -auto  #compress status檢視後臺壓縮情況 (ads

虛擬機器配置靜態ip(NAT模式)

1 關閉window7防火牆 開啟控制面板 選擇Windows防火牆 選擇左邊開啟或者關閉防火牆,如下圖關閉防火牆 2 關閉CentOS防火牆 檢視防火牆: service iptables s

CentOS6.5 crontab每天自動備份mysql數據庫

execute man rest 需要 查找 的人 sat nbsp efi 步驟: 1. sudo vi /etc/crontab #編輯crontab任務 2.輸入01 12 * * * root /usr/local/mysql/backup/backup.sh &

LINUX——關於mysql中較詳細的,數據庫的主從配置自動備份以及讀寫分離的使用

rep lock ast name ocs lib .cn ket ger 1.主從簡介數據在企業中是非常重要的一部分,存儲數據的數據庫多種多用樣,但卻都存在著一種隱患·數據庫數據丟失·數據庫訪問人數較多時,一臺數據庫無法保證服務質量2.主從的作用·實時災備,用於故障切換·

Win7下配置MySql定時自動備份

最近遇到了需要定時備份MySQL資料庫的需求,解決方法是採用批處理指令碼配合windows計劃任務實現每天自動備份,此處記錄一下配置過程。 先貼一下使用到的bat指令碼: @echo off   set "Ymd=%date:~,4%%date:~5,2%%da

Linux-定時指令碼將一臺伺服器mysql資料庫自動備份到另一臺伺服器的資料庫中

有兩臺伺服器,一臺正式伺服器A,一臺測試伺服器B,現需要將正式伺服器A中的資料庫每天備份到測試伺服器B,提高資料庫的容災性以及防止資料庫在測試中出現錯誤。1.從正式伺服器A中匯出需要備份的資料庫使用mysqldump指令匯出資料庫檔案/usr/sbin/mysqldump -

CentOS6.5 crontab每天自動備份mysql資料庫

步驟: 1. sudo vi /etc/crontab  #編輯crontab任務 2.輸入01 12 * * * root /usr/local/mysql/backup/backup.sh >> /usr/local/mysql/backup/error.l

centos下自動備份mysql,將備份檔案轉到其他機器備份

1、首先建立備份目錄和備份指令碼檔案,這就不多說了 2、備份交本檔案如下: #!/bin/bash now=$(date +"%Y%m%d") #獲取當前日期 days=5 bk_dr=/ #備份目錄的路徑 find $bk_dr/備份檔名稱  -mtime +$days

Linux自動備份MySQL

在資料庫表丟失或損壞的情況下,備份你的資料庫是很重要的。如果發生系統崩潰,你肯定想能夠將你的表儘可能丟失最少的資料恢復到崩潰發生時的狀態。本文主要對MyISAM表做備份恢復。 備份策略一:直接拷貝資料庫檔案 備份策略二:使用mysqldump備份資料庫(一個星期全備一次,每

使用阿里雲資源在centos7配置docker安裝gitlab、mysql、jira

Docker要求64位的系統且核心版本至少為3.10 一、安裝docker 1、新增yum源。 yum install epel-release –y yum clean all yum list 2、安裝並執行Docker。 yum install doc

(轉)linux自動備份oracle數據庫並傳到備份服務器 腳本實現

oralce 查看 cal .com 中間 term star 開始 library 實際項目中,備份數據是不可缺少的一步,完成數據的自動備份減少個人的工作量,是我們的目標。之前很少寫過腳本,不過這些簡單的操作還是可以做到的!話不多說,開始具體介紹:oracle版本:10.