相關命令的執行都在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