docker安装部署mysql5.7通用标准

docker安装部署mysql5.7通用标准

创建MySQL映射文件夹

mkdir -p /data/mysql/{config,data,logs,data_backup}

创建后文件夹结构如下:

/data
└── mysql 
     ├── config
     ├── data
     ├── data_backup
     └── logs

创建my.cnf配置文件:

cat > /data/mysql/config/my.cnf << EOF
[mysql]
default-character-set=utf8mb4
[mysqld]
port = 3306
max_connections=10000
interactive_timeout=600
wait_timeout=600
skip-name-resolve
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

character-set-server=utf8mb4
lock_wait_timeout=1800
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=1024M

slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=5

#bin-log 配置开始
#server-id = 1
#log-bin=/var/log/mysql/mysql-bin
#log_warnings = 1
#binlog_format=MIXED
#expire-logs-days = 5
#max-binlog-size = 500M
#bin-log 配置结束

innodb_page_cleaners = 64
innodb_buffer_pool_size = 48912M
innodb_buffer_pool_instances = 64
innodb_write_io_threads=32
innodb_read_io_threads = 32
innodb_thread_concurrency = 32
myisam_use_mmap = ON
tmp_table_size = 128M
read_buffer_size = 1M
sort_buffer_size = 16M
join_buffer_size = 16M
query_cache_size = 25M
query_cache_limit = 8M
open-files-limit = 25600
EOF

 docker  MySQL启动命令:

docker run --name mysql \
--restart=always \
-v /data/mysql/config:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/data_backup:/var/lib/mysql_backup \
-v /etc/localtime:/etc/localtime \
-v /data/mysql/logs:/var/log/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=redrcd@123 \
-d 9.8.8.11:8281/mysql:5.7.36 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

命令相关说明:

定义使用镜像拉取地址:9.8.8.11:8281/mysql:5.7.36

docker run --name mysql  \   定义容器名称为MySQL
    --restart=always \     定义容器开机自动启动
    -v /data/mysql/config:/etc/mysql/conf.d \     定义MySQL配置文件存储挂载目录/data/mysql/config
    -v /data/mysql/data:/var/lib/mysql \   定义MySQL数据存储挂载目录/data/mysql/data
    -v /data/mysql/data_backup:/var/lib/mysql_backup \   定义MySQL数据导出存储挂载目录/data/mysql/data_backup
    -v /data/mysql/logs:/var/log/mysql \     定义MySQL日志存储挂载目录/data/mysql/data_backup
    -v /etc/localtime:/etc/localtime \   定义时间使用系统时间
    -p 3306:3306 \    定义服务监听使用端口
    -e MYSQL_ROOT_PASSWORD=redrcd@123  \   定义MySQL数据库的root密码
    -d  9.8.8.11:8281/mysql:5.7.36 \   定义拉去的MySQL数据库版本
    --character-set-server=utf8mb4  \   定义MySQL数据库默认字符集utf8mb4  
    --collation-server=utf8mb4_unicode_ci       定义MySQL数据库默认排序规则 utf8mb4_unicode_ci

开启远程连接

解决办法:

1.进入mysql容器
docker exec -it mysql bash
2. 使用root账号登录MySQL
mysql -uroot -pxxxxxx
3.使用mysql数据库
use mysql;
查看当前用户
select host,user from user;
4. 修改User表,将root用户更改为可以远程连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
5.权限刷新重载;
flush privileges; 

MySQL数据导入导出:

数据导入导出的目录:-v /data/mysql/data_backup:/var/lib/mysql_backup

-v /data/mysql/data_backup:/var/lib/mysql_backup

创建数据库转储(数据库导出)命令:

$ docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /data/mysql/data_backup/all-databases.sql

从转储文件恢复数据(数据库导入)命令:

$ docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /data/mysql/data_backup/all-databases.sql

官方参考文档:
https://hub.docker.com/_/mysql?tab=description&page=1&name=8

配置备份备份脚本设置:

拉取脚本并设置权限:

cd /data && wget http://10.10.38.20:88/shell/backup_peizhi_docker_data_mysql.sh && chmod +x backup_peizhi_docker_data_mysql.sh

设置定时任务:

crontab -e

00 02 * * 0 /data/backup_peizhi_docker_data_mysql.sh

运行脚本测试

/data/backup_peizhi_docker_data_mysql.sh

运行完成后data目录下会多了一个back_up的目录,具体目录结构如下:

/data
├── back_up    配置备份所在目录
│   └── 10.10.27.19      所在服务器IP
│        └── 2022-06-23   备份时间
│            └── mysql       备份服务名称(不备份log日志和data数据)
│                └── config   备份配置
└── mysql     服务映射配置文件目录位置
     ├── config    服务配置放在此目录
     ├── data       服务数据放在此目录
     ├── data_backup      服务数据备份导出存放在此目录
     └── logs        服务运行日志放在此目录

版权声明:
作者:WaterBear
链接:https://l-t.top/2271.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录