【docker搭建Mysql单机】

docker搭建Mysql单机

数据库其实不建议容器来处理,主要原因是底层磁盘管理效率。
使用容器后,需要考虑底层存储、网络以及配置的持久化。

1. 拉取镜像并创建目录

docker pull mysql:8.0.20 &&
mkdir -p /home/mysql/data &&
mkdir -p /home/mysql/conf &&
mkdir -p /home/mysql/logs

2. 修改配置文件

2.1 首先将默认配置文件拷贝到宿主机上

docker run -d --net=host --name mysql -e MYSQL_ROOT_PASSWORD=Test-1234 mysql:8.0.20 &&
docker cp mysql:/etc/mysql/my.cnf /home/mysql/conf/mysqld.cnf &&
docker cp mysql:/etc/mysql/conf.d/mysql.cnf /home/mysql/conf/mysql.cnf &&
docker rm -f mysql

2.2 然后编辑配置文件

vi /home/mysql/conf/mysqld.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0

lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_bin

#需要修改为合适的值(推荐设置为服务器内存的75%左右)
innodb_buffer_pool_size = 4G

#下面开启binlog,做数据库同步时必备
log-bin = master-bin
log-bin-index = master-bin.index
binlog-format = ROW
server-id = 1

#设置binlog的保存时间,如果磁盘充足,可以设置为更长时间,比如一年,这样当数据误删时可以通过binlog进行恢复(这里的值为30天)
binlog_expire_logs_seconds = 2592000
#设置客户端连接时的默认时区
default-time_zone = '+8:00'
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G
#查询避免全表扫描
max_seeks_for_key = 1000
#可以创建触发器
log_bin_trust_function_creators = 1
#使用MySQL5.7的认证模式
default_authentication_plugin = mysql_native_password

#禁用mysqlx插件(33306端口)
mysqlx=0
mysqlx_cache_cleaner=0

innodb_monitor_enable=all

group_concat_max_len=4294967295

# Custom config should go here
!includedir /etc/mysql/conf.d/

3. 启动Docker

注意:ROOT密码请使用16位随机密码。

docker run -d --net=host --name mysql --restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /home/mysql/conf/mysqld.cnf:/etc/mysql/my.cnf \
-v /home/mysql/conf/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \
-v /home/mysql/logs:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=1234567887654321 \
mysql:8.0.20
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值