两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...
第一次查找問題,記錄一下查找過程
首先查看數(shù)據(jù)庫的磁盤使用情況: df -hl
然后查看每個文件所占容量:du -h --max-depth=1,然后發(fā)現(xiàn)/usr的文件夾占了32G的磁盤,然后一級一級的進(jìn)入文件夾執(zhí)行du -h --max-depth=1,最后發(fā)現(xiàn)mysql的data文件夾占了30G,于是進(jìn)入data文件夾中,發(fā)現(xiàn)里面有很多的mysql-bin.000011的文件,每個文件有1G的大小,
1.1G mysql-bin.000152 1.1G mysql-bin.000153 1.1G mysql-bin.000154這個binlog是mysql用來構(gòu)建復(fù)制時候用的文件。默認(rèn)是不開啟的。如果需要開啟在my.ini文件中寫入log_bin=mysql_bin,重啟服務(wù)。
為了知道m(xù)ysql-bin.000152是存放了上面東西,首先一般bin-log日志文件不能打開查看的,需要用到mysql的工具進(jìn)行。該工具在mysql的bin目錄下。
[mysql]mysqlbinlog mysql-bin.000011 -d db1 > db1.sql執(zhí)行完畢后在當(dāng)前目錄會生成db1.sql的文件,這時可以用vim/vi來打開文件。
打開文件是這個樣子
發(fā)現(xiàn)這些文件中thread_id=363每秒都在執(zhí)行,于是查找mysql中正在進(jìn)行的進(jìn)程。
查看數(shù)據(jù)庫中的進(jìn)程有三種方式:
1.進(jìn)入mysql/bin目錄下輸入mysqladmin processlist;
2.啟動mysql,輸入show processlist;
如果有SUPER權(quán)限,則可以看到全部的線程,否則,只能看到自己發(fā)起的線程(這是指,當(dāng)前對應(yīng)的MySQL帳戶運(yùn)行的線程)。
mysql> show processlist;
+-------+-----------+---------------------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+-----------+---------------------+----------+---------+------+-------+------------------+
| 19161 | test_user | 171.8.216.253:63583 | tbkttest | Sleep | 685 | | NULL |
| 19164 | test_user | 171.8.216.253:63677 | tbkttest | Sleep | 297 | | NULL |
| 19165 | root | localhost | tbkttest | Query | 0 | NULL | show processlist |
| 19166 | root | localhost | NULL | Sleep | 36 | | NULL |
+-------+-----------+---------------------+----------+---------+------+-------+------------------+
4 rows in set (0.00 sec)
3.使用Navicat結(jié)束mysql數(shù)據(jù)庫服務(wù)進(jìn)程
點(diǎn)擊【工具】菜單,選擇【服務(wù)器監(jiān)控】下的【MySql】,此時可以查看mysql進(jìn)程列表。
找到id,db是操作的數(shù)據(jù)庫名。
MySQL bin-log 作用
1.數(shù)據(jù)恢復(fù):如果你的數(shù)據(jù)庫出問題了,而你之前有過備份,那么可以看日志文件,找出是哪個命令導(dǎo)致你的數(shù)據(jù)庫出問題了,想辦法挽回?fù)p失。
2.主從服務(wù)器之間同步數(shù)據(jù):主服務(wù)器上所有的操作都在記錄日志中,從服務(wù)器可以根據(jù)該日志來進(jìn)行,以確保兩個同步。
3.在什么時間會刪除過期日志?
每次進(jìn)行 LOG flush的時會自動刪除過期的日志,那么什么時間才能觸發(fā)log flush,手冊上的解釋為:
自動清理方法1:(修改配置文件和在mysql內(nèi)設(shè)置參數(shù)可無需重啟服務(wù))
vim my.cnf
expire_logs_days = 7 // 表示日志保留7天,超過7天則設(shè)置為過期的
# mysql -u root -p > show binary logs; > show variables like '%log%'; > set global expire_logs_days = 7;
手動清理方法2:(推薦)
如果沒有主從復(fù)制,可以通過下面的命令重置數(shù)據(jù)庫日志,清除之前的日志文件:
reset master
但是如果存在復(fù)制關(guān)系,應(yīng)當(dāng)通過 PURGE 的名來清理 bin-log 日志,語法如下:
# mysql -u root -p
> purge master logs to 'mysql-bin.010’; //清除mysql-bin.010日志
> purge master logs before '2016-02-28 13:00:00'; //清除2016-02-28 13:00:00前的日志
> purge master logs before date_sub(now(), interval 3 day); //清除3天前的bin日志
注意,不要輕易手動去刪除binlog,會導(dǎo)致binlog.index和真實(shí)存在的binlog不匹配,而導(dǎo)致expire_logs_day失效
總結(jié)
以上是生活随笔為你收集整理的两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux使用cmake编译项目,如何使
- 下一篇: mysql时间段以后_mysql时间段查