MySql 數據備份

相關命令的執行都在windows服務器下,且工作目錄就是mysql server的bin目錄下.

1、mysqldump 全備份

mysqldump -h127.0.0.1 -u用戶名 -p"密碼" 
數據庫名稱 有表的話寫表名稱 
--single-transaction 
--master-data=2 
--flush-logs
>C:\Users\Administrator\Desktop\mysqldump\dh_log.sql

-h後面跟的是需要全備份的遠程mysql服務器ip地址

-u後面跟的是登錄的用戶名

-p後面跟的是登錄密碼注意要用雙引號括起來

接着後面寫需要備份的數據庫名稱,如果需要備份某個表,則在後面再寫表名稱即可

--single-transaction  備份時指定不鎖定表

--master-data 備份時,會向備份文件寫入此次操作備份到哪個binlog文件的哪個position,因爲在備份期間數據庫還在運行,這部分數據只能通過binlog來恢復.

--flush-logs 執行備份前切斷當前binlog和數據庫的聯繫,在備份期間寫入的數據都會寫入新的binlog文件中,方便後面通過binlog恢復數據.

>C:\Users\Administrator\Desktop\mysqldump\dh_log.sql  指定sql的生成路徑.

 

2、恢復備份文件

mysql -uroot -p"root" 數據庫名稱<備份文件的路徑

注意:如果是第一次同步,需要新建數據庫

(1)、優化

2.1、減少數據庫操作

關閉二進制日誌:去掉log-bin配置選項。

減小事務提交後日志刷新頻率:innodb_flush_log_at_trx_commit=0每秒1次。

2.2、增加日誌尺寸

較大的事務日誌緩衝區,減少寫入日誌的I/O操作:innodb_log_buffer_size

較大的日誌文件,減少檢查點和寫入I/O:innodb_log_file_size

2.3、增加寫入線程

InnoDB引擎寫操作的I/O線程數:innodb_write_io_threads(不要超過CPU核心數)

2.4、增加緩存池

innodb_buffer_pool_size

innodb_buffer_pool_chunk_size

innodb_buffer_pool_instances

2.5、關閉雙寫緩衝區(doublewrite)

啓動MySQL示例時,使用--innodb-doublewrite=0選項參數。

 

3、通過gitbash(因爲是windows環境)查看備份節點終止的binlogfile和position

grep -i "CHANGE MASTER" dh_log.sql

輸出如下:

-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000064', MASTER_LOG_POS=155;

 

4、常見錯誤

ERROR 2006 (HY000) at line XX: MySQL server has gone away

解決方案

修改my.ini以下配置

max_allowed_packet=32M

 

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