MySQL安装完成之后,需要对MySQL进行配置以及优化,从而使MySQL可以更高效的运行。
vi /etc/my.cnf #打开配置文件
[mysqld]
datadir=/data/mysqldata #在此位置读取数据
socket=/tmp/mysql.sock #sock 通信设置
user=mysql #使用mysql启动
symbolic-links=0 #是否支持快捷方式
log-bin=mysql-bin #开启 bin-log 日志
server-id=1 #mysql 服务ID
auto_increment_offset=1 #自增长字段从那个数开始,取值
范围:1-65535
auto_increment_increment=2 #自增长每次递增的量,默认1,取
值范围:1-65535
##########在做 主-主同步时需要设置此两项
########## master:auto_increment_offset=1
########## auto_increment_increment=2
########## master: auto_increment_offset=2
########## auto_increment_increment=2
########## 将 auto_increment_offset 分别设置为1和2,可以避免两台服务器同时做更新时自增
########## 长字段的值之间发生冲突
port = 3306
key_buffer = 384M #用于索引块的缓冲区大小,增加它可以 更好的处理索引(对所有读和多重写)。 索引块是缓冲的并且被所有线程共享,大小视内存而定
table_cache = 512 #为所有线程打开表的数量。增加该值能增加mysql 描述符的数量。可以避免频繁打开数据表产生开销
sort_buffer_size = 2M #每个线程排序时的一个缓冲区,可加速ORDER BY 或
GROUP BY 操作。注意:该分配大小是每个连接独占,
如有100个连接,将占用 2 * 100 = 600M
read_buffer_size = 2M #查询操作使用的缓冲区,每连接独占
query_cache_size = 32M #指定查询结果缓冲区大小
read_rnd_buffer_size = 8M #在使用指针排序后,随机读取用
myisam_sort_buffer_size = 64M #MyISAM表发生变化时重新排序所需要的缓冲
thread_concurrency = 8 #最大线程并发线程数,取值为:CPU数量 * 2,如果 CPU 支持 H.T 超线程,再 * 2
thread_cache = 8 #缓存可重用的线程数
skip-locking #避免MYSQL的外部锁定,减少出错几率增强稳定性
[mysqld_safe] #mysql安全启动配置
log-error=/var/log/mysqld.log #日志
pid-file=/var/run/mysqld/mysqld.pid #PID文件
replicate-do-db=all #允许 slave 同步哪个库
key_buffer_size #指定索引缓冲区的大小,它决定索引
处理的速度,尤其是索引读的速度。一般为内存的 50%
show variables lik 'key_buffer_size';
max_connection = 3000 #每个客户端连接最大的错误允许数量,达到此限制,
阻止连接,直到执行“FLUSH HOSTS” 或重启服务
innodb_buffer_pool_size #相当于key_buffer_size对于MyISAM 表的作用,使用
该参数指定的内存大小来缓冲数据和索引
###对于单独的MySQL 服务器来说,可以把该值设置成物理内存的 80%
basedir = path # 使用此目录作为根目录(安装目录)
datadir = path # 从此目录读取数据文件
pid-file= path # 为mysqld程序指定一个存放进程 ID 的文件,仅
适用于UNIX/Linux 系统
[mysqldump]
max_allowed_packet = 16M
此处附一个真实环境 mysql 配置 my.cnf 内容,可以根据实际情况修改----
#########################################################################################
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] user = mysql server_id = 10 port = 3306 socket = /tmp/mysql.sock datadir = /data/mysql/data1 old_passwords = 1 lower_case_table_names = 1 character-set-server = utf8 default-storage-engine = MYISAM log-bin = bin.log log-error = error.log pid-file = mysql.pid long_query_time = 2 slow_query_log slow_query_log_file = slow.log binlog_cache_size = 4M binlog_format = mixed max_binlog_cache_size = 16M max_binlog_size = 1G expire_logs_days = 30 ft_min_word_len = 4 back_log = 512 max_allowed_packet = 64M max_connections = 4096 max_connect_errors = 100 join_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 2M sort_buffer_size = 2M query_cache_size = 64M table_open_cache = 10000 thread_cache_size = 256 max_heap_table_size = 64M tmp_table_size = 64M thread_stack = 192K thread_concurrency = 24 local-infile = 0 skip-show-database skip-name-resolve skip-external-locking connect_timeout = 600 interactive_timeout = 600 wait_timeout = 600 #*** MyISAM key_buffer_size = 512M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 64M myisam_max_sort_file_size = 1G myisam_repair_threads = 1 concurrent_insert = 2 myisam_recover #*** INNODB innodb_buffer_pool_size = 16G innodb_additional_mem_pool_size = 32M innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 120 innodb_log_buffer_size = 8M innodb_log_file_size = 256M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_thread_concurrency = 16 innodb_open_files = 10000 #innodb_force_recovery = 4 #*** Replication Slave read-only #skip-slave-start relay-log = relay.log log-slave-updates
|