Linux運維必會的100道MySql面試題之(四)

接上一篇:Linux運維必會的100道MySql面試題之(三)

020:如何開啓從庫的binlog功能?

修改配置文件加上下面的配置

log_bin=slave-bin
log_bin_index=slave-bin.index

需要重啓服務

021:MySQL如何實現雙向互爲主從複製,並說明應用場景?

雙向同步主要應用於解決單一主庫寫的壓力,具體配置如下

主庫配置

[mysqld]
auto_increment_increment  = 2  #起始ID
auto_increment_offset  = 1  #ID自增間隔
log-slave-updates   

從庫配置

[mysqld]
auto_increment_increment  = 2  #起始ID
auto_increment_offset  = 2  #ID自增間隔
log-slave-updates      主從庫服務器都需要重啓mysql服務

022:MySQL如何實現級聯同步,並說明應用場景?

級聯同步主要應用在從庫需要做爲其它數據庫的主庫

在需要做級聯同步的數據庫配置文件增加下面的配置即可

log_bin=slave-bin
log_bin_index=slave-bin.index

023:MySQL主從複製故障如何解決?

1、登陸從庫,執行stop slave;停止主從同步

然後set global sql_slave_skip_counter = 1;跳過一步錯誤

最後執行 start slave;並查看主從同步狀態

2、需要重新進行主從同步操作

進入主庫,進行全備數據庫並刷新binlog,查看主庫此的狀態

恢復全備文件到從庫,然後執行change master

開啓主從同步start slave;並查看主從同步狀態

024:如何監控主從複製是否故障?

mysql -uroot -ppassowrd -e "show slave status\G" |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes

通過判斷Yes的個數來監控主從複製狀態,正常情況等於2

025:MySQL數據庫如何實現讀寫分離?

1、通過開發程序實現

2、通過其它工具實現(mmm、mycat等)

026:生產一主多從從庫宕機,如何手工恢復?

1、停止與主庫的連接

2、 修復好從庫數據庫

3、 然後重新操作主庫同步

027:生產一主多從主庫宕機,如何手工恢復?

1、登陸各個從庫停止同步,並查看誰的數據最新,將它設置爲新主庫讓其它從庫同步其數據

2、修復好主庫之後,重新操作主從同步的步驟就可以了

#需要注意的新的主庫如果之前是隻讀,需要關閉此功能讓其可寫
#需要在新從庫創建與之前主庫相同的同步的用戶與權限
#其它從庫執行change master to master_port=新主庫的端口,start slave

028:工作中遇到過哪些數據庫故障,請描述2個例子?
1、開發使用root用戶在從庫上寫入數據造成主從數據不一致,並且前端沒有展示需要修改的內容(仍舊是老數據)

#沒有控制好用戶權限和從庫沒有設置只讀

2、內網測試環境服務器突然斷電造成主從同步故障

029:MySQL出現複製延遲有哪些原因?如何解決?

1、需要同步的從庫數據太多

2、從庫的硬件資源較差,需要提升

3、網絡問題,需要提升網絡帶寬

4、主庫的數據寫入量較大,需要優配置和硬件資源

5、sql語句執行過長導致,需要優化

030:給出企業生產大型MySQL集羣架構可行備份方案?

1、雙主多從,主從同步的架構,然後實行某個從庫專業做爲備份服務器

2、編寫腳本實行分庫分表進行備份,並加入定時任務

3、最終將備份服務推送至內網專業服務器,數據庫服務器本地保留一週

4、備份服務器根據實際情況來保留備份數據(一般30天)

031:什麼是數據庫事務,事務有哪些特性?企業如何選擇?

數據庫事務是指邏輯上的一組sql語句,組成這組操作的各個語句,執行時要麼成功,要麼失敗

特點:具有原子性、隔離性、持久性、一致性

032:請解釋全備、增備、冷備、熱備概念及企業實踐經驗?

全備:數據庫所有數據的一次完整備份,也就是備份當前數據庫的所有數據

增備:就在上次備份的基礎上備份到現在所有新增的數據

冷備:停止服務的基礎上進行備份操作

熱備:實行在線進行備份操作,不影響數據庫的正常運行

全備在企業中基本上是每週或天一次,其它時間是進行增量備份

熱備使用的情況是有兩臺數據庫在同時提供服務的情況,針對歸檔模式的數據庫

冷備使用情況在企業初期,數據量不大且服務器數量不多,可能會執行某些庫、表結構等重大操作時

033:開發有一堆數據發給dba執行,DBA執行需注意什麼?

1、需要注意語句是否有格式上的錯誤,執行會出錯導致過程中斷

2、還需要注意語句的執行時間是否過長,是否會對服務器負載產生壓力影響實際生產

034:請描述MySQL裏中文數據亂碼原理,如何防止亂碼?

服務器系統、數據庫、客戶端三方字符集不一致導致,需要統一字符

035:企業生產MySQL如何優化(請多角度描述)?

1、提升服務器硬件資源與網絡帶寬

2、優化mysql服務配置文件

3、開啓慢查詢日誌然後分析問題所在

036:如何批量更改數據庫字符集?

通過mysqldump命令備份出一個sql文件,再使用sed命令替換

或者執行下面的腳本進行修改

#!/bin/sh

user=root

passwd=123456

cmd="mysql -u$user -p$passwd "

dump="mysqldump -u$user -p$passwd"

for database in `$cmd -e "show databases;"|sed '1,2d'|egrep -v "mysql|performance_schema"`

do

 for tables in `dump -e "show tables from $databses;"|sed '1d'`

 do

  $cmd "alter table $database.$tables engine = MyISAm;"

  done

done

037:如何批量更改數據庫表的引擎?

通過mysqldump命令備份出一個sql文件,再使用sed命令替換sed -i 's/GBK/UTF8/g'

038:網站打開慢,如是數據庫慢導致,如何排查並解決?

可以使用top free 等命令分析系統性能等方面的問題

如是因爲數據庫的原因造成的,就需要查看慢查詢日誌去查找並分析問題所在

039:如何調整生產線中MySQL數據庫的字符集?

1、首先導出庫的表結構 -d 只導出表結構,然後批量替換

2、導出庫中的所有數據(在不產生新數據的前提下)

3、然後全局替換set names = xxxxx

4、刪除原有庫與表,並新創建出來,再導入建庫與建表語句與所有數據

點擊關注 民工哥技術之路 微信公衆號對話框回覆關鍵字:1024 可以獲取一份最新整理的技術乾貨:包括系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、架構師綜合教程、架構師實戰項目、大數據、Docker容器、ELK Stack、機器學習、BAT面試精講視頻等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章