MySQL 主从复制简单搭建配置(简单,绝对能用)

原文地址(本人服务器):http://www.chenweirui.cn/blog/mysql%E4%B8%...

折腾一天,只因为网上讲的少了要开启mysql远程链接权限(mysql默认禁止远程链接,如navicat等软件的连接)。
主从复制的作用是做冗余备份,而且主从做读写分离的话 往往从库会有好几台 分担了压力 并且可以直接做负载均衡。

实验环境

  • 两台服务器做配置测试:虚拟机中的ubuntu(192.168.128.131)和宿主机xp(192.168.128.1)
  • 分别安装有mysql。最好版本一样(我的不一样)
  • 机子都ping得通

主服务器配置(ubuntu)

配置mysql

#vi /etc/mysql/my.cnf
     [mysqld]
         log-bin=mysql-bin   #[必须]启用二进制日志
         server-id=1         #[必须]服务器唯一ID,默认是1,一般取IP最后一段

检查mysql是否允许远程连接

    bind-address = 0.0.0.0       #这样表示允许所有网段连接

进入mysql终端

    #mysql -uroot -proot

新建mysql用户(从服务器用到此账号配置)backup

    mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';

刷新一下权限表

    mysql> flush privileges;

重启mysql

    #service mysql restart

进入mysql终端查看master状态

    mysql> show master status;

主库
记录file 和 position的值,从服务器配置用到。这个时候不要去动主数据库,会影响position的值。

从服务器配置(xp)

配置mysql的my.ini并重启

[mysqld]
     log-bin=mysql-bin   #[可选]启用二进制日志
     server-id=2         

登录mysql终端后执行

    mysql> change master to master_host='192.168.128.131',
    master_user='backup',
    master_password='backup',
    master_log_file='mysql-bin.000002',
    master_log_pos=612;

启动slave从库

    mysql> start slave;

查看slave从库

    mysql> show slave status\G;

这里写图片描述

Slave_IO_Running和Slave_SQL_Running必须都为Yes才算成功。

测试

ubuntu mysql

    mysql> create database test_repl;

然后查看xp mysql如果出现test_repl库则说明主从复制配置成功

    mysql> show databases;

结尾

这只是最基本的配置,还有很多配置命令就不折腾了。测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库slave会报错,执行这个命令后重启从库就可以跳过这个错误。

#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        跳过一个事务
本帖已被设为精华帖!
本帖由系统于 5年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

好文,珍藏。

7年前 评论

是因为版本不一样还是什么,我的是 log_bin 不是 log-bin

7年前 评论

@贺钧威 如果能记录日志就按你那个写法咯,我也没见过

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!