要修改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>修改全局變量
用set GLOBAL 命令設置全局變量
代碼如下 復制代碼 mysql> set GLOBAL sort_buffer_size = 7000000;當前此參數的值並不發生變化,先退出,然後重新連進去
mysql> exit
Bye
重新連接mysql數據庫
新的參數值生效
2>修改會話級變量
用show variables 命令查看當前參數的值,like ‘pattern’用於模式匹配,查找指定的參數
用set SESSION命令設置會話級變量的新值
代碼如下 復制代碼 mysql> set SESSION sort_buffer_size=7000000;修改會話級變量對當前會話來說立刻生效
代碼如下 復制代碼 mysql> show variables like ‘%sort_buffer_size%’;退出重新連接後,此參數恢復原值
代碼如下 復制代碼[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
...