Mysql 跨库迁移


由于数据库版本过低 & 磁盘空间太小,故需进行各方面指标的升级。

  1. 本来是想用heidisql自带的跨库迁移工具进行迁移,可是由于数据量比较大(70G), 且经过测试,并发最高在10000/s条左右,故最后放弃,选择使用mysqldump。
  2. linux下直接
  3. --host=sourceip -uroot -proot -C --databases dbname|mysql --host=destinationip -uroot -proot dbname

缺点是会锁表,适用于业务活跃度不高的场景。
-- 忽略某些表
mysqldump --host=sourceip -uroot -proot -C --databases dbname --ignore-table=dbname.tablename|mysql --host=destinationip -uroot -proot dbname
-- 指定某张表
mysqldump --host=sourceip -uroot -proot -C --databases dbname --tables tablename|mysql --host=destinationip -uroot -proot dbname

-- 后遗症

  1. 迁移过后,数据无法插入,报了个mysql的经典错误:data truncated for column at row 1
    想了下应该是sql_mode 的关系,把数据格式給限制住了,结果 select @@global.sql_mode 一看 确实有很多限制,干脆索性直接设置为空算了,

set global sql_mode = '问题解决'
当然这不是一劳永逸的,重启mysql服务后会失效,所以还要去 my.cnf 修改一波:
mysqld]
sql_mode = ''

附上:MySQL的sql_mode模式说明及设置

声明:Codererrr's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Mysql 跨库迁移


Coding Changes The World