mysql dba管理_MySQL DBA 管理 常用 命令

本文介绍了在Linux系统中,当MySQL数据库出现压力时,如何通过命令行工具进行问题排查,包括查看当前运行的SQL、排序长时间运行的查询以及检查I/O等待情况。此外,还详细阐述了MySQL复制同步的常见操作,如更改主库信息、数据导出、权限授予、解决同步问题的方法,以及如何通过tcpdump监控3306端口通信内容。
摘要由CSDN通过智能技术生成

在Linux下管理MySQL數據庫的時候總有一些很緊急的情況,發現數據庫突然變得壓力很大了,那么作為一個DBA,也許需要一些常用的手段或者說命令去分析問題出現在哪里,然后解決:

數據庫突然產生壓力時查看正在查詢的SQL:(如果這里內容太多表示並發執行的SQL過多,或許數據庫堵塞了,會越來越慢,正常情況下這里應該很少有東西的,也就是連接都在Sleep狀態)

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e "show full processlist" | grep -v Sleep

正在運行的SQL太多了,看不過來,那需要排序了,看持續執行時間最長的那些SQL:

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e "show full processlist" | grep -v Sleep | sort -k6rn >sort.tmp

如果發現IOWait很高,請查看臨時表的生成情況,特別是disk tmp table:

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e "show global status like '%tmp%'"

通過這樣一些辦法可以查看數據庫都在忙什么,那些忙的SQL又具體在哪一個步驟上卡住了,是在創建磁盤臨時文件、Sending Data、statistics?依照不同的原因來解決問題

---------------------------------------------------------------

關於Mysql Replication日常管理,重做,問題分析時常用的辦法:

重做Slave,或者Master變化等等,需要將Slave與新的Master同步:

change master to master_host=IP,master_user='replication userName',master

_password='replication Passwrod',master_log_file='log-bin.000001',master_log_pos=0;

導出數據成SQL文本,慎用,根據你的DB大小會鎖表,導致堵塞其他訪問:

nohup /usr/local/mysql/bin/mysqldump --database DATABASEName -uUserName -pPassWord --lock-all-tables -F >DATA20070519.sql &

-F后會刷新Master Log這樣配合上面的Change Master可以讓Slave進行同步

只導出數據庫的結構(沒有任何內容)

/usr/local/mysql/bin/mysqldump -d DATABASEName -uUserName -pPassWord >DATA20070519.structure

只導出數據庫的數據(沒有創建表結構的語句等等)

/usr/local/mysql/bin/mysqldump -t DATABASEName -uUserName -pPassWord >DATA20070519.data

同步的時候出現問題(或者其他問題)了,根據同步出現問題的位置(偏移量),查看Binlog的具體內容

/usr/local/mysql/bin/mysqlbinlog binlogFileName --start-position=偏移量

呵呵,我們碰到過Master執行的SQL到了Slave會報語法錯誤,夠詭異吧!不過就是這樣查到了原因:如果通過存儲過程將bit的內容改為1就會出現這樣的問題,后來將bit改為tinyint(1)就好了

授權給某一台Slave擁有復制的權限:

grant replication slave on *.* to 用戶名@IP identified by '密碼';

查看Slave狀態:

Show slave status \G

查看Master狀態:

Show master status;

重置Slave(慎用)

reset slave;

Slave出現問題了,先跳過這一條語句(請確認所要跳過的具體內容不會影響后面的同步,確認方法查看Binlog文件):

set global sql_slave_skip_counter=1; (記得先暫停Slave:stop slave; 然后重啟Slave:start slave;)

-----------------------------------------------

純粹Linux相關的:

tcpdump -A "dst port 3306" 查看3306端口的通信具體內容 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值