此测试是在centos7 mini 环境下进行的
一种宿主机安装一种docker方式安装部署(包含离线安装docker服务)
一、 宿主机安装mysql
删除原有得mariadb
rpm -qa|grep mariadb --> 查看安装得mysql
rpm -e --nodeps mariadb-libs --> 卸载安装得mysql
创建mysql文件夹
根据自己需要存储文件得目录进行创建
mkdir -p /mysql/mysql-data
mkdir -p /mysql/mysql-bin
cd /mysql
通过wget下载mysql8.0压缩包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar
解压安装mysql
tar -xvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar
[必须安装]
rpm -ivh mysql-community-common-8.0.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.27-1.el7.x86_64.rpm
--!> 出现安装net-tools 执行 wget http://mirrors.163.com/centos/7/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm, rpm -Uvh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
--!> 如果无GCC 需执行, wget http://mirrors.163.com/centos/7/os/x86_64/Packages/gcc-4.8.5-44.el7.x86_64.rpm, rpm -ivh gcc-4.8.5-44.el7.x86_64.rpm
--!> 出现perl 错误可以使用yum install -y perl-Module-Install.noarch `如果出现这个错误, 建议使用docker安装部署`
[非必须安装] --> 暂未验证
rpm -ivh mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.16-2.el7.x86_64.rpm
如需更改mysql存储位置和忽略大小写设置需要在初始化前执行
vi /etc/my.cnf
[mysqld]
datadir=/mysql/mysql-data
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 配置binlog
log-bin=/mysql/mysql-bin/mysql-bin
binlog-format=ROW
server_id=1
# 忽略大小写
lower_case_table_names=1
# 允许最大连接数
max_connections=999
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#缓存池
innodb_buffer_pool_size=4G
# 脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘
# 25%~50%
innodb_max_dirty_pages_pct=30
# 后台进程最大IO性能指标
# 默认200,如果SSD,调整为5000~20000
innodb_io_capacity=200
增加文件归属
chown -R mysql:mysql /mysql
关闭权限认证
setenforce 0
查看服务状态
systemctl status mysqld
停止服务
service mysqld stop
初始化服务 --> 指定mysql用户执行此命令
sudo -u mysql mysqld --initialize --console
启动服务
systemctl start mysqld
查看临时密码
cat /var/log/mysqld.log |grep root
使用临时密码登陆数据库
mysql -u root -p
修改临时密码
alter USER 'root'@'localhost' IDENTIFIED BY '123456';
授权远程链接
show databases;
use mysql;
select host, user, authentication_string, plugin from user;
update user set host = "%" where user='root';
flush privileges;
如果无法链接需要关闭防火墙
systemctl stop firewalld.service
如果没有perl, 需要安装这些环境
http://mirrors.163.com/centos/7/os/x86_64/Packages/
已安装:
perl-Module-Install.noarch 0:1.06-4.el7
作为依赖被安装:
gdbm-devel.x86_64 0:1.10-8.el7 libdb-devel.x86_64 0:5.3.21-25.el7 mailcap.noarch 0:2.1.41-2.el7
perl.x86_64 4:5.16.3-299.el7_9 perl-Algorithm-Diff.noarch 0:1.1902-17.el7 perl-Archive-Extract.noarch 1:0.68-3.el7
perl-Archive-Zip.noarch 0:1.30-11.el7 perl-Business-ISBN.noarch 0:2.06-2.el7 perl-Business-ISBN-Data.noarch 0:20120719.001-2.el7
perl-CPAN.noarch 0:1.9800-299.el7_9 perl-CPAN-Meta.noarch 0:2.120921-5.el7 perl-CPAN-Meta-Requirements.noarch 0:2.122-7.el7
perl-CPAN-Meta-YAML.noarch 0:0.008-14.el7 perl-CPANPLUS.noarch 0:0.91.38-4.el7 perl-Carp.noarch 0:1.26-244.el7
perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-SQLite.x86_64 0:1.39-3.el7
perl-DBI.x86_64 0:1.627-4.el7 perl-DBIx-Simple.noarch 0:1.35-7.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7
perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD5.x86_64 0:2.52-3.el7 perl-Digest-SHA.x86_64 1:5.85-4.el7
perl-Digest-SHA1.x86_64 0:2.13-9.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Encode-Locale.noarch 0:1.03-5.el7
perl-Exporter.noarch 0:5.68-3.el7 perl-ExtUtils-CBuilder.noarch 1:0.28.2.6-299.el7_9 perl-ExtUtils-Install.noarch 0:1.58-299.el7_9
perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7 perl-ExtUtils-Manifest.noarch 0:1.61-244.el7 perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7
perl-File-Fetch.noarch 0:0.42-2.el7 perl-File-Listing.noarch 0:6.04-7.el7 perl-File-Path.noarch 0:2.09-2.el7
perl-File-Remove.noarch 0:1.52-6.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7
perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTML-Parser.x86_64 0:3.71-4.el7 perl-HTML-Tagset.noarch 0:3.20-15.el7
perl-HTTP-Cookies.noarch 0:6.01-5.el7 perl-HTTP-Daemon.noarch 0:6.01-8.el7 perl-HTTP-Date.noarch 0:6.02-8.el7
perl-HTTP-Message.noarch 0:6.06-6.el7 perl-HTTP-Negotiate.noarch 0:6.01-5.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7
perl-IO-Compress.noarch 0:2.061-2.el7 perl-IO-HTML.noarch 0:1.00-2.el7 perl-IO-Socket-IP.noarch 0:0.21-5.el7
perl-IO-Socket-SSL.noarch 0:1.94-7.el7 perl-IPC-Cmd.noarch 1:0.80-4.el7 perl-JSON-PP.noarch 0:2.27202-2.el7
perl-LWP-MediaTypes.noarch 0:6.02-2.el7 perl-Locale-Maketext.noarch 0:1.23-3.el7 perl-Locale-Maketext-Simple.noarch 1:0.21-299.el7_9
perl-Log-Message.noarch 1:0.08-3.el7 perl-Log-Message-Simple.noarch 0:0.10-2.el7 perl-Module-Build.noarch 2:0.40.05-2.el7
perl-Module-CoreList.noarch 1:2.76.02-299.el7_9 perl-Module-Load.noarch 1:0.24-3.el7 perl-Module-Load-Conditional.noarch 0:0.54-3.el7
perl-Module-Loaded.noarch 1:0.08-299.el7_9 perl-Module-Metadata.noarch 0:1.000018-2.el7 perl-Module-Pluggable.noarch 1:4.8-3.el7
perl-Module-ScanDeps.noarch 0:1.10-3.el7 perl-Module-Signature.noarch 0:0.73-2.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
perl-Net-Daemon.noarch 0:0.48-5.el7 perl-Net-HTTP.noarch 0:6.06-2.el7 perl-Net-LibIDN.x86_64 0:0.12-15.el7
perl-Net-SSLeay.x86_64 0:1.55-6.el7 perl-Object-Accessor.noarch 1:0.42-299.el7_9 perl-PAR-Dist.noarch 0:0.49-2.el7
perl-Package-Constants.noarch 1:0.02-299.el7_9 perl-Params-Check.noarch 1:0.38-2.el7 perl-Parse-CPAN-Meta.noarch 1:1.4404-5.el7
perl-PathTools.x86_64 0:3.40-5.el7 perl-Perl-OSType.noarch 0:1.003-3.el7 perl-PlRPC.noarch 0:0.2020-14.el7
perl-Pod-Escapes.noarch 1:1.04-299.el7_9 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7
perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-5.el7
perl-Storable.x86_64 0:2.45-3.el7 perl-Term-UI.noarch 0:0.36-2.el7 perl-Test-Harness.noarch 0:3.28-3.el7
perl-Text-Diff.noarch 0:1.41-5.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7
perl-Time-Local.noarch 0:1.2300-2.el7 perl-TimeDate.noarch 1:2.30-2.el7 perl-URI.noarch 0:1.60-9.el7
perl-WWW-RobotRules.noarch 0:6.02-5.el7 perl-YAML-Tiny.noarch 0:1.51-6.el7 perl-constant.noarch 0:1.27-2.el7
perl-devel.x86_64 4:5.16.3-299.el7_9 perl-libs.x86_64 4:5.16.3-299.el7_9 perl-libwww-perl.noarch 0:6.05-2.el7
perl-local-lib.noarch 0:1.008010-4.el7 perl-macros.x86_64 4:5.16.3-299.el7_9 perl-parent.noarch 1:0.225-244.el7
perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7
perl-version.x86_64 3:0.99.07-6.el7 pyparsing.noarch 0:1.5.6-9.el7 systemtap-sdt-devel.x86_64 0:4.0-13.el7
二、使用docker部署mysql, 离线安装docker及mysql包
离线安装docker原文档https://www.cnblogs.com/helf/p/12889955.html
准备工作
- 找一台能联网并安装过docker得服务器
- 执行下列命令
docker pull mysql:8.0
docker save -o mysql-8.tar mysq:8.0
- 把tar包存放起来下面会用到
创建docker文件夹并进入
mkdir /docker
cd docker
下载docker的安装文件
选择docker-18.06.3-ce.tgz文件
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz
解压
tar -zxvf docker-18.06.3-ce.tgz
将解压出来的docker文件复制到 /usr/bin/ 目录下
cp docker/* /usr/bin/
进入/etc/systemd/system/目录,并创建docker.service文件
cd /etc/systemd/system/
touch docker.service
打开docker.service文件,将以下内容复制
vim docker.service
注意: --insecure-registry=192.168.200.128 此处改为你自己服务器ip
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=192.168.200.128
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
给docker.service文件添加执行权限
chmod 777 /etc/systemd/system/docker.service
重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
启动
systemctl start docker
设置开机启动
systemctl enable docker.service
查看docker状态
systemctl status docker
启动docker命令 名字
如果您想查看可用选项的完整列表,只需运行:
docker run -it --rm mysql:tag --verbose --help
上传镜像至docker
把上面第四步骤存放起来得tar包, 发送至离线得服务器上
docker load -i mysql-8.0.tar
mkdir -p /my/custom
mkdir -p /my/own/datadir
cp my.cnf /my/custom # 下面会贴上我得my.cnf文件内容
chown mysql:mysql -R /my/
通过此命令即可正常访问33066端口服务器
如果无法访问检查防火墙
docker run --name some-mysql -p 33066:3306 -v /my/custom/:/etc/mysql/conf.d/ -v /my/own/datadir:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=my-secret-pw --restart=always -d mysql:8
my.cnf配置
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# 忽略大小写
lower_case_table_names=1
# 允许最大连接数
max_connections=999
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#缓存池
innodb_buffer_pool_size=4G
# 脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘
# 25%~50%
innodb_max_dirty_pages_pct=30
# 后台进程最大IO性能指标
# 默认200,如果SSD,调整为5000~20000
innodb_io_capacity=200
# Custom config should go here
!includedir /etc/mysql/conf.d/