標籤:
1、Slave_SQL_Running:No
原因:
1.程式可能在slave上進行了寫操作
2.也可能是slave機器重起後,交易回復造成的.
解決辦法一:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
解決辦法二:
首先停掉Slave服務:slave stop
到主伺服器上查看主機狀態:
記錄File和Position對應的值
進入master
mysql> show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 | | |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
然後到slave伺服器上執行手動同步:
mysql> change master to
> master_host=‘master_ip‘,
> master_user=‘user‘,
> master_password=‘pwd‘,
> master_port=3306,
> master_log_file=localhost-bin.000094‘,
> master_log_pos=33622483 ;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
........
Master_Log_File: localhost-bin.000094
Read_Master_Log_Pos: 33768775
Relay_Log_File: localhost-relay-bin.000537
Relay_Log_Pos: 1094034
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
手動同步需要停止master的寫操作!
2、Slave failed to initialize relay log info structure from the repository
在my.cnf設定檔中添加如下項:
relay_log = /opt/mysql/logs/mysql-relay-bin
重啟mysql執行個體使其生效。
3、ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
解決辦法:
1.進入MySQL資料庫預設的資料庫儲存目錄:
/usr/local/mysql/var
這個目錄根據實際情況而定,使用不同的安裝方式,或是編譯指定目錄不同,這個目錄也不一定相同,但只要找到資料庫的儲存目錄就好。
2.刪除以下兩個檔案:
master.info
relay-log.info
3.登陸資料庫後,執行:
start slave;
返回如下資訊:
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql>
這樣就說明問題已經解決了。
4、Starting MySQL..The server quit without updating PID file
解決辦法:
1.可能是/usr/local/mysql/data/rekfan.pid檔案沒有寫的許可權
解決方案 :給予許可權,執行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然後重新啟動mysqld!
2.可能進程裡已經存在mysql進程
解決方案:用命令“ps -ef|grep mysqld”查看是否有mysqld進程,如果有使用“kill -9 進程號”殺死,然後重新啟動mysqld!
3.可能是第二次在機器上安裝mysql,有殘餘資料影響了服務的啟動。
解決方案:去mysql的資料目錄/data看看,如果存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍首了。
4.mysql在啟動時沒有指定設定檔時會使用/etc/my.cnf設定檔,請開啟這個檔案查看在[mysqld]節下有沒有指定資料目錄(datadir)。
解決方案:請在[mysqld]下設定這一行:datadir = /usr/local/mysql/data
5.skip-federated欄位問題
解決方案:檢查一下/etc/my.cnf檔案中有沒有沒被注釋掉的skip-federated欄位,如果有就立即注釋掉吧。
6.錯誤記錄檔目錄不存在
解決方案:使用“chown” “chmod”命令賦予mysql所有者及許可權
7.selinux惹的禍,如果是centos系統,預設會開啟selinux
解決方案:關閉它,開啟/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled後存檔退出重啟機器試試。
但是沒有解決,最後直接給/usr/local/mysql/data 目錄 chmod 777 -R /usr/local/myql/data 問題解決 應該是 許可權問題,不能產生localhost.localdomain.pid 檔案
8.修改了機器名,報了個 Starting MySQL..The server quit without updating PID file (/opt/mysql/data/xxx.pid).
xxx為新的機器名。
進入mysql/data目錄發現.pid 檔案發現本地的是 localhost.pid 於是重新命名為xxx.pid 啟動就ok了
5、設定檔
mysql設定檔為my.cnf,它所在位置根據安裝時設定的。
當mysqld服務啟動的時候,預設會按一定的順序讀取設定檔的。
1
2
3
[[email protected] ~]# /opt/mysql/libexec/mysqld --verbose --help
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/mysql/etc/my.cnf ~/.my.cnf
可以發現,系統預設是按/etc/my.cnf-----/etc/mysql/my.cnf----/usr/local/mysql/my.cnf的順序讀取設定檔的,當有多個設定檔時,mysql會以讀取到的最後一個設定檔中的參數為準。
常用的配置參數有:
1
port = 3306
mysqld服務運行時的連接埠號碼,預設為3306
1
socket = /tmp/mysql.sock
socket檔案是linux/unix系統特有的,使用者在該環境下的用戶端串連可以不通過tcp/ip網路,而直接使用socket檔案串連
1
back_log = 300
該值為設定檔mysql暫時停止回應新的請求前,短時間內有多少個請求可以存在堆棧內,如果系統在短時間內有很多的串連,應該增大該值,該值最好設定小於512的整數
1
skip-networking
不在tcp/ip連接埠上進行監聽,所有的串連都是通過本地的socket檔案串連,這樣可以提高安全性,確定是不能通過網路連接資料庫。
1
skip-locking
避免mysql的外部鎖定,增強穩定性
1
skip-name-resolve
避免mysql對外部的串連進行DNS解析,若使用此設定,那麼遠程主機串連時只能使用ip,而不能使用網域名稱
1
max_connections = 3000
指定mysql服務所允許的最大串連進程數,
1
max_connect_errors = 1000
每個主機串連允許異常中斷的次數,當超過該次數mysql伺服器將禁止該主機的串連請求,直到mysql服務重啟,或者flushhosts命令清空host的相關資訊
1
table_cache = 614k
表的高速緩衝區的大小,當mysql訪問一個表時,如果mysql表緩衝區還有空間,那麼這個表就會被開啟通放入高速緩衝區,好處是可以更快速的訪問表中的內容。
如果open_tables和opened_tables的值接近該值,那麼久該增加該值的大小
1
max_allowed_packet = 4M
設定在網路傳輸中一次可以傳輸訊息的最大值,系統預設為1M,最大可以是1G
1
sort_buffer_size = 16M
排序緩衝區用來處理類似orderby以及groupby隊列所引起的排序,系統預設大小為2M,該參數對應分配記憶體是每個串連獨佔的,若有100個串連,實際分配的排序緩衝區大小為6*100;推薦設定為6M-8M
1
join_buffer_size 8M
聯集查詢操作所使用的緩衝區大小。
1
thread_cache_size = 64
設定threadcache池中可以緩衝連接線程的最大數量,預設為0,該值表示可以重新利用儲存在緩衝中線程的數量,當中斷連線時若緩衝中還有空間,那麼用戶端的線程將被放到緩衝中,如果線程重新被請求,那麼請求將從緩衝中讀取,若果緩衝中是空的或者是新的請求,那麼線程將被重新建立。設定規律為:1G記憶體設定為8,2G記憶體設定為16,4G以上設定為64
1
query_cache_size = 64M
指定mysql查詢緩衝區的大小,用來緩衝select的結果,並在下一次同樣查詢的時候不再執行查詢而直接返回結果,根據Qcache_lowmem_prunes的大小,來查看當前的負載是否足夠高
1
query_cache_limit = 4M
只有小於該值的結果才被緩衝,放置一個極大的結果將其他所有的查詢結果都覆蓋
1
tmp_table_size 256M
記憶體暫存資料表的大小,如果超過該值,會將暫存資料表寫入磁碟
1
default_storage_engine = MYISAM
建立表時預設使用的儲存引擎
1
log-bin=mysql-bin
開啟二進位日誌功能
1
key_buffer_size = 384M
指定索引緩衝的大小,記憶體為4G時刻設定為256M或384M
1
read_buffer_size = 8M
用來做MYISAM表全表掃描的緩衝大小
。。。。。。。。。
常用配置執行個體
[client]
default-character-set = utf8
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /opt/mysql
datadir = /opt/mysql/var
log-error = /opt/mysql/var/mysql-error.log
pid-file = /opt/mysql/var/mysql.pid
log_slave_updates = 1
log-bin = /opt/mysql/var/mysql-bin
binlog_format = mixed
binlog_cache_size = 4M
max_binlog_cache_size = 8M
max_binlog_size = 1G
expire_logs_days = 90
key_buffer_size = 384M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
join_buffer_size = 2M
thread_cache_size = 8
query_cache_size = 32M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
thread_concurrency = 32
table_cache = 614
table_open_cache = 512
open_files_limit = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 16M
default-storage-engine = MYISAM
thread_stack = 192k
transaction_isolation = READ-COMMITTED
tmp_table_size = 256M
max_heap_table_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
long_query_time = 2
slow_query_log
slow_query_log_file = /opt/mysql/var/slow.log
skip-name-resolve
skip-locking
skip-networking
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_aoncurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allow_packet = 64M
[mysql]
no-auto-rehash
safr-updates
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
[mysqldump]
quick
max_allow_packet = 64M
[mysql]
no-auto-rehash
safe-updates
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
mysql問題匯總