zoukankan      html  css  js  c++  java
  • Linux centosVMware MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

    一、MySQL主从介绍

    MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 主从过程大致有3个步骤

    1)主将更改操作记录到binlog里

    2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里

    3)从根据relaylog里面的sql语句按顺序执行

    主上有一个log dump线程,用来和从的I/O线程传递binlog

    从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地

    MySQL主从原理图

    三、配置主

    安装mysql

    修改vi /etc/my.cnf,增加server- id = 101和log_bin = davery1

     

    报错,需要把 /data/mysql   和/usr/local/mysql 的数组数主都改一下

    cd /usr/local/mysql

    chowen -R mysql.mysql .

    chown -R mysql.mysql /data/mysql

     

    修改完配置文件后,启动或者重启mysqld服务

    /etc/init.d/mysqld restart

    cd /data/mysql 这时目录里边会生成很多新的文件,index文件必须一定要有在能完成主从配置

    测试

    把zrlog备份到 /tmp/zrlog.sql

    创建一个新的库test2,并把/tmp/zrlog.sql这个库回复到test2,后边参考的库就是test2

    [root@davery mysql]#  /usr/local/mysql/bin/mysql -uroot -pmimA123 -e "create database test2"

    /usr/local/mysql/bin/mysql -uroot -pmimA123 test2 < /tmp/zrlog.sql

    查看两个库test2  zrlog 大小一致

     

    创建用作同步数据的用户,先登陆mysql

    [root@davery mysql]# /usr/local/mysql/bin/mysql -uroot -pmimA123

    mysql> grant replication slave on *.* to 'repl'@'192.168.1.106' identified by 'mimA123'; 指定从ip,以密码登陆

    mysql>  flush tables with read lock;把表锁定

    show master status;使用到如下两个

    davery1.000002

    10557

     

    然后退出

    数据备份,这时候主就配置好了

    四、配置从

    安装mysql

    查看my.cnf,配置server-id = 106,要求和主不一样

    修改完配置文件后,启动或者重启mysqld服务

    [root@davery01 mysql]# /etc/init.d/mysqld restart

    把主上test2库同步到从上

    scp 192.168.1.101:/tmp/*.sql /tmp/

    可以先创建test2库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入test2库,为防止错乱,两边都需要有同样的数据库名。

    /usr/local/mysql/bin/mysql -uroot

    mysql> create database davery;

    mysql> create database zrlog;

    mysql> create database test2;

    可以看到数据已经一致了

    从备份原/tmp/*.sql 还原到对应的库里边

    [root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot zrlog < /tmp/zrlog.sql
    [root@davery01 ~]#
    [root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot test2 < /tmp/zrlog.sql
    [root@davery01 ~]#
    [root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot mysql < /tmp/my2.sql
    [root@davery01 ~]#
    [root@davery01 ~]#
    [root@davery01 ~]# ls /data/mysql

    然后登陆从,并关闭从

    stop slave;

    mysql> change master to master_host='192.168.1.101', master_user='repl', master_password='mimA123', master_log_file=='davery1.000002', master_log_pos=10557;

    start slave;

    show slave status\G

    出现如下内容说明主从配置成功啦!

    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.1.101
    Master_User: repl
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: davery1.000002  
    Read_Master_Log_Pos: 10557
    Relay_Log_File: davery01-relay-bin.000002
    Relay_Log_Pos: 281
    Relay_Master_Log_File: davery1.000002
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes  这两行说明主从在运行。

    还要到上执行 unlock tables 这一步也不能忘记

    这时候主从配置就真的配置完成了

    五、测试主从同步

    从上执行mysql -uroot

    show slave stauts\G

    看是否有

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    还需关注

    Seconds_Behind_Master: 0 //为主从延迟的时间

    Last_IO_Errno: 0

    Last_IO_Error:

    Last_SQL_Errno: 0

    Last_SQL_Error:

    配置参数

    vim  /etc/my.cnf

    主服务器上 binlog-do-db= //仅同步指定的库

    binlog-ignore-db= //忽略指定库

    从服务器上

    replicate_do_db=

    replicate_ignore_db=   忽略库

    replicate_do_table=

    replicate_ignore_table=   忽略表

    replicate_wild_do_table=    //如aming.%, 支持通配符%

    replicate_wild_ignore_table=

    测试主从

    主上 

    /usr/local/mysql/bin/mysql -uroot -pmimA123 登陆

    查看都有哪些库

    使用test2库

    use test2;

    select count(*) from user; 查看user表有多少行

    可看到一行

    truncate table ;

    到从上 

    /usr/local/mysql/bin/mysql -uroot

    select count(*) from user; 也是一行

    主上继续drop table user;

  • 相关阅读:
    看完了红米5 Plus发布会,我觉得魅蓝Note6降价降多了
    红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
    java.lang.NoClassDefFoundError: org/apache/ibatis/mapping/DatabaseIdProvider
    mac tree命令
    spring boot集成dubbo
    玩转Spring Boot 集成Dubbo
    Linux下复制粘贴快捷键
    用创业舞动飞扬的青春
    SpringMVC 学习笔记(一) Hello World
    从 Kubernetes 谈容器网络
  • 原文地址:https://www.cnblogs.com/davery/p/8992473.html
Copyright © 2011-2022 走看看