程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL DBA 經常使用手冊小結

MySQL DBA 經常使用手冊小結

編輯:MySQL綜合教程

MySQL DBA 經常使用手冊小結。本站提示廣大學習愛好者:(MySQL DBA 經常使用手冊小結)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL DBA 經常使用手冊小結正文


1.mysql的長途銜接敕令可以長途導入導出數據
mysqldump --default-character-set=gb2312 -h255.255.000.00 -uroot -pxxxxxx mydatabase>d:\data.sql
將指定的數據庫導出到一個內部SQL文件中去!
復原敕令:
mysql --default-character-set=gb2312 -h255.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;)

———————————————–
純潔Linux相干的:
tcpdump -A “dst port 3306″ 檢查3306端口的通訊詳細內容
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved