11.25
事物隔離級別
事物日誌redo undo
事物鎖 begin; update
事物日誌性能優化 innodb_flush_log_at_trx_commit=0|1|2|3
innodb事務日誌相關配置; show variables like '%innodb_log%';
通用日誌
通用日誌:記錄對數據庫的通用操做,包括錯誤的SQL語句
通用日誌能夠保存在:file(默認值)或 table
通用日誌相關設置
general_log=ON|OFF
general_log_file=HOSTNAME.log
log_output=TABLE|FILE|NONE
慢查詢(重點)
slow_query_log=on|off show profile for query 2;
long_query_time=N;
set global log_queries_not_using_indexes=ON;
二進制日誌(重點)
記錄致使數據改變或潛在致使數據改變的SQL語句
記錄已提交的日誌
不依賴於存儲引擎類型
功能:經過「重放」日誌文件中的事件來生成數據副本
注意:建議二進制日誌和數據文件分開存放
二進制日誌記錄三種格式;
基於「語句」記錄:statement,記錄語句,默認模式
基於「行」記錄:row,記錄數據,日誌量較大 (可恢復數據)
混合模式:mixed, 讓系統自行斷定該基於哪一種方式進行
二進制日誌只記錄已提交的事物 至關於離線日誌
還原數據 臨時關閉二進制日誌 set sqllog
顯示二進制記錄文件 show binary logs
查看使用中的二進制文件 show master status
查看二進制文件指定內容 show binlog events in 'mysql-bin.000010';
刪除000003之前的二進制文件 purge binary logs to 'mysql-bin.000003';
建立一個新的二進制文件 flush logs;php
數據庫備份還原(重點)
徹底備份
增量備份:僅備份最近一次徹底備份或增量備份(若是存在增量)以來變化的數據,備份較
快,還原複雜
差別備份:僅備份最近一次徹底備份以來變化的數據,備份較慢,還原簡單
前面必須有個徹底備份
注意:二進制日誌文件不該該與數據文件放在同一磁盤 mysql
冷、溫、熱備份
冷備:讀寫操做均不可進行
溫備:讀操做可執行;但寫操做不可執行
熱備:讀寫操做都可執行
MyISAM:溫備,不支持熱備 (不支持事務)
InnoDB:都支持 (不包括DDL語句)sql
物理和邏輯備份
物理備份:直接複製數據文件進行備份,與存儲引擎有關,佔用較多的空間,速度快
邏輯備份:從數據庫中「導出」數據另存而進行的備份,與存儲引擎無關,佔用空間少,速度慢,可
能丟失精度數據庫
備份什麼
數據
二進制日誌、InnoDB的事務日誌
程序代碼(存儲過程、函數、觸發器、事件調度器)
服務器的配置文件性能優化
備份工具
cp, tar等複製歸檔工具:物理備份工具,適用全部存儲引擎;只支持冷備;徹底和部分備份
LVM的快照:先加鎖,作快照後解鎖,幾乎熱備;藉助文件系統工具進行備份
mysqldump:邏輯備份工具,適用全部存儲引擎,溫備;支持徹底或部分備份;對InnoDB存儲
引擎支持熱備,結合binlog的增量備份
xtrabackup:由Percona提供支持對InnoDB作熱備(物理備份)的工具,支持徹底備份、增量備份
MariaDB Backup: 從MariaDB 10.1.26開始集成,基於Percona XtraBackup 2.3.8實現
mysqlbackup:熱備份, MySQL Enterprise Edition組件
mysqlhotcopy:PERL 語言實現,幾乎冷備,僅適用於MyISAM存儲引擎,使用LOCK TABLES、
FLUSH TABLES和cp或scp來快速備份數據庫
重點mysqldump xtrabackup服務器
基於LVM備份
1 請求鎖定全部表
mysql>flush tables with read lock;
2 記錄二進制日誌文件及事物位置
mysql>flush logs; mysql>show master status;
mysql-e 'show master status'>/path/to/somefile
3 建立快照
lvcreate -L # -s -p r -n name /dev/vg_name/lvname
4 釋放鎖
mysql>unlock tables;
(5) 掛載快照卷,執行數據備份(6) 備份完成後,刪除快照卷(7) 制定好策略,經過原卷備份二進制日誌
邏輯備份工具 mysqldump,mydumper,phpmyadmin
Schema和數據存儲在一塊兒、巨大的SQL語句、單個巨大的備份文件
mysqldump備份工具
mysqldump database [tables] mysqldump -B DB1[DB2 DB3...] mysqldump -A
分庫備份並壓縮
利用二進制日誌還原數據庫
二進制日誌獨立存放
徹底備份,並記錄備份的二進制位置
mysqldump -A --master-data=2 | gzip > /backup/alldate +%F
.sql.gzide
11.27
mysql的mylsam相關備份
-x
innoDB相關備份
mysqldump -uroot -A -F -E -R
備份
mysqldump -A -F --single-transetciong --master -data=2 |gzip > /backup/all -`date +%F·.sql.gz
還原
中止數據庫訪問(加鎖) 從徹底備份中,找到二進制位置
grep '-- change master to' /backup函數
xtrabackup用法
1 備份;對數據庫作徹底或增量備份 2 預製板;還原前,先對備份的數據,整理至一個臨時目錄
3 還原(複製);複製會數據庫目錄中
新版xtrabackup備份及還原
1 徹底備份;xtrabackup -uroot -p123 --backup --target-dir=/backup/base
2 修改數據
3 第一次增量備份 xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base
4 第二次修改數據
5 第二次增量 xtrabackup --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1
6 scp -r /backup/* 目標主機;/backup/
#備份過程生成三個備份目錄
/backup/{base,inc1;inc2}工具
還原過程
mysql集羣
分區性能
實現mysql主從複製配置
啓動二進制文件
[mysqld]配置一個惟一ID號server_id=#
建立有複製權限的用戶賬號
grant replication slave on . to 'repluser'@HOST' INDENTIFIED BY 'replpas''
節點配置 1啓動中繼日誌 [mysqld] server_id=# read_only=on relay_log=relay-log
relay_log_index=relay-log.index
2 使用複製權限的用戶賬號鏈接至主服務器,並啓動複製線程
CHANGE MASTER TO MASTER_HOST='host', MASTER_USER='repluser',
MASTER_PASSWORD='replpass', MASTER_LOG_FILE=' mariadb-bin.xxxxxx',
MASTER_LOG_POS=#;
START SLAVE [IO_THREAD|SQL_THREAD];
主從複製相關 限制從服務器爲只讀 read_only=ON 對super權限用戶無效
2 在從節點清楚信息 如下都須要先STOP SLAVE
RESET SLAVE 從服務器清楚master.info relay-log.info,
11.29
主從複製
mysql複製加密
主服務器開啓SSL,配置證書私鑰路徑
[mysqld]
log-bin
server_id=1
ssl
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
ssl-cert=/etc/my.cnf.d/ssl/master.crt
ssl-key=/etc/my.cnf.d/ssl/master.key
須要修改權限chown -R mysql.mysql
證書生成openssl req -new -x509 -key cakey.pem --out cacert.pem -days 3650
GTID
change master to
mycat
keepalived+mycat+mysql keepalived+LVS+mycat+mysql
schema.xml server.xml
proxysql
slave節點須要設置read only=1 端口6033(對外服務) 6032
mysql高可用解決方案 MMM MHA 重點Galera Cluster