不重啟mysql情況修改引數變數
https://www.cnblogs.com/huidaoli/p/3232265.html
地球人都知道,更新mysql配置my.cnf需要重啟mysql才能生效,但是有些時候mysql線上上,不一定允許你重啟,這時候應該怎麼辦呢?
看一個例子:
1
2
3
4
5
6
7
8
9
10 |
mysql> show variables like 'log_slave_updates';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| log_slave_updates | OFF |
+-------------------+-------+
1 row in set (0.00 sec)
mysql> set global log_slave_updates=1;
ERROR 1238 (HY000): Variable 'log_slave_updates' is a read only variable |
看到了吧?報錯了!
後來查了一下資料,發現有一個叫gdb的東西,感覺相當牛X,可以實現線上更改mysql引數,請看例子:
1
2
3
4
5
6
7
8 |
mysql> system gdb -p $(pidof mysqld) -ex "set opt_log_slave_updates=1" -batch
mysql> show variables like 'log_slave_updates';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| log_slave_updates | ON |
+-------------------+-------+
1 row in set (0.00 sec) |
但是在一些可重複的引數,不能直接用set更改,那這時候又要怎麼辦呢?老外給了一個解決方案:
1
2
3
4
5
6
7
8
9
10 |
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
... |
=========================================================================
mysql很多引數都需要重啟才能生效,有時候條件不允許,可以使用gdb作為最後的手段
先看看修改之前
mysql> show global variables like '%connection%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_connection | latin1 |
| collation_connection | latin1_swedish_ci |
| max_connections | 151 |
| max_user_connections | 0 |
+--------------------------+-------------------+
4 rows in set (0.01 sec)
使用gdb來修改
[root@asm ~]# gdb -p $(pidof mysqld) -ex "set max_connections=1500" -batch
其他的引數可以相應的修改
再檢視當前的配置
mysql> show global variables like '%connection%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_connection | latin1 |
| collation_connection | latin1_swedish_ci |
| max_connections | 1500 |
| max_user_connections | 0 |
+--------------------------+-------------------+
4 rows in set (0.00 sec)
可以看出修改成功了,不過使用gdb有風險,特別是生產環境,有可能導致程式down掉,僅作為最後手段使用.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2654937/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在不重新啟動phantomjs的情況下修改HTTP代理?JSHTTP
- react路由引數改變不重新渲染頁面React路由
- Docker(十七)-修改Docker容器啟動配置引數Docker
- 關於變數與‘=’賦值的情況出錯變數賦值
- mybatis sql foreach 引數的傳入的三種情況!!MyBatisSQL
- Bash變數和引數變數
- python變數和引數Python變數
- linux修改系統引數Linux
- 【VMware vCenter】在不重啟的情況下重置vCenter Server的root密碼。Server密碼
- 在不重啟的情況下為 Vmware Linux 客戶機新增新硬碟Linux硬碟
- MySQL 8.0 全域性變數的修改持久化 set persistMySql變數持久化
- python---函式引數、變數Python函式變數
- 【Java】可變引數Java
- 反射修改 static final 變數反射變數
- MySQL 之變數MySql變數
- Charles 修改請求(Request)引數
- RAC 修改引數DB_FILES
- 使用js修改url地址引數JS
- Windows 下修改Tomcat jvm引數WindowsTomcatJVM
- mysql 引數調優MySql
- 變數轉化為判斷條件時的各種情況變數
- MySQL 修改最大連線數MySql
- MySQL 8 新特性之持久化全域性變數的修改MySql持久化變數
- MySQL:MGR修改max_binlog_cache_size引數導致異常MySql
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- go-可變引數Go
- 可變引數例項
- MySQL 的啟動選項和系統變數MySql變數
- Java方法04:命令列傳遞引數、可變引數Java命令列
- 《前端實戰總結》如何在不重新整理頁面的情況下改變URL前端
- 求金字塔數字非負的情況總數
- 匹配指定位數不重複數字
- Oracle RAC修改引數檔案位置Oracle
- [20210209]修改CPU_COUNT引數.txt
- MySQL變數的使用MySql變數
- MySQL效能相關引數MySql
- SpringDataJpa列印Sql詳情(含引數)SpringSQL
- 【easyui】開啟的tab頁同頁面引數不同頁面內容不重新整理UI