Docker下Mariadb数据库最佳部署(单节点)

1.运行目录准备

#创建目录
mkdir /opt/mariadb; cd /opt/mariadb

2.mariadb配置文件准备

cat > my.cnf << "EOF"
[mysqld]
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid

#user=mysql

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

default-time-zone = '+8:00'

#server-id
server_id=1

#禁止名称解析
skip_name_resolve=ON

#不区分大小写
lower_case_table_names = 1

#最大连接数
max_connections = 2048

#指mysql服务器端和客户端在一次传送数据包的过程当中最大允许数据包大小。若设置超过1G,最终生效结果也只有1G。
max_allowed_packet = 1G

#线程缓存大小。
thread_cache_size = 64

# InnoDB缓存内存大小,物理内存大小的70%-80%,如果服务器上只运行MySQL,则可以将此值增加到90%。
innodb_buffer_pool_size = 3G

# 增加 innodb_log_buffer_size,提高写入性能。
innodb_log_buffer_size = 16M

# 设置innodb_io_capacity,并启用O_DIRECT,提高IO性能。
innodb_io_capacity = 2000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT

#innodb只读压缩
innodb_read_only_compressed = 0

#innodb可以把每个表的数据单独保存。
innodb_file_per_table=ON

#禁用或启用中继日志,只要不再需要,立即自动清除。默认值为 1(已启用)
relay_log_purge = ON
#定义relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录,文件名为host_name-relay-bin.nnnnnn
relay_log=relay-bin
#定义relay_log_index的位置和名称
relay_log_index=relay-bin.index

#binlog日志格式
binlog_format=ROW
#启用二进制日志记录,指定文件名
log_bin=bin-log
#启用二进制日志记录,指定文件名
log_bin_index=bin-log.index
#定义了mysql清除过期日志的时间。默认值为0,表示“没有自动删除”。单位天
expire_logs_days=7
#复制服务器从源服务器接收的更新是否应记录到副本自己的二进制日志。
log_slave_updates=ON

#日志的存放位置
log_error = /var/lib/mysql/mysqld.log
#log_warnings 为0,表示不记录告警信息。
#log_warnings 为1,表示告警信息写入错误日志。
#log_warnings 大于1,表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。(默认为2)
#log_warnings=2

#是否打开慢查询日志
slow_query_log=ON
#慢查询时间为5s,根据实际业务情况进行配置。
long_query_time = 5
#慢查询文件位置,建议将日志文件放在独立的 SSD 盘上。
slow-query-log-file=/var/lib/mysql/slow.log

#GTID严格模式,影响性能,若无同步需求可关闭
#gtid_strict_mode=ON

#从库幂等模式,影响性能,若无同步需求可关闭
#slave_exec_mode=IDEMPOTENT

#slave忽略同步的数据库,影响性能,若无同步需求可关闭
#replicate-ignore-db=information_schema,performance_schema

#半同步,影响性能,若无同步需求可关闭
#rpl_semi_sync_master_enabled=on
#rpl_semi_sync_slave_enabled=on

#会话事务状态跟踪,影响性能,若无监控需求可关闭
#session_track_state_change = ON
#session_track_transaction_info = CHARACTERISTICS
#session_track_system_variables='autocommit,character_set_client,character_set_connection,character_set_results,time_zone,last_gtid'

#
# include *.cnf from the config directory
#
#!includedir /etc/my.cnf.d

EOF

3.启动脚本

cat > start.sh << "EOF"
#!/bin/bash
docker stop mariadb
docker rm mariadb

docker run -d --name mariadb \
	-p 3306:3306 \
	-e TZ=Asia/Shanghai \
	-e MYSQL_ROOT_PASSWORD='P@ssw0rd' \
	-v $PWD/data:/var/lib/mysql \
	-v $PWD/my.cnf:/etc/mysql/my.cnf \
	--restart unless-stopped \
	--ulimit memlock=-1:-1 \
	mariadb:10.9

EOF

4.运行

chmod +x start.sh
./start.sh
#查看运行情况
docker logs -f mariadb

5.常用操作

# 创建数据库,并创建对应管理员
use mysql;
create database nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
create user 'nacos'@'%' identified by 'nacos';
grant all privileges on nacos.* to 'nacos'@'%';
flush privileges;
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容