zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    头脑王者 艺术,电影,体育,时尚,动漫
    头脑王者 音乐
    头脑王者 地理
    头脑王者 历史,军事
    头脑王者 文学
    Jenkins project
    sql server drop login failed
    devenv.exe 编译Solution
    Jenkins
    头脑王者
  • 原文地址:https://www.cnblogs.com/EikiXu/p/9811764.html
Copyright © 2011-2022 走看看