mysql 主从复制(二)

1.工作原理

    上一篇文章讲过主服务器master 每次对数据库的修改操作都会 产生bin-log二进制文件  记录数据库的变更操作

        从服务器slaveer 会监听到主服务器的变更 日志文件 将bin-log 文件拷贝到从服务slaver的中继日志文件relay-log中

        从服务器重做中继日志文件中的事件 将日志文件写入自己的数据中  大体流程图如下:

       

2.主从配置 

 主服务器master的配置 上一篇文章有详细说过 主要的配置就是  在my.cnf中配置 server-id = 1 主服务器保证和slaver服务器不一样
         log-bin=mysql-bin 开启bin-log日志文件
         重启master服务器
 切换的mysql命令行   输入 show master status; 打印bin 文件信息表示配置成功
        
         从服务器slaver的配置(一)    注意此配置是mysql   5.5之前的配置  之后的版本这样配置无效   本次试验采用第二种配置方式
 log-bin = mysql-bin
         server-id=2(保证和主服务器不一样)
         master-host=192.168.1.169(主服务器的ip)
         master-user=root(访问主服务器的用户名)
         master-password=password(访问主服务器的密码)
         master-port=3306(访问主服务器的端口)
         重启从服务器slave    首先要确保主服务器提供的用户名和密码从服务器能够访问
从服务器slaver的配置()    注意此配置是mysql   5.5之的配置
        因为之后的版本都不支持master-* 之类的参数了
但是同样需要在/etc/my.cnf 中配置以下参数
server-id=2(保证与主服务器不一致)
replicate-ignore-db = mysql(不复制默认的数据库mysql)
replicate-ignore-db = information_schema(不复制默认的数据库information_schema)
重启mysql 服务
其他的参数通过在msyql命令行去执行 也就是和配置一的效果达到的一样
到此还没配置完成
现在需要再主数据库master执行
即主服务器授权同步账户
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.170%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
root 链接到从数据库的用户名   192.168.1.170 为ip     password为密码
此时主从服务器 执行  
stop slave;
reset stop;
start stop;
再在从服务器中执行  mysql 命令行中执行 show slave status \G;
查看是否配置成功列表
报错 UUIDs must be different 。。。错误
是因为server-id  相同因为是虚拟机克隆的
(有同学可能会说我不是配置了server-id 不一样的吗? show variable like ‘server_id’ 确实不一样   其实你查看 /var/lib/mysql  中的 auto.cnf  上面的uuid是和从服务器一样
mv     ./auto.cnf ./auto.cnf.bk  重命名一下该文件
再重启 就不会报错了
)

3.检查配置是否成功

  现在在mysql命令行输入 show slave status \G;
如果出现

则表明主从配置成功!

4.检查在主数据库插入数据从数据库是否能同步数据

        在master数据库中插入数据 在slaver数据库中同样出现一条一样的数据
master数据插入数据:

查看从数据库slaver 中的数据是否同步:
至此已经全部完成了mysql主从复制的实验   下一篇文章将讲解 主从复制在spring + mybatis + springmvc中的读写分离实现

最后谢谢大家,大家觉得我写的可以 可以给我鼓励 打赏一下,多少都可以 哈哈哈






猜你喜欢

转载自blog.csdn.net/zzxwx/article/details/78030573