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