日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql全备份+增量备份笔记总结

發布時間:2023/12/9 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql全备份+增量备份笔记总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

備份基礎知識

冷備(cold backup):需要關mysql服務,讀寫請求均不允許狀態下進行;

溫備(warm backup): 服務在線,但僅支持讀請求,不允許寫請求;

熱備(hot backup):備份的同時,業務不受影響。


這種類型的備份,取決于業務的需求,而不是備份工具

MyISAM不支持熱備,InnoDB支持熱備,但是需要專門的工具


完全備份:full backup,備份全部字符集。

增量備份: incremental backup 上次完全備份或增量備份以來改變了的數據,不能單獨使用,要借助完全備份,備份的頻率取決于數據的更新頻率。

差異備份:differential backup 上次完全備份以來改變了的數據。

建議的恢復策略:

完全+增量+二進制日志

完全+差異+二進制日志



全備份

MyISAM:

mysql -uroot ?-p'123456' -A? -B -F ? –flush-privileges ?–master-data=2?–x -–events | gzip > /opt/x_$(date +%F).sql.gz

InnoDB:

mysqldump ? ?-uroot -p123456 ?--single-transaction ??-A -B -F ?--events?| gzip > /server/backup/x_$(date +%F).sql.gz



--single-transaction????MySIM直接選-x(--lock-all-tables)參數鎖表,InnoDB選擇這個參數來保證備份的一致性。相當于設置一個隔離級別,REPEATABLE READ?,以確保本次會話dump時,不會看到其它會話已經提交的數據。

--master-data[=#]?? ? 自動找到binlog的位置? This causes the binary log position andfilename to be

???如: --master-data=1 ? ? 可以不用刷新binlog了,做增量備份的時候很有用

? ? ?? --master-data=2 ? ?后會加個注釋,好找些

-E, --events??????? Dump events.

-A, --all-databases Dump ?導出所有數據,一般加-B?共用+--events all

-B, ?--databases?? ?指定多個庫名備份? ??直觀看,加上-B參數作用是增加創建數據庫和連接數據庫的命令,生產環境備份必用。

-F, --flush-logs ?? 刷新,切割binlog

補充:上訴兩種備份如果數據庫有存儲過程和觸發器還得加兩個參數:

--triggers ?–routines? --hex-blob, ? 一般公司無這三個參數。

觸發器 ? ? ? 存儲過程 ? 如果你庫中有blob字段,而你又沒加這個參數?,那你的blog大字段數據就會丟失



分庫備份

mysql ?-uroot -p'123456' -e "show databases;" | grep -Evi "Database|infor|perf" | sed -r 's#^([a-z].*$)#mysqldump -uroot-p'123456'? --events?-B ?\1 | gzip > /tmp/logs/\1.sql.gz#g' ? ? ?| bash

-t,--no-create-info ????如果希望只導出表數據

-d, --no-data?????? ????只備份表結構No row information.


報錯

mysqlbinlog:unknownvariable'default-character-setutf8'解決方法

mysqlbinlog ?--no-defaults? ?./mysql-bin.000007 ??


mysql全量導出時碰到如下告警: ? ? ? ? ? ? ? ? ? ? 默認是不備份事件表的,只有加了--events?才會不警告

Warning: Skipping the data of table mysql.event. Specify the --events option explicitly

解決辦法:

--events --ignore-table=mysql.event


ERROR 1046 (3D000) at line 22: No database selected

修改.sql ? 在22行前面加上 ? use ? 庫名字;



恢復

首先恢復全備

mysql ? ?-uroot ?-p123456 ? ?< ?/server/backup/x.sql


多分庫文件恢復

for name in `ls *.sql| sed 's#.sql##g' `; do mysql -uroot -p123456 ?? < ${name}.sql ; done


然后

mysqladmin -uroot -p123456 flush-log ? ? ? //切割日志


匯總所有的binlog,?把錯誤的刪除

剩下的轉成sql語句

cp mysql-bin.000016? /server/backup/

mysqlbinlog? --no-defaults? -d user mysql-bin.000016? ?> bin.sql

mysql? -uroot -p123456? < bin.sql

執行 | mysql

根據binlog位置和時間回復

mysqlbinlog?--start-postion=107 ?--stop-position=1000 ? ?-d ? 庫名 ? ? ? 二進制文件 ? ? ? ? ?

mysqlbinlog?--start-datetime='2013-09-10?00:00:00'?--stop-datetime='2013-09-10?01:01:01'?-d ? 庫名?二進制文件

egrep -v "#|\*|--|^$" ? 可以過濾查看備份內容

rsync配合定時任務

rsync -avz ? /data/3306/mysql-bin.000* ? rsync_backup@10.0.0.18::backup ?--password-file=/etc/rsync.passsword




一主多從,一個從 做備份

vim ?.my.cnf ? ? ? ?//設置登陸

[client]

user=root

host=localhost

password=123456

mysql> show? variables? like "character_set%"; ? //查看字符集

[client] ? ? ? ? ? ? ? ? ? //設置字符集

default-character-set=utf8

[mysqld]

character-set-server=utf8 ? ? //5.5

default-character-set=utf8 ? //5.1

[mysql]

default-character-set=utf8


開啟bin-log,存在一份全備份,及所有增量binlog文件備份

mysql> show ?full ? processlist; //連接情況

mysql>?show variables?like "%log_bin%";

+---------------------------------+-------+

| Variable_name? ? ? ? ? ? ? ? ? ?| Value |

+---------------------------------+-------+

| log_bin? ? ? ? ? ? ? ? ? ? ? ? ?| OFF? ?|

| log_bin_trust_function_creators | OFF? ?|

| sql_log_bin? ? ? ? ? ? ? ? ? ? ?| ON? ? |

+---------------------------------+-------+


mysql> flush? table with read lock; ? //讀鎖

mysql> unlock? tables; ?//解鎖

replicate_wild_ignore_table=mysql.% ? ? //可以加通配符

--skip-name-resolve ? ?選項啟動mysqld來禁用DNS主機名查找

slave-skip-errors = 1032,1062?? //排除1032,1062的保持。

lower_case_table_names=1??//讓MySQL不區分大小寫! ?//慎用,會影響原來的表名字

[mysqld]

read-only??//只讀,root不受限

主從不同步


slave 開啟從庫記錄binlog ? ? ? ? ? ? ? 級聯同步 ? ? ? ?當做數據庫備份

log-bin = /data/3307/mysql-bin

log-slave-updates ?//這個參數用來配置從服務器的更新是否寫入二進制日志,這個選項默認是不打開的,但是,如果這個從服務器B是服務器A的從服務器,同時還作為服務器C的主服務器,那么就需要開發這個選項,這樣它的從服務器C才能獲得它的二進制日志進行同步操作

expire_logs_days = 7 ? ? //保留7天


# mysql -e "show slave status\G;" | egrep 'Slave_IO_Running|Slave_SQL_Running'? | awk '{print $2}' | egrep 'Yes' | wc -l ? ? ? ? ? //監控狀態


mysql數據庫優化

  • 硬件優化 ? 物理機

  • 軟件優化 ? 系統 ?mysql編譯

  • my.cnf參數優化 ? ? ? //SHOW ?GLOBAL ?STATUS\G; ? ? ? ? ? ? ? ? 工具mysqlreport

  • SQL語句的優化 ? ? ? 索引優化

  • 架構的優化

  • 流程制度安全優化 ? ? 人的流程 ?測試流程 ? ? ?客戶端phpmyadmin











  • 本文轉自 295631788 51CTO博客,原文鏈接:http://blog.51cto.com/hequan/1775333,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的mysql全备份+增量备份笔记总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。