MySQL 迁移并搭建主从(实践)

Posted 书山有路勤为径,学海无涯苦作舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 迁移并搭建主从(实践)相关的知识,希望对你有一定的参考价值。

第一阶段

一、数据的初始化

1、老主库

关闭sql_log_bin
set sql_log_bin = off;


创建导出用户
grant all privileges on *.* to ‘dump‘@‘10.50.31.37‘ identified by ‘rooT_258‘;
grant all privileges on *.* to ‘dump‘@‘10.1.21.47‘ identified by ‘rooT_258‘;
grant all privileges on *.* to ‘dump‘@‘172.20.30.16‘ identified by ‘rooT_258‘;
grant all privileges on *.* to ‘dump‘@‘10.50.30.32‘ identified by ‘rooT_258‘;


2、新库

创建备份的路径
cd /
mkdir backup
cd backup
mkdir backup20180817


在新库所在服务器上执行备份老库的操作
mydumper -h 172.17.0.3 --regex="aa.*" -u root -p ‘abc123‘ -r 300000 -G -E -R -v 3 -t 5 -o /data/backup20181018 > /data/mydumper20181018.log 2>&1 &
参数说明:
-u --user 备份所使用的用户
-x, --regex 是同正则表达式匹配 ‘db.table‘
-r, --rows 将表按行分块时,指定的块行数,指定这个选项会关闭 --chunk-filesize
-e, --enable-binlog 启用还原数据的二进制日志
-V, --version 显示版本号
-t, --threads 开启的备份线程数,默认是4
-o, --overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构


检查备份是否有错误
grep -i error /data/mydumper20181018.log


新库上清空数据库(先删表,后drop数据库)
drop database aa;


关闭binlog,修改/etc/my.cnf文件,找到
log-bin=mysql-bin
binlog_format=mixed
再这两行前面加上#,将其注释掉,再执行/etc/init.d/mysqld restart即可。


用从老库备份的数据初始化新库(如果版本不一致,需要手动从老库导出用户信息,再导入新库)
myloader -S /usr/local/mysql/mysql.sock -u root -p ‘abc123‘ -v 3 -t 10 -e y -d /data/backup20181018 >> /data/myloader20181018.log 2>&1 &


检查导入是否有错误
grep -i error /data/myloader20181018.log

二、数据同步

1、老库

关闭sql_log_bin
set sql_log_bin=off;


创建数据同步用户
grant replication slave ,replication client on *.* to ‘replication‘@‘10.1.12.205‘ identified by ‘Replication!2#‘;
grant replication slave ,replication client on *.* to ‘replication‘@‘10.1.21.118‘ identified by ‘Replication!2#‘;
grant replication slave ,replication client on *.* to ‘replication‘@‘10.50.16.102‘ identified by ‘Replication!2#‘;


2、新库

查看备份数据的mater的位置
cat /data/backup20181018/metadata


修改文件/usr/local/mysql/etc/my.cnf,将service-id设置成和老库不一样
vi /usr/local/mysql/etc/my.cnf


修改uuid,文件位置/data/mysql/data/auto.cnf(也就是数据文件的路径下),移除auto.cnf,重启mysql服务重新生成
mv /mysql/data/auto.cnf ..
service mysqld restart


设置主从
CHANGE MASTER TO MASTER_HOST=‘172.17.0.3‘, MASTER_USER=‘repl‘, MASTER_PASSWORD=‘mysql‘, MASTER_PORT=3306,MASTER_LOG_FILE=‘my-bin.000004‘, MASTER_LOG_POS=154 for channel ‘aa‘;


开启主从并观察同步情况
start slave;
show slave status G


停止复制stop slave,启动binlog,修改/etc/my.cnf,重启mysql服务
log-bin=mysql-bin
binlog_format=mixed
将这两个参数前面的#去掉
service mysqld restart


重新开启复制
start slave


























































以上是关于MySQL 迁移并搭建主从(实践)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制搭建教程收集(待实践)

大型网站技术实践初级篇:搭建MySQL主从复制经典架构

大型网站技术实践初级篇:搭建MySQL主从复制经典架构 一业务发展驱动数据发展

搭建mysql主从并编写监控主从状态脚本

二进制安装MySQL5.7并搭建主从

MYSQL主从同步搭建