????主從復制與主主復制怎么自動切換:使用Keepalived
????日常如何導出數據:mysqldump、xtrabackup
-
主庫宕機解決方案(一主多從)
登陸從庫>show processlist\G;
#cat /data/3306/data/master.info
#cat /data/3307/data/master.iinfo
顯示POS數值最大的將升級為主庫
或者利用半同步功能,直接選擇做了實時同步的從庫升為主庫。
授權同步用戶和主庫一樣。
1)確保所有relay log更新完畢
每個從庫執行:>stop slave io_thread;show processlist;
直到看到Has reda all realy log; 表示從庫更新都執行完畢
2)登陸將要升為主的從庫
#mysql -uroot -p'000' -S /data/3306/mysql.sock
>stop slave;
>retset master;
>quit;
3)進入數據庫目錄,刪除master.info relay_log.info
#cd /data/3306/data
#rm -f master.info relay-log.info
檢查授權表 read-only等參數
4)提升為主庫
#vim /data/3306/my.cnf
開啟:log-bin = /data/3306/mysql-bin
注:存在log-slave-updates read-only等一定要注釋
#/data/3306/mysql restart
5)若主庫沒宕機,則需要去主庫拉取binlog補全從庫。
6)其他從庫操作
>stop slave;
>change master to master_host = '192.168.11.6' ;
>start slave;
>show slave status\G;
7)修改程序配置文件從主庫35指向32
一般訪問數據庫用域名,則可直接修改hosts解析。
?
-
數據庫讀寫慢原因
1)在程序設計時沒有索引
2)I/O吞吐量小
3)內存不足
4)查詢數據量過大
-
數據庫同步延遲原因
1)主從庫間的網絡延遲;
優化:提升端口帶寬;
2)從庫數量較多導致復制延遲;
優化:建議從庫數量3-5個為宜;
3)主從兩臺機器負載不一致。由于主從復制是主數據庫上啟動一個I/O線程,從上啟動一個I/O線程和一個SQL線程,當機器負載高時,可能導致其中的任何一個線程出現資源不足;
優化:提升硬件性能;
4)慢sql語句過多;
優化:sql執行時間較長,需優化sql語句;
5)主從復制設計問題;
優化:主從復制單線程,可通過多線程IO方案解決;
6)Max_allowed_packet設置不一致。主庫設置其值大于從庫,當較大的sql語句能在主庫上執行,從庫其值過小,無法執行;
優化:數值設置保持一致;
7)版本不一致;
優化:版本保持一致;
-------------------------------------------------------------
轉載請保留此段聲明,且在文章頁面明顯位置給出原文鏈接,謝謝!
------------------------------------------------------------------------------
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!
------------------------------------------------------------------------------