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

  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/EikiXu/p/9811764.html
Copyright © 2011-2022 走看看