萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql修改參數變量設置的一些方法總結

mysql修改參數變量設置的一些方法總結

要修改mysql參數我們最常用的辦法是直接在my.cnf中進行修改然後重啟mysql,也可以使用命令方式直接修改而不需要重復mysql,但後者如果一重啟mysql設置的變量將無效了。


登陸mysql數據庫系統中,用show processlist分析查看當前運行狀態。

mysql> show processlist;

+—–+————-+——————–+

| Id | User | Host | db | Command | Time| State | Info

+—–+————-+——————–+

|207|root |192.168.0.2:51621 |mytest | Sleep | 5 | | NULL

|208|root |192.168.0.2:51622 |mytest | Sleep | 5 | | NULL

|220|root |192.168.0.2:51676 |mytest |Query | 84 | Locked |

 

一般情況下,在修改後my.cnf,需要重啟一下mysql才能讓這個參數生效。有人說,可以使用 /etc/init.d/mysqld  reload

但筆者reload後,再次查看變量的值依舊沒有改變。

下面是筆者的操作過程:

 代碼如下 復制代碼 mysql -uroot -psss@pas -e "show variables" |grep max_connection

結果為 max_connections 1024

修改my.cnf 使

 代碼如下 復制代碼

max_connections  2048

然後  /etc/init.d/mysqld  reload

 代碼如下 復制代碼 mysql -uroot -psss@pas -e "show variables" |grep max_connection

結果依然是 max_connections 1024

所以,筆者認為這樣做是不能在線修改mysql的配置參數的。於是

 代碼如下 復制代碼

mysql -uroot -psss@pas -e "set GLOBAL max_connections=2048"
mysql -uroot -psss@pas -e "show variables" |grep max_connection

結果為:

max_connections 2048

所以,使用命令 set  GLOBAL  變量名 變量值; 這樣就可以在線修改mysql的配置參數了

一些參考


1>修改全局變量

 代碼如下 復制代碼 [root@admin root]# mysql
mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 6291448 |
+—————————+————+
1 rows in set (0.00 sec)

用set GLOBAL 命令設置全局變量

 代碼如下 復制代碼 mysql> set GLOBAL sort_buffer_size = 7000000;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 6291448 |
+—————————+————+
1 rows in set (0.00 sec)

當前此參數的值並不發生變化,先退出,然後重新連進去
mysql> exit
Bye
重新連接mysql數據庫

 代碼如下 復制代碼 [root@admin root]# mysql
mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 7000000 |
+—————————+————+
1 rows in set (0.00 sec)

新的參數值生效
2>修改會話級變量
用show variables 命令查看當前參數的值,like ‘pattern’用於模式匹配,查找指定的參數

 代碼如下 復制代碼 mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 6291448 |
+—————————+————+
1 rows in set (0.00 sec)

用set SESSION命令設置會話級變量的新值

 代碼如下 復制代碼 mysql> set SESSION sort_buffer_size=7000000;
Query OK, 0 rows affected (0.00 sec)

修改會話級變量對當前會話來說立刻生效

 代碼如下 復制代碼 mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 7000000 |
+—————————+————+
1 rows in set (0.00 sec)
mysql> exit
Bye

退出重新連接後,此參數恢復原值

 代碼如下 復制代碼

[root@admin99 root]# mysql
mysql> show variables like ‘%sort_buffer_size%’;
+—————————+————+
| Variable_name | Value |
+—————————+————+
| sort_buffer_size | 6291448 |
+—————————+————+
1 rows in set (0.00 sec)


老外給了一個解決方案

 代碼如下 復制代碼

mysql> show slave status G
...
     Replicate_Do_DB: test
...
mysql> system gdb -p $(pidof mysqld)
          -ex 'call rpl_filter->add_do_db(strdup("hehehe"))' -batch
mysql> show slave status G
...
      Replicate_Do_DB: test,hehehe
...

copyright © 萬盛學電腦網 all rights reserved