1、安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce-19.03.4
给docker 配置
`usermod -G docker root`
systemctl enable docker.service
systemctl start docker.service
touch /etc/docker/daemon.json
echo -e "
{
\"registry-mirrors\": [\"http://harbor.eslink.net.cn\"],
\"insecure-registries\": [\"harbor.eslink.net.cn\",\"registry.cn-shenzhen.aliyuncs.com\"],
\"max-concurrent-downloads\": 10,
\"log-driver\": \"json-file\",
\"log-opts\": {\"max-size\":\"300m\",\"max-file\":\"1\"}
} " >>/etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker.service
2、安装mysql
删除自带的mysql
service mysql stop
EXISTS_RPMS=`rpm -qa | grep -i mysql`
echo ${EXISTS_RPMS}
for RPM in ${EXISTS_RPMS}
do
rpm -e --nodeps ${RPM}
done
删除残留文件
rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
rm -rf /etc/my.cnf
rm -fr /var/lib/mysql
拉取镜像
docker pull mysql:5.7
docker images
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
-------------------------------------------------
创建容器
把容器里的目录挂在在linux 的目录下
docker run -d --name mysql -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -v /etc/mysql:/etc/mysql/mysql.conf.d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/log:/var/log/mysql mysql:5.7
docker ps -a
会看到失败
cd /home/mysql
修改log文件夹的用户和data相同
rm -rf /home/mysql/data/*
rm -rf /home/mysql/log/*
docker rm -f mysql
重新创建
docker run -d --name mysql -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -v /etc/mysql:/etc/mysql/mysql.conf.d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/log:/var/log/mysql mysql:5.7
docker ps
会看到成功了。
数据备份
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