老大叫我改主要資料庫(MySQL)的時間!!!--UTC問題

來源:互聯網
上載者:User

標籤:老大叫我改主要資料庫(mysql)的時間!!!--utc問題

由於我公司另外一個營運小夥伴裝系統的時候,勾選了UTC這個東東。(會導致慢八個小時的時間誤差)結果才有了這一次逗比的經曆。


1、系統時間慢八個小時,我發現不對勁後,就改回來了,可參考我的另外一篇部落格。

2、資料庫慢了八個小時,當時並沒有意識到這個問題。


突然在做實驗,老大喊我,說MySQL時間不對勁,讓我幫忙解決一下。啥?不會吧,當時首先是這個反正,去看看後,果然時間不對,和本地時間比較一下,相差八個小時。我頓時反應就是,又是那UTC惹的禍。好吧,排查吧,畢竟先解決問題才是硬道理啊。


瞭解:

5.10.8. MySQL伺服器時區支援

MySQL伺服器有幾個時區設定:

· 系統時區。伺服器啟動時便試圖確定主機的時區,用它來設定system_time_zone系統變數。

· 伺服器當前的時區。全域系統變數time_zone表示伺服器當前使用的時區。初使值為‘SYSTEM‘,說明伺服器時區與系統時區相同。可以用--default-time-zone=timezone選項顯式指定初使值。如果你有SUPER 許可權,可以用下面的語句在運行時設定全域變數值:

·mysql> SET GLOBAL time_zone = timezone;
·   每個串連的時區。每個用戶端串連有自己的時區設定,用會話time_zone變數給出。其初使值與全域變數time_zone相同,但可以用下面的語句重設:

·mysql> SET time_zone = timezone;


可以用下面的方法查詢當前的全域變數值和每個串連的時區


mysql> SELECT @@global.time_zone, @@session.time_zone;

+--------------------+---------------------+

| @@global.time_zone | @@session.time_zone |

+--------------------+---------------------+

| SYSTEM             | SYSTEM              |

+--------------------+---------------------+

1 row in set (0.00 sec)


mysql>


解決方案;

1、臨時解決方案

查看當前資料庫時間

mysql> select CURTIME();

+-----------+

| CURTIME() |

+-----------+

| 08:53:05  |

+-----------+

1 row in set (0.00 sec)


mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2016-01-31 08:53:08 |

+---------------------+

1 row in set (0.00 sec)


mysql>


修改時區:


mysql> SET time_zone = ‘+8:00‘;  # 此為北京時,我們所在東8區

Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec)


mysql> 


這種方法好像只能在終端上使用,退出終端後時間又會變成原來的。


2、永久解決方案

vim /etc/my.cnf

[mysqld]

default-time_zone = ‘+8:00‘


重啟mysql服務。

/etc/init.d/mysqld restart


注意:我的環境沒報錯,因為我自己搭建的有類比環境,建議先在類比環境操作,避免版本,環境帶來不必要的錯誤和損失。


其他問題:

資料庫如果有主從結構,重啟資料庫會導致主從不同步。


個人建議的方法:

1、先停止slave (stop slave;)然後先修改slave的時區(很不幸,系統不是自己裝的),等到伺服器重啟後,查看slave同步binlog的位置,然後修改Master的時區,重啟後查看當前master的位置,重新授權,salve重新學習(可從slave重啟後查看的位置學習),最後再start slave;不出意外,這樣是可行的,畢竟我是這樣操作。


2、如果不行失敗,那就等master和slave時區都改好後,查看master當前位置,然後slave匯入最新資料庫,然後重新學習。


3、我嘗試過slave不匯入最新資料,從一開始從master的binglog位置學習,但是實驗報錯了。後來有從新匯入最新資料,然後學習的。(具體為什麼失敗,並不清楚,網上關於重啟資料庫,主從不同步的原因有很多。)



個人總結:

1、涉及到資料庫的問題,最好先在實驗環境類比真實環境,操作無誤再在生產環境執行,避免不必要的錯誤。如果問題比較大,記得先做好備份,備份才是王道。

2、遇到問題,先冷靜,仔細排查。不要抱怨,先解決問題,再建議。

3、不要忽略一些不必要的問題。一個小小的UTC,居然帶來了這麼多的小彎路。



上面是個人在生產環境碰到的一些小問題,分享給大家,希望和大家互相分享,共同進步。

QQ:1145507435

郵箱:[email protected]



本文出自 “?唯一!” 部落格,請務必保留此出處http://renzhiyuan.blog.51cto.com/10433137/1782399

老大叫我改主要資料庫(MySQL)的時間!!!--UTC問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.