mysql 修改单表导入大小_MySQL更改大库大表存储引擎方案
一. 概述
檢查庫中myisam的表, sql如下:
SELECT * FROM `tables` WHERE table_schema = 'UAR_STATISTIC' AND ENGINE = 'MyISAM';
由于數據庫UAR_STATISTIC有大部分表存儲引擎是myisam, 部分表存儲引擎是innodb, 需要將myisam引擎更改為innodb, 更改思路如下:
導出表結構sql
手動更改表結構sql, 將myisam改為innodb
導出表數據sql
刪除原始數據庫
導入表結構
導入表數據
其他庫的myisam表很少, 使用alter語句更改即可,
二. 測試環境
主庫 10.101.67.15
從庫 10.101.67.13 10.101.67.14 10.10.32.20
MySQL版本 5.7.11
注意: 備份和恢復期間, 需要將后端服務停掉
三. 測試前服務器狀態
free –m
top
iostat –d –k 1
io –d –k –x 1 4
mysql配置
server-id=13
max_allowed_packet = 1024M
max_connections=5000
interactive_timeout=28800
wait_timeout=28800
log_warnings=1
long_query_time=1
slow_query_log=1
expire_logs_days=15
user=uar
四. 備份數據庫
備份表結構腳本并更改sql文件
/usr/local/mysql/bin/mysqldump -h'10.10.32.26' -uuar_db_user -p'xxx' -B
UAR_STATISTIC --no-data --set-gtid-purged=OFF > /root/db/table_stru.sql &
sed -i 's/MyISAM/INNODB/g' table_stru.sql
備份表數據命令(花費時間再6分鐘左右)
/usr/local/mysql/bin/mysqldump -h'10.10.32.26' -uuar_db_user -p'xxx' -B
UAR_STATISTIC --no-create-info --no-create-db > /root/db/table_data.sql &
五. 刪除原始數據庫
drop database UAR_STATISTIC;
六. 導入表結構和數據
導入表結構
/usr/local/mysql/bin/mysql -uroot –pxxx -e'source /root/db/table_stru.sql'
>> stru.log
大約20s執行完成
導入表數據
/usr/local/mysql/bin/mysql -uroot -pxxx -e'source /root/db/table_data.sql'
>> /root/db/data.log &
記錄服務器性能
top
記錄磁盤性能(主庫)
iostat -k -d 2 4
iostat -k -d -x 2 4
du -sh /usr/local/mysql/data/UAR_STATISTIC/
mysql> show processlist\G;
1. row
Id: 4
User: repl
Host: node1:9519
db: NULL
Command: Binlog Dump
Time: 1027
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
2. row
Id: 5
User: repl
Host: node2:47596
db: NULL
Command: Binlog Dump
Time: 1021
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
3. row
Id: 6
User: repl
Host: BD-APP-07:39140
db: NULL
Command: Binlog Dump
Time: 1016
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
4. row
Id: 12
User: root
Host: localhost
db: UAR_STATISTIC
Command: Query
Time: 0
State: update
Info: INSERT INTO \`app_at_appv_dev_day\` VALUES
('UAR-000184_358','v1.9.36','HTC+M8Et',20170816,15,1,2,103.
記錄執行時間
start_time: Wed Aug 1 09:50:02 CST 2018
end_time: Wed Aug 1 23:24:01 CST 2018
sql文件大小: 15G SQL
備份數據時間: 6分鐘
導入數據花費時間: 13小時34分鐘
總花費時間: 13小時40分鐘
分析: 導入這么慢, 應該是由于binlog日志寫入以及同步從庫導致, 瓶頸在于io,
數據導入時, 監控io, 基本屬于滿負載運行
七. 總結和風險
更改全部業務庫的存儲引擎為myisam, 導入數據總共大概需要13小時54分鐘, 導入數據時,
需要停止web和后端服務線上機器配置和負載和測試環境相差不大,
預計導入時間和測試相差不大.
總結
以上是生活随笔為你收集整理的mysql 修改单表导入大小_MySQL更改大库大表存储引擎方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql建立索引 有什么缺陷_MySQ
- 下一篇: java build返回空值_OKHTT