一、mysql安装过程中的一些问题
在安装mysql的时候出现过一些问题,安装使用的是mysql集成包,mysql的rpm包,如下:
在系统Centos6.8中安装时采用rpm –ivh xxxx.
1、安装Mysql-server时会出现依赖库不一致的现象,原因是系统本身存在一些mysql的lib库,这是采用yum remove mysql-lib*,可卸载掉原来的库,再次安装成功。
2、MySql启动出现The server quit without updating PID file错误
在安装好mysql后,由于mysql默认数据存储路径时采用的是/var/lib/mysql,一般来说默认路径时不够的,这时需要修改数据存储路径datadir,修改方法是在/etc/my.cnf中[mysqld]节点下增加datadir=path配置。
在增加好之后启动mysql数据库会出现如题描述的打印错误,这时需要重新映射一下mysql初始化表,有人说可以直接拷贝默认路径下的文件过去,尝试过后是不行的,这时需要执行mysql_install_db重新初始化:
mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
--basedir指mysql默认执行路径,datadir是数据存储路径 还可以增加tmpdir
一般来说做了如上操作之后,可以启动mysql了,但是实际情况中还是遇到了不能开启的情况,启动继续报错,后来检查了发现是selinux的原因,这时需要设置为permissive模式。设置方法如下:
[root@data selinux]# getenforce
Enforcing
[root@data selinux]# setenforce 0
[root@data selinux]# getenforce
Permissive
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
彻底关闭,vi /etc/selinux/config 修改 SELINUX=disabled
3、启动报错libc.so.6: version `GLIBC_2.14' not found
原因是mysql5.6依赖的glibc库是2.14,而linux系统本地默认的是2.12版本,这是需要安装一个高版本的glibc,安装方法见《解决libc.so.6 version GLIBC_2.14 not found问题》
4、mysql安装之后一些默认参数配置。
a) mysql 数据库默认是区分大小写的,在实际运行过程中对sql的语法要求很严格,一旦出现了语法中某一个大小写错误的情况下,sql语句就不能征程执行,因此需要开启忽略大小配置。
lower_case_table_names = 1
b) mysql数据库在运行过程中会产生binglog日志,这些日志默认是永久保存,如果不设置保存期限的话,就需要人工清理,人工清理的方法见mysql二进制文件处理。因此在配置文件中设置保留日志期限的话是比较好的习惯:
expire_logs_days = 15
同时对日志大小设置也是很必要的防止一个日志过大。
max_binlog_size = 1G
c) mysql数据库默认将数据存储在一个文件中,这样对后期进行表数据整理是很不方便的,这时需要对表存储模式修改为按照表空间存储:
innodb_file_per_table =1
innodb_file_per_table =1000
二、mysql使用过程中的一些sql技巧
1、 mysql初始密码设置
启动前使用mysqladmin修改:mysqladmin –uroot password ‘newpassword’
2、 mysql数据库状态检查
a) 查看数据库的隔离级别
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
b) 查看先当前库的线程情况
show full processlist;
c) Mysql检查连接数
show variables like '%max_connections%'
3、 SQL查询超时的设置方法(关于timeout的处理)
show variables like '%time%';
4、修改数据库字符集:
ALTERDATABASE db_name DEFAULT CHARACTERSET character_name [COLLATE...];
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTERTABLE tbl_name CONVERTTOCHARACTERSET character_name [COLLATE...]
如:ALTERTABLE logtest CONVERT TOCHARACTERSET utf8 COLLATE utf8_general_ci;
只是修改表的默认字符集:
ALTERTABLE tbl_name DEFAULTCHARACTERSET character_name [COLLATE...];
如:ALTERTABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改字段的字符集:
ALTERTABLE tbl_name CHANGE c_name c_name CHARACTERSET character_name [COLLATE...];
如:ALTERTABLE logtest CHANGE title title VARCHAR(100)CHARACTERSET utf8 COLLATE utf8_general_ci;
查看数据库编码:
SHOWCREATEDATABASE db_name;
查看表编码:
SHOWCREATETABLE tbl_name;
查看字段编码:
SHOWFULLCOLUMNSFROM tbl_name;
三、mysql二进制文件一些处理
在Mysql中,如果启用mysql-bin日志记录,则Mysql的变更修改都会被记录到日志文件中
mysql> show global variables like '%bin%';
+---------------------------------+----------------------+
| Variable_name | Value |
+---------------------------------+----------------------+
| binlog_cache_size | 32768 |
| innodb_locks_unsafe_for_binlog | OFF |
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 104857600 |
| sync_binlog | 0 |
+---------------------------------+----------------------+
7 rows in set (0.00 sec)
1、 查看日志列表
show global variables like '%bin%';
2、 清理数据库日志
如果没有主从复制,可以通过reset master的方式,重置数据库日志,清除之前的日志文件:
mysql> reset master;
Query OK, 0 rows affected (8.51 sec)
但是如果存在复制关系,应当通过PURGE的方式来清理bin日志:
语法如下:
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。