登陸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 ... |