安装准备: rpm -qa|grep -i mysql
命令敲完后出来一堆mysql,各式各样的已安装mysql包,什么-java 、-Python等等不一而足,一看懵了!
发挥不败精神,先了解情况,通过了解发现这是一台全新服务器,这些都是安装菜鸡把系统自带包都打上了,考虑再三还是卸载吧,简单迅速!
卸载:rpm -ev
使用rpm -ev 卸载后,使用whereis mysql或者find / -name mysql查看还有哪些目录留存,使用rm -rf 删除目录,删就删个彻底!!!!
ps:如果报error:Failed dependencies:.........等请带上 --nodeps
附上繁琐的卸载过程图:
卸载完毕,进入yum简单安装环节:yum install (-y 等多个参数可选)
贴上安装命令:yum install -y mysql-server mysql-devel
安装完毕,启动mysql,问题来了,启动不起来!没有任何反应,甚至没有错误日志!!!只有false
后来考虑到是不是SElinux阻止了,看了看果然是因为SElinux,执行国人的SElinux赶尽杀绝策略,关掉!!!
/usr/sbin/sertatus -v 或者getenforce ## 查看SElinux 状态,enabled 为开启,disable为关闭
临时关闭使用:setenforce 0 ## 0为关闭 1为开启
永久关闭请使用修改配置文件的办法,修改完成后需要重启服务器才能生效。
修改配置文件:/etc/selinux/config
将SELINUX=enforcing 改为SELINX=disable即可
再次使用:service mysqld start 数据库启动成功,呵呵下!!!!
下面进行mysql的基本配置以图片解决(做下面的操作前,请记得service mysqld stop哈,不然出问题自己负责!):
设置mysql随服务器启动而启动,其他软件同理:
给mysql换个新家,即换个自己喜欢的目录,不默认(默认有什么不好,你懂的),顺便给个软链接:
接下来就是配置文件咯(/etc/my.cnf):
贴上某个游戏公司工作,优化后的数据库配置,以备不是之需!!!
[mysqld] ########basic settings######## datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql character-set-server=utf8 back_log = 600 #当达到最大连接数时,可以被存在堆栈中的连接 max_connections=1000 #最大连接数 max_prepared_stmt_count=124000 max_connect_errors = 6000 #对同一主机,超过6000中断错误连接,将禁止连接 lower_case_table_names = 1 #不区分大小写 table_open_cache= 4096 # 每打开一个表,读入缓存的数据大小 table_definition_cache=8192 open_files_limit = 65535 #打开的文件的描述符的限制 max_allowed_packet = 4M #接受的数据包的大小,此为仅当需要时才会分配内存大小 query_cache_limit = 2M #指定单个查询能够使用的缓冲区大小,默认1M ft_min_word_len = 4 #分词词汇最小长度 transaction_isolation = REPEATABLE-READ #事件隔离级别,此为默认 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 #######log settings######## binlog_cache_size = 1M #一个事件,在没有提交时,产生的日志记录到Cache中的大小 log_bin = /data/mysql-logs/binlog/mysql-bin binlog_format = mixed slow_query_log = 1 long_query_time = 1 #慢查询时间 超过1秒则为慢查询 slow_query_log_file = /data/mysql-logs/slow/mysql-slow.log expire_logs_days = 90 #超过90天的binlog删除 log_queries_not_using_indexes = 1 log_slow_admin_statements = 1 log_slow_slave_statements = 1 min_examined_row_limit = 100 ##########InnoDB############ skip-external-locking #MySQL选项以避免外部锁定。该选项默认开启 default-storage-engine = InnoDB #默认存储引擎 innodb_file_per_table = 1 #每个数据库的每个表生成一个数据空间 innodb_open_files = 2000 #限制能够打开的表的数据,默认300 innodb_buffer_pool_size = 64M #使用一个缓冲池来保存索引和原始数据 innodb_thread_concurrency = 0 #默认设置0,表示不限制并发数 innodb_flush_log_at_trx_commit = 2 #每次提交事件都会写入日志 innodb_log_buffer_size = 2M #确定写日志文件所用的内存大小 innodb_log_file_size = 32M #确定数据日志的文件大小 innodb_log_files_in_group = 3 #以循环方式将日志文件写到多个文件 innodb_max_dirty_pages_pct = 90 #主线程刷新缓存池中的数据,使无用数据少于90% innodb_lock_wait_timeout = 120 #事件在被回滚之前可以等待一个锁定的超时秒数 bulk_insert_buffer_size = 8M #批量插入缓存大小 myisam_sort_buffer_size = 8M #恢复表时使用的缓冲区大小 myisam_max_sort_file_size = 10G #使用快速排序方法来创建一个索引 myisam_repair_threads = 1 #在Repair by sorting过程中创建MyISAM表索引 interactive_timeout = 28800 #服务器关闭交互式连接前等待活动的秒数 wait_timeout = 28800 #服务器关闭非交互连接之前等待活动的秒数 [mysqldump] quick max_allowed_packet = 16M #服务器发送和接受的最大包长度 [myisamchk] key_buffer_size = 8M #指定用于索引的缓冲区大小 sort_buffer_size = 8M #执行排序使用的缓冲大小,增加ORDER BY速度 read_buffer_size = 4M #读入缓存区大小,对表进行扫描请求分配的读入缓冲区 tmp_table_size = 16M #heap(堆积)表缓冲大小 read_rnd_buffer_size = 8M #随机读缓存区大小,对任意顺序查询分配读入缓冲区,用于顺序查询(禁止设置过大,避免消耗内存) join_buffer_size = 8M #联合查询操作所能使用的缓冲区大小 thread_cache_size = 8 #重新利用保存在缓存中的线程的数量 query_cache_size = 8M #查询缓冲大小 write_buffer = 4M [mysqld_safe] log-error=/data/mysql-logs/error/mysql-error.log pid-file=/var/run/mysqld/mysqld.pid [client] default-character-set=utf8
如果粘贴上面的配置文件直接使用,请记得删除mysql目录下面的ib_logfile0和ib_logfile1文件,至于为什么自己好好读读配置文件,多看看mysql的文章,这里不做描述,呵呵!
最后几步操作,日志文件分开存放(记得赋权哈,这里以mysql-logs为例 chown mysql:mysql mysql-logs)
- 在数据目录下开辟一个专用于数据库日志存放的目录:/data/mysql-logs
- 在mysql-logs下分别建立mkdir error 、mkdir bin-log 、mkdir slow三大数据库日志存放目录
顺带说下这几个日志的意义:
error:错误日志,用于故障事件的排查
bin-log:二进制日志,与完备配合,用于重大故障发生后的数据恢复
slow:慢查询了,你想优化总要知道哪里能优化吧!!哈哈哈!
启动mysql:service mysqld start
完成后,记得设个密码:mysqladmin -uroot password ‘*****’
至此,一个数据库的部署算是基本完成了。。。