mysql的一些說明

mysql數據備份

數據備份類型

1、完全備份
2、部分備份

  • 增量備份
  • 差異備份
mysql數據備份的方式

1、熱備份:數據在執行備份時,讀寫不影響
2、溫備份:數據庫在執行備份時,讀可以執行,寫不可以執行
3、冷備份:數據庫在備份時,讀寫都不可以執行

mysql支持的存儲引擎

1、myisam:支持溫備份和冷備份
2、innodb:三種備份方式都支持

備份方式

1、物理備份:通過tar、cp等直接打包複製數據庫文件
2、邏輯備份:通過特定的工具,從數據庫中導出數據並另存備份(邏輯備份會丟失數據精度)

備份的數據

1、數據
2、二進制日誌,innodb日誌
3、代碼(存儲過程,存儲函數,觸發器,事件調度器)
4、服務器配置文件

備份工具

1、mysqldum :邏輯備份工具
2、cp,tar 等歸檔複製工具
3、lvm2,snapshot 肌膚熱備,藉助文件系統管理工具進行備份
4、mysqlhotcopy 幾乎冷備,僅支持mysiam
5、xtrabackup

  • 數據量小用第二種方式對數據進行備份
  • 數據量中等用第一中方式,先用mysqldump對數據庫進行完全備份,然後定期被封binary_log達到增量備份
  • 數據量一般而又不過分影響業務進行,使用第三種備份方式
  • 數據量大,可以運用第五種方式對數據進行備份

mysql優化

1、調優的幾個參數

[client] 
port = 3306 
socket = /data/3306/mysql.sock

[mysql] 
no-auto-rehash

[mysqld] 
user = mysql 
port = 3306 
socket = /data/3306/mysql.sock 
basedir = /usr/local/mysql 
datadir = /data/3306/data 
open_files_limit = 10240
back_log = 600
max_connections = 3000
max_connect_errors = 6000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 32M

sort_buffer_size = 2M

Sort_Buffer_Size 是一個connection級參數,在每個connection(session)第一次需要使用這個buffer的時候,一次性分配設置的內存。
Sort_Buffer_Size 並不是越大越好,由於是connection級的參數,過大的設置+高併發可能會耗盡系統內存資源。例如:500個連接將會消耗 500*sort_buffer_size(8M)=4G內存
Sort_Buffer_Size 超過2KB的時候,就會使用mmap() 而不是 malloc() 來進行內存分配,導致效率降低。

join_buffer_size = 2M
thread_cache_size = 300
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 4M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
default_table_type = InnoDB
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 256M
max_heap_table_size = 256M 
long_query_time = 2 
log_long_format 
log-slow-queries=/data/3306/slow-log.log
binlog_cache_size = 4M 
max_binlog_cache_size = 8M 
max_binlog_size = 512M
expire_logs_days = 7 
key_buffer_size = 2048M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G 
myisam_repair_threads = 1
skip-name-resolve 
lower_case_table_names = 1
server-id = 1
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2048M
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 128M
nnodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
wait_timeout = 10
獨享表空間(關閉)

[mysqldump] 
quick 
max_allowed_packet = 32M

[mysqld_safe] 
log-error=/data/3306/mysql_oldboy.err 
pid-file=/data/3306/mysqld.pid

2、軟件優化

  • 選擇合適的存儲引擎
  • 正確使用索引
  • 避免使用select *
  • 字段儘量設置爲NOT NULL

3、硬件優化

  • linux內核用內存開緩存存放數據
  • 增加應用緩存
  • 用ssd代替機械硬盤
  • 用ssd+sata混合存儲

4、架構優化

  • 分表
  • 讀寫分離:讀維護一些機器,寫維護一些機器,二進制文件的主從複製,延遲解決方案,
  • 分庫

5、SQL慢查詢分析,調參數
慢查詢指執行超過一定時間的SQL查詢,語句記錄到慢查詢日誌,方便開發人員看日誌
找問題:

long_quary_time          //定義慢查詢時間
slow_query_log          //設置慢查詢開關
slow_query_log_file     //設置慢查詢日誌文件路徑

設置方法1:命令式

set log_query_time=1
set slow_query_log=on       //設置慢查詢開關
set slow_query_log_file='/data/slow_log'     //設置慢查詢日誌文件路徑

設置方法2:修改配置文件參數

vim /etc/my.cnf
[mysqld]
log_query_time=1
slow_query_log=on       //設置慢查詢開關
slow_query_log_file='/data/slow_log' 
MYSQL的一些狀態查詢
狀態或參數查詢

1、show status;
2、show variables;
show variables like ‘%character%’; //查看mysql字符集
3、show processlist; //查看mysql正在執行的操作

參數修改

1、set global variables=?
例如: set global general_log = on;

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