路漫漫其修远兮
吾将上下而求索

mysql变量参数设置

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服务器已经正常运行了一段时间了,尽量不要再修改配置文件,会导致想不到的结果,

未经允许不得转载:江哥架构师笔记 » mysql变量参数设置

分享到:更多 ()

评论 抢沙发

评论前必须登录!