docker compose文件
vi mysql.yml加入以下内容。
services:
mysql:
image: container-registry.oracle.com/mysql/community-server:8.0
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
ports:
- 3306:3306
volumes:
- /srv/mysql/data:/var/lib/mysql
- /srv/mysql/logs:/var/log/mysql
- /srv/mysql/conf/my.cnf:/etc/mysql/my.cnf
networks:
- mysql-n
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s # 每隔 10 秒检查一次
timeout: 10s # 检查的超时时间
retries: 3 # 连续 3 次失败后标记为不健康
networks:
mysql-n:
driver: bridge
#权限
chmod -R 777 /srv/mysql/
2. 启动
docker compose -f ./mysql.yml up -d
- 进入容器,设置默认root账号允许所有ip访问
docker exec -it mysql mysql -u root -p
UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
my.conf配置
vi /srv/mysql/conf/my.cnf
[mysqld]
# 基础配置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
max_connections = 50
# 性能优化
thread_cache_size = 4
table_open_cache = 256
# InnoDB 引擎优化
innodb_buffer_pool_size = 1G
innodb_log_file_size = 128M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
# 日志相关
log_error=/var/log/mysql/error.log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time = 1
# 网络优化
max_allowed_packet = 16M
重启mysql docker compose -f ./mysql.yml restart
到此单机的mysql部署完毕。