Linux下備份docker容器的mysql數據庫+定時任務


安裝Docker

yum -y install docker

啟動docker

systemctl start docker

開機啟動

systemctl enable docker

拉取MySQL鏡像

docker pull mysql:5.7

創建MySQL容器

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=數據庫密碼 mysql:5.7

進入MySQL容器

docker exec -it mysql /bin/bash

登錄mysql,授權允許遠程登錄

第一步:mysql -u root -p
第二步:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '數據庫密碼' WITH GRANT OPTION;

mkdir /etc/mysql

cd /etc/mysql

vim mysql.cnf

填入以下內容:

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
datadir         = /var/lib/mysql

server-id              = 100
log_bin                = /var/log/mysql/mysql-bin
binlog-format          = ROW
expire_logs_days        = 7
max_binlog_size         = 500M

character-set-server = utf8
collation-server = utf8_general_ci



[client]
default-character-set=utf8

[mysqldump]
quick
quote-names
max_allowed_packet      = 1024M

mkdir mysql.conf.d

cd mysql.conf.d

vim mysqld.cnf

再次填入以下內容:

# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id              = 1000
log_bin                = /var/log/mysql/mysql-bin
binlog-format          = ROW
expire_logs_days        = 7
max_binlog_size         = 500M

數據備份

1、shell 命令執行或者shell腳本
docker exec -ti mysql mysqldump -uroot -p123456 -A > /home/mysql/mysql`date +%Y%m%d`.sql
2、crontab 調用shell 命令執行或者shell腳本 取消- ti
docker exec
-ti mysql mysqldump -uroot -p123456 -A > /home/mysql/mysql`date +%Y%m%d`.sql

執行shell腳本得把 -ti 去掉

shell腳本內容:

 

#執行備份  mysq;:你的mysql容器名字   
docker exec  mysql mysqldump -u數據庫名 -p數據庫密碼 指定數據庫表 > /home/mysql/自定義名字_$(date +%Y%m%d_%H%M%S).sql

#只保留七天內的數據
find /home/mysql -name "同上的自定義名字_*" -mtime +7 -exec rm -rf {} \;

 

 

 

安裝crontab

 

yum -y install vixie-cron
yum -y install crontabs

 

增加定時任務

 

crontab -e

 

1 0 * * * sh /shell/backups.sh 每天凌晨12點01分執行

  1 0 * * * /home/mysql/backups/backups.sh 每天凌晨12點01分執行
  */1 * * * * /home/mysql/backups/backups.sh //每隔一分鍾執行一次

 

假設編寫完了一個.sh,沒有可執行權限x肯定是無法運行的

chmod +x **.sh

然后就可以執行了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM