当前位置: 首页 > Linux

dockermysqlcontaineruse-datafile_configurationfilemount

时间:2023-04-07 00:45:58 Linux

mysqlcontaineruse-datafile_configurationfilemount下载镜像[root@silence~]#dockerpulldocker.io/mysql:5.6[root@silence~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEdocker.io/mysql5.695e0fc47b09611天前257MBdocker.io/mysqllatestb8fd9553f1f011天前445MB观察图中的配置文件目录结构[root@silence~]#dockerrun--rm-itdocker.io/mysql:5.6/bin/bashroot@f5534c590a62:/#cd/etc/mysql/root@f5534c590a62:/etc/mysql#lsconf.dmy.cnfmy.cnf.fallbackmysql.cnfmysql.conf.droot@f5534c590a62:/etc/mysql#cdmysql.conf.d/root@f5534c590a62:/etc/mysql/mysql.conf.d#lsmysqld.cnfroot@f5534c590a62:/etc/mysql/mysql.conf.d#catmysqld.cnf[mysqld]pid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockdatadir=/var/lib/mysql#log-error=/var/log/mysql/error.log#建议禁用符号链接ed以防止各种安全风险symbolic-links=0root@f5534c590a62:/etc/mysql/mysql.conf.d#exitexit[root@silence~]#准备一个5.6可用的配置文件[mysqld]pid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockdatadir=/var/lib/mysql#log-error=/var/log/mysql/error.log#建议禁用符号链接以防止各种安全风险symbolic-links=0max_connections=800#指定mysql允许的最大连接进程数。如果访问博客时经常出现连接过多错误提示,则需要增大这个参数的值max_connect_errors=3000#设置每台主机连接请求异常中断的最大次数。当超过这个数量时,MySQL服务器将禁止主机的连接请求,直到MySQL服务器重启或通过flushhosts命令清除主机的相关信息。table_open_cache=614#用于指定表缓存的大小,当Mysql访问一个表时,如果mysql缓存中还有空间,则将表打开并放入表缓冲区。这样做的好处是可以更快地访问表中的内容。一般来说,可以在数据库运行高峰期查看Open_tables和Open_tables的状态值,判断是否增加table_open_cache的值,即Open_tables是否接近table_open_cache,Opened_tables的值是逐渐增加的,然后考虑增加这个值的值。external-locking=FALSE#mysql避免外部锁定的选项。真实的是。max_allowed_pa??cket=8M#服务器一次可以处理的最大查询包的值,也是服务器程序可以处理的最大查询。sort_buffer_size=1M#设置可用于查询排序的缓冲区大小,系统默认为2M。注意:该参数对应的分配内存是每个连接独享的。如果有100个连接,实际分配的总排序缓冲区大小为100x6=600M。因此,对于内存在4GB左右的服务器,建议设置为6MB~8MB。join_buffer_size=1M#联合查询操作可以使用的缓冲区大小,和sort_buffer_size一样,这个参数对应的分配内存也是每个连接独享的。thread_cache_size=100#设置ThreadCache池中可以缓存的最大连接线程数,可以设置为0~16384,默认为0。这个值表示可以缓存多少个线程重用。如果还有空间,客户端的线程就会被放入缓存中。如果线程被重新请求,请求将从缓存中读取。如果缓存为空或者有新的请求,就会重新创建线程。如果有很多线程,增加这个值可以提高系统性能。通过对比Connection和Thread_created状态的个数,可以看出这个变量的作用。我们可以根据物理内存设置规则如下:1GB内存我们配置8,2GB内存我们配置16,3GB内存我们配置32,4GB或者4GB以上我们给这个值64或者更大的值。thread_concurrency=2#该参数的值为服务器的逻辑CPU数x2。query_cache_size=2M#指定mysql查询缓冲区的大小,可以在mysql控制台上观察。如果qcache_lowmem_prunes的值很大,说明经常缓冲不足。如果qcache_hits的值很大,说明查询buffer使用非常频繁,如果改小了会影响效率,那么可以考虑不查询buffer。对于acache_free_blocks,如果该值很大,说明缓冲区是碎片化的。query_cache_limit=1M#只有小于这个设置值的结果才会被缓存。query_cache_min_res_unit=2k#设置查询缓存的最小内存分配单位。适当设置该参数,可以减少快速内存申请和分配的次数。但是,如果设置太大,内存碎片的值可能会增加。默认值为4K。建议设置W为1K~16K。default_table_type=InnoDB#默认的表类型是InnoDB。thread_stack=192K#设置mysql每个线程的堆栈大小,默认值足够大,可以满足正常运行,范围可以设置128K到4GB,默认为192K。transaction_isolation=READ-COMMITTED#数据库隔离级别(READUNCOMMITTED(读取未提交的内容)READCOMMITTED(读取提交的内容)REPEATABLEREAD(可重读)SERIALIZABLE(可序列化))tmp_table_size=2M#设置临时表在内存中的最大值,如果超过这个值,临时表将写入磁盘,范围为1KB~4GB。max_heap_table_size=2M#独立内存表允许的最大容量long_query_time=1#慢查询执行时间上限,默认10s,推荐1s~2s。log_long_format#不使用索引的查询会还要记录(推荐,根据业务调整)binlog_cache_size=1M#在一个事务中,binlog持有Cachesize来记录SQL状态。如果你经常使用大型和多声明的事务,你可以增加这个值以获得更好的性能。来自事务的所有状态都缓存在binlogbuffer中,然后一次性提交写入binlog。如果事务大于此值,它将被磁盘上的临时文件替换。这个缓冲区在每个链接事务被创建时第一次更新状态。max_binlog_cache_size=1M#二进制日志文件的最大长度(默认设置为1GB)。在一个二进制文件信息超过这个最大长度之前,MySQL服务器会自动提供一个新的二进制文件进行连接。expire_logs_days=7#超过7天的binlog.mysql程序自动删除(如果数据很重要,建议不要启用该选项)key_buffer_size=16M#指定索引的缓冲区大小,增大可以得到更好的索引处理performance,对于内存在4GB左右的服务器,这个参数可以设置为256MB或者384MB。注意:如果参数值设置过大,会降低服务器的整体效率。read_buffer_size=1M#读查询操作可以使用的缓冲区大小和sort_buffer_size一样,这个参数对应的分配内存也是每个连接独享的。read_rnd_buffer_size=1M#设置用于随机读取的buffer,该参数与read_buffer_size设置的Buffer相反,一个用于顺序读取,一个用于随机读取,但两者都是针对线程的,每个线程可以生成其中的任意一个这两个缓冲区,默认值为256KB,最大值为4GB。bulk_insert_buffer_size=1M#如果经常需要使用batchinsert插入特殊语句来插入数据,可以适当调整参数为16MB~32MB,建议8MB。lower_case_table_names=1#实现mysql不分大小(开发需求,建议开启)skip-name-resolve#禁止mysql对外部连接进行DNS解析。使用这个选项可以消除mysql进行DNS解析的时间。但需要注意的是,如果启用该选项,则所有远程主机连接授权必须使用IP地址方式,否则mysql将无法正常处理连接请求。slave-skip-errors=1032,1062#可以跳过库的错误数replicate-ignore-db=mysql#master-slave的情况下,设置不需要同步的库。server-id=6#表示本机序号为1,如果是主从或者多实例,server-id不能相同innodb_additional_mem_pool_size=4M#用来设置存放的数据目录信息根据InnoDB和其他内部数据结构的内存池的大小,应用中的表越多,这里需要分配的内存就越多。对于比较稳定的应用,这个参数的大小也比较稳定,没必要预留很大的值。如果InnoDB用完了这个池中的内存,InnoDB开始从操作系统分配内存,并把警告信息写入mysql错误日志。默认值为1MB。当您发现错误日志中有相关警告信息时,应适当增大该参数的大小。innodb_buffer_pool_size=32M#InnoDB使用缓冲池来存储索引和原始数据。设置越大,访问表中数据时所需的磁盘I/O越少。一般设置为物理内存的%25左右。注意:InnoDB的Bufferpool值不要配置为物理内存的50%~80%,这个要根据具体的生产环境来确定。innodb_data_file_path=ibdata1:128M:autoextend#设置并配置一个单独的文件,可扩展大小为128MB,命名为ibdata1,文件位置不给,默认全部在mysql数据目录下。innodb_file_io_threads=4#InnoDB中的文件I/O线程通常设置为4,如果是Windows,可以设置更大的值来提高磁盘I/O。innodb_thread_concurrency=8#设置服务器有多少个CPU。建议使用默认设置一般设置为8innodb_flush_log_at_trx_commit=2#设置为0表示innodb_log_buffer_size队列满了再统一存储。默认值为1,这也是最安全的设置。innodb_log_buffer_size=2M#默认1MB,一般8~16MB就够了。innodb_log_file_size=4M#决定日志文件的大小,设置较大可以提高性能,但也会增加恢复数据库的时间。innodb_log_files_in_group=3#为了提高性能,mysql可以将日志文件以循环的方式写入多个文件。推荐设置为3.innodb_max_dirty_pages_pct=90#InnoDB主线程刷新缓存池中的数据。innodb_lock_wait_timeout=120#InnoDB事务在回滚前可以等待一个锁超时秒数,InnoDB自动检测自己锁表中的事务死锁并回滚事务。InnoDB使用locktables语句通知锁定设置,默认为50秒。innodb_file_per_table=0#InnoDB是独立表空间模式,每个数据库的每个表都会生成一个数据空间。0关闭,1打开。我承认配置文件被我卡住了,哈哈,配置文件可以加优化参数,但是不要改路径5.7[root@prometheus_sh_01_10_23_140_174conf]#pwd/data/mysql5.7/conf[root@prometheus_sh_01_10_23_140_174conf]#catmy.cnf[client]port=3306socket=/tmp/mysql.sockdefault-character-set=utf8[mysqld]port=3306socket=/var/run/mysqld/mysqld.sockdatadir=/var/lib/mysqlpid-file=/var/run/mysqld/mysqld.piduser=mysqlbind-address=0.0.0.0server-id=1skip-external-lockingexplicit_defaults_for_timestampinit-connect='SETNAMESutf8'character-set-server=utf8#skip-name-resolveback_log=300max_connections=ors2222max_connect_er6000open_files_limit=65535table_open_cache=128max_allowed_pa??cket=4Mbinlog_cache_size=1Mmax_heap_table_size=8Mtmp_table_size=16Mread_buffer_size=2Mread_rnd_buffer_size=8Msort_buffer_size=8Mjoin_buffer_size=8M#key_buffer_size=4Mthread_cache_size=8query_cache_type=1query_cache_size=8Mquery_cache_limit=2Mft_min_word_len=4performance_schema=0explicit_defaults_for_timestamplower_case_table_names=1skip-external-lockingdefault_storage_engine=InnoDBinnodb_file_per_table=1innodb_open_files=500innodb_buffer_pool_size=128Minnodb_write_io_threads=4innodb_read_io_threads=4innodb_thread_concurrency=0innodb_purge_threads=1innodb_flush_log_at_trx_commit=2innodb_log_buffer_size=2Minnodb_log_file_size=32Minnodb_log_files_in_group=3innodb_max_dirty_pages_pct=90innodb_lock_wait_timeout=120bulk_insert_buffer_size=8Mmyisam_sort_buffer_size=8Mmyisam_max_sort_file_size=10Gmyisam_repair_threads=1interactive_timeout=28800wait_timeout=28800skip-ssl[mysqldump]quickmax_allowed_pa??cket=16M[myisamchk]key_buffer_size=8Msort_buffer_size=8Mread_buffer=4Mwrite_buffer=4M启动容器[root@silence~]#dockerrun-d-p3306:3306--namemysql-silence_sean-eMYSQL_ROOT_PASSWORDudud=biangtrue-v/data/conf/mysqld.cnf:/etc/mysql/mysql.conf.d-v/data/data:/var/lib/mysql/docker.io/mysql:5.6--privileged=true使容器拥有root权限-eMYSQL_ROOT_PASSWORD=biubiubiuduang在“%”密码中设置root-v/data/conf/mysqld.cnf:/etc/mysql/mysql.conf.d挂载配置文件和设置环境变量设置环境变量和镜像参数,可以解决第一个问题。环境变量使用-e设置在镜像名前面;镜像名称后面需要配置镜像参数dockerrun-d-p4306:3306-eMYSQL_USER="silence"-eMYSQL_PASSWORD="sean"-eMYSQL_ROOT_PASSWORD="rootpwd123"--namemysql001mysql/mysql-server--character-set-server=utf8--collat??ion-server=utf8_general_ci环境变量说明:-eMYSQL_USER="silence":添加用户静默-eMYSQL_PASSWORD="sean":设置密码:sean-eMYSQL_ROOT_PASSWORD="rootpwd123":设置root密码:rootpwd123镜像参数说明:--character-set-server=utf8:设置字符集为utf8--collat??ion-server=utf8_general_ci:设置字符比较规则为utf8_general_ci