1、mysqld服务器程序:工作特性的定义方式
命令行选项
配置文件参数
2、服务器参数/变量:设定MySQL的运行特性;
mysql> SHOW GLOBAL VARIABLES [LIKE clause];
mysql> SHOW SESSION VARIABLES [LIKE clause];
比如:查看全局和session的变量
mysql> show global variables\G;
mysql> show session variables\G;
3、状态(统计)参数/变量:保存MySQL运行中的统计数据或状态数据;
mysql> SHOW GLOBAL | [SESSION] STATUS [LIKE clause];
比如:
mysql> show session status like "Tc%" \G;
*************************** 1. row ***************************
Variable_name: Tc_log_max_pages_used
Value: 0
*************************** 2. row ***************************
Variable_name: Tc_log_page_size
Value: 0
*************************** 3. row ***************************
Variable_name: Tc_log_page_waits
Value: 0
3 rows in set (0.00 sec)
4、显示单个变量设定值的方法:感觉这个和第二种是一样的
%:匹配任意长度的任意字符;
_:匹配任意单个字符;
mysql> SELECT @@[global.]system_var_name
mysql> SELECT @@[session.]system_var_name
例如:
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
mysql> select @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ |
+-----------------------+
1 row in set (0.00 sec)
mysql> select @@session.tx_isolation;
+------------------------+
| @@session.tx_isolation |
+------------------------+
| REPEATABLE-READ |
+------------------------+
1 row in set (0.00 sec)
mysql> show global variables like '%tx_isolation%'; #和上面是一样的
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)
5、变量/参数级别:
全局:为所有会话设定默认;
会话:跟单个会话相关;会话建立会从全局继承;
6、服务器变量的调整方式:
运行时修改作用范围:
global:仅对修改后新建立的会话有效;
session:仅对当前会话有效,且立即生效;
启动前通过配置文件修改:
重启后生效;
7、运行时修改变量值操作方法:
mysql> HELP SET
SET [GLOBAL | SESSION] system_var_name = expr #第一种设置方法
SET [@@global. | @@session. | @@]system_var_name = expr #第二种设置方法
mysql> set global autocommit=0;#示例1
mysql> set @@global.autocommit=0;#示例2
mysql> select @@global.autocommit;#查看设置
以下测试在mariadb上是正常的,但是在centos6上面的mysql中不行,差别挺大的
MariaDB [(none)]> select @@global.autocommit;
+---------------------+
| @@global.autocommit |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> set global autocommit=0; #设置全局变量为0后,对新建立的会话生效,当前会话不变
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select @@global.autocommit;
+---------------------+
| @@global.autocommit |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> select @@session.autocommit; #当前会话依然不变
+----------------------+
| @@session.autocommit |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.00 sec)
##############
!!!!!!
设置完成后注意刷新数据库,保存配置,不然设置完成后直接退出,可能造成配置没有设置成功,最好退出终端,然后再进入查看下是否设置成功
要想永久有效,修改配置文件
[root@localhost ~]#vim /etc/my.cnf
autocommit=0
[root@localhost ~]#systemctl restart mariadb.service
MariaDB [(none)]> select @@global.autocommit;
+---------------------+
| @@global.autocommit |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
| 0 |
+----------------------+
1 row in set (0.00 sec)
8、centos6默认情况下,如果要设置为永久有效,只用在这里写变量名就可以。不用写等于,写等于ON不生效,奇怪
centos7的mariadb不管是写:general_log,还是写:general_log = ON,都可以生效,这里要注意
mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
[root@localhost ~]#vim /etc/my.cnf #如果要设置为永久有效,只用在这里写变量名就可以。不用写等于,写等于ON不生效,奇怪
general_log
[root@localhost ~]#service mysqld restart
mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | ON |
+---------------+-------+
1 row in set (0.00 sec)
9、安装完成后的安全初始化:
mysql_secure_installation
10、运行前常修改的参数:
innodb_file_per_table=ON
skip_name_resolve=ON
...
注意,如果mysql服务器已经正常运行了一段时间了,尽量不要再修改配置文件,会导致想不到的结果,
–
–
–