两份mysql配置文件,分别是实体机生产环境下与vps下的两个版本,MySQL5.1与5.5差异不大,常规设置可以通用。后面另有二进制日志相关的配置。
注意事项:如果修改了innodb_*参数,尤其是修改了innodb_log_file_size ,启动前要删除/var/lib/mysql/ib_logfile{0,1}两个文件,启动后一定要检查一下mysql日志,是否有相关错误或警告消息。
环境 CentOS 6.x 自带的MySQL 5.1.73
在原始配置文件 /etc/my.cnf 基础上,在 [mysqld] 节内增加配置参数。实际应用中,请按硬件及负载酌情修改。
#add by feng 120418 -------------------------- #skip-locking skip-name-resolve skip-external-locking key_buffer_size = 256M #table_cache = 3072 table_open_cache = 3072 read_buffer_size = 2M read_rnd_buffer_size = 2M sort_buffer_size = 2M myisam_sort_buffer_size = 256M thread_cache_size = 8 query_cache_size= 512M query_cache_limit= 5M tmp_table_size=1024M max_heap_table_size=3000M max_allowed_packet = 16M innodb_buffer_pool_size = 512M innodb_log_file_size = 512M innodb_additional_mem_pool_size=512M innodb_log_buffer_size=64M max_connections=2000 max_user_connections=800 join_buffer_size = 8M open_files_limit = 65535 #tmpdir=/dev/shm max_connect_errors=1000 #add by feng 120418 end ---------------------
1-2G内存的个人VPS下配置参考
因为开启了主从复制,会产生大量二进制日志占用磁盘空间。如不需要,可以删除复制相关行。其中key_buffer_size, innodb_buffer_pool_size 设置为32M与 64M,事实上这都嫌大浪费资源了,看实际需要吧,内存资源紧张可酌情改小点。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 #add by fengyqf start skip-name-resolve innodb_log_buffer_size=32M innodb_buffer_pool_size=64M innodb_log_file_size=16M innodb_additional_mem_pool_size=16M key_buffer_size=32M #replication safe for innodb engine innodb_flush_logs_at_commit innodb_support_xa=1 #replication server-id=100 log-bin=mysql-bin log-error=mysql-bin.err expire_logs_days=30 sync_binlog=1 binlog_format=MIXED #add by fengyqf end [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
从服务器配置
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 skip-name-resolve server-id=201 log-bin=mysql-bin relay_log=/var/lib/mysql/mysql-relay-bin log_slave_updates=1 read_only=1 binlog_format=MIXED [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
二进制日志的定期清理或手工清理
定时清理。通过参数 expire_logs_days 指定过期天数,过期自动清理;具体天数据按实际情况定(空间与同步延迟等)。该参数可运行时设定。
expire_logs_days = 10
手工清理。root登录mysql客户端,执行purge命令。
> PURGE {MASTER | BINARY} LOGS TO 'log_name' > PURGE {MASTER | BINARY} LOGS BEFORE 'date'
其中 log_name是show master logs; 显示的日志文件名,如 mysql-bin.000001. 应用举例:
> PURGE MASTER LOGS TO 'mysql-bin.000003'; //清除mysql-bin.000003(含)之前的日志 > PURGE MASTER LOGS BEFORE '2016-11-05 10:00:00'; //清除2016-11-05 10:00:00前的日志 > PURGE MASTER LOGS BEFORE DATE_SUB(NOW(),INTERVAL 3 DAY); //清除3天前日志,使用BEFORE函数计算日期,变量的date自变量还可以为'YYYY-MM-DD hh:mm:ss'格式。详查手册
清理二进制日志的影响。如果当前服务器有一个活跃的从属服务器,该从服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。(参考)
延伸阅读
- MySQL进程(process)中出现大量locked,问题分析与解决
- MySQL/MariaDB下索引基数cardinality的更新问题
- MySQL语句实现字段拆分成多行
- 简单命令对mysql数据库的备份与还原
- MySQL(csv,text)导入mssql方法参考
- MySQL的缺陷/Bug/异常/陷阱/注意事项
- MySQL复制设置及相关维护操作
- MySQL内置函数:IP地址点分式与数字转换函数(INET_ATON/INET_NTOA)
- mysql对大表执行update速度慢时,试试改用insert可能会有意想不到的发现
- mysql join查询时,参与join的字段字符集编码不同,对性能影响是巨大的
- 如何配置NAT映射(虚拟服务器)/家用小型路由器NAT配置/IP端口映射
- 邮箱域名的spf记录添加方法
- firefox弹出窗口错在新标签里打开/phpMyAdmin
- google earth linux无法运行:OpenJDK Runtime Environment (IcedTea6 1.7.1) (fedora-37.b17.fc13-i386) OpenJDK Server VM (build 14.0-b16, mixed mode)
- phpMyAdmin配置:操作栏只显示“浏览,结构,编辑”等图标不显示文字