久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中DBA常用命令有哪些

166次閱讀
沒有評論

共計 5115 個字符,預計需要花費 13 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 MySQL 中 DBA 常用命令有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

1.mysql 的遠程連接命令可以遠程導入導出數據  
mysqldump –default-character-set=gb2312 -h355.255.000.00 -uroot -pxxxxxx mydatabase d:\data.sql 
將指定的數據庫導出到一個外部 SQL 文件中去! 
還原命令: 
mysql –default-character-set=gb2312 -h355.255.000.00 -uroot -pxxxxxx mydatabase d:\data.sql 

2. MYSQL 三種升級方法  
安裝辦法:二進制包編譯安裝  
第一種:適用于任何一種存儲引擎。 

1. 下載并安裝好新版本的 MySQL 數據庫,并將其端口改為 3307(避免和舊版本的 3306 沖突),啟動服務。 

2. 在新版本下創建同名數據庫。 

# mysqldump -p3307 -uroot create mysqlsystems_com 

3. 在舊版本下備份該數據庫。 

# mysqldump -p3306 -uroot mysqlsystems_com mysqlsystems_com.bk 

Note: 你也可以加上–opt 選項,這樣可以使用優化方式將你的數據庫導出,減少未知的問題。 

4. 將導出的數據庫備份導入到新版本的 MySQL 數據庫中。 

# mysql -p3307 -uroot mysqlsystems_com mysqlsystems_com.bk 

5. 再將舊版本數據庫中的 data 目錄下的 mysql 數據庫全部覆蓋到新版本中。 

# cp -R /opt/mysql-5.1/data/mysql /opt/mysql-5.4/data(權限庫保持不變) 

Note: 大家也都知道這個默認數據庫的重要性。 

6. 在新版下執行 mysql_upgrade 命令,其實這個命令包含一下三個命令: 

# mysqlcheck –check-upgrade –all-databases –auto-repair 
# mysql_fix_privilege_tables 
# mysqlcheck –all-databases –check-upgrade –fix-db-names –fix-table-names 

Note: 在每一次的升級過程中,mysql_upgrade 這個命令我們都應該去執行,它通過 mysqlcheck 命令幫我們去檢查表是否兼容新版本的數據庫同時 作出修復,還有個很重要的作用就是使用 mysql_fix_privilege_tables 命令去升級權限表。 

7. 關閉舊版本,將新版的數據庫的使用端口改為 3306,重新啟動新版本 MySQL 數據庫。到此,一個簡單環境下的數據庫升級就結束了。 

第二種,同樣適用任何存儲引擎。 

1. 同樣先安裝好新版本的 MySQL。 

2. 在舊版本中,備份數據庫。 

# mkdir /opt/mysqlsystems_bk ; mysqldump -p3306 -uroot –tab=/opt/mysqlsystems_bk mysqlsystems_com 

Note: –tab 選項可以在備份目錄 mysqlsystems_bk 下生成后綴為 *.sql 和 *.txt 的兩類文件;其中,.sql 保存了創建表的 SQL 語句而.txt 保存著原始數據。 

3. 接下來在新版本的數據庫下更新數據。 

# mysqladmin -p3307 -uroot create mysqlsystems_com 

# cat /opt/mysqlsystems_bk/*.sql | mysql -p3307 -uroot mysqlsystems_com (Create Tables) 

# mysqlimport mysqlsystems_com /opt/mysqlsystems_bk/*.txt (Load Data) 

4. 之后的所有步驟與第一種方法的后三步 5、6、7 相同。 

第三種,適用于 MyISAM 存儲引擎,全部是文件間的拷貝。 

1. 安裝。 

2. 從舊版本 mysqlsystems_com 數據庫下將所有.frm、.MYD 和.MYI 文件拷貝到新版本的相同目錄下。 

3. 之后的步驟依然同于第一種的后三步。 

以上就是三種升級 MySQL 的方法,看似沒有出現什么問題,其實,在實際的生產環境中,為會有諸多問題發生,這就需要我們在升級之前充分了解新版本中增加了哪些新功能,進一步分析升級以后這些新特性是否將會對我們原來應用產生影響。 

3. MYSQL 遠程連接不了的解決方案  

有可能是這個用戶權限不夠。查看一下權限表。 

4. MYSQL 忘記密碼解決辦法  

在 windows 下: 
打開命令行窗口,停止 mysql 服務:Net stop mysql 
到 mysql 的安裝路徑啟動 mysql,在 bin 目錄下使用 mysqld-nt.exe 啟動,在命令行窗口執行:mysqld-nt –skip-grant-tables 
然后另外打開一個命入令行窗口,執行 mysql,此時無需輸入密碼即可進入。 
use mysql 
update user set password=password(new_pass) where user= root  
flush privileges; 
exit 
使用任務管理器,找到 mysqld-nt 的進程,結束進程! 
在重新啟動 mysql-nt 服務,就可以用新密碼登錄了。 

在 linux 下: 
如果 MySQL 正在運行,首先殺之:killall -TERM mysqld。 
啟動 MySQL:bin/safe_mysqld –skip-grant-tables  
就可以不需要密碼就進入 MySQL 了。 
然后就是  
use mysql 
update user set password=password(new_pass) where user= root  
flush privileges; 
重新殺 MySQL,用正常方法啟動 MySQL。 

5. 更改 MYSQL 的默認字符集  

法 1、用 SET 語法來指定,不加 GLOBAL 的話就只對本次會話有效  
SET [GLOBAL] character_set_client = utf8; 
SET [GLOBAL] character_set_connection = utf8; 
SET [GLOBAL] character_set_database = utf8; 
SET [GLOBAL] character_set_results = utf8; 
SET [GLOBAL] character_set_server = utf8; 

方法 2、也用 SET 語法,只對本次會話有效  
SET NAMES utf8  

方法 3、)直接修改 my.cnf,增加一行內容,然后重啟 MySQL,使之全局生效  
default-character-set = utf8 

6.MYSQL 慢查詢分析工具:mysqldumpslow 

mysqldumpslow 命令  
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log 
這會輸出記錄次數最多的 10 條 SQL 語句,其中: 

* -s, 是表示按照何種方式排序,c、t、l、r 分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘; 
* -t, 是 top n 的意思,即為返回前面多少條的數據; 
* -g, 后邊可以寫一個正則匹配模式,大小寫不敏感的; 

比如  
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log 
得到返回記錄集最多的 10 個查詢。 
/path/mysqldumpslow -s t -t 10 -g“left join”/database/mysql/slow-log 
得到按照時間排序的前 10 條里面含有左連接的查詢語句。 

查看 mysql 的某個選項  
show variables like‘%VAR_NAME%  
select @@VAR_NAME; 

在 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;) 

看完了這篇文章,相信你對“MySQL 中 DBA 常用命令有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-26發表,共計5115字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 漯河市| 三原县| 申扎县| 楚雄市| 武穴市| 扶绥县| 时尚| 肇东市| 柳河县| 济宁市| 自贡市| 黄平县| 怀远县| 环江| 和龙市| 延长县| 青浦区| 大英县| 黔东| 深泽县| 什邡市| 共和县| 德清县| 大渡口区| 互助| 贵德县| 福泉市| 深水埗区| 依兰县| 台湾省| 环江| 萨嘎县| 翁牛特旗| 天门市| 石首市| 郁南县| 宝鸡市| 乐山市| 交口县| 永年县| 峡江县|