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