爱分享666

当前位置:首页 >资讯>站长新闻

inux下mysql主从复制搭建以及所遇到的问题

时间:2021-03-29 06:59:00 阅读:83

目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制

linux搭建环境以及linux安装mysql,请自行网上查询

环境:
  主数据库: 192.168.18.4
  从数据库: 192.168.18.5

原理:

20190327111932905.png



配置步骤:

1、保证两个数据库中的库和数据是一致的;

2、在主数据中创建一个同步账号(可不创建使用现有的),如果仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。
1)、创建一个账号,账号:master 密码: 123321

2)、不创建账号,用原来安装数据所设置的账号即可、我这里用账号:root 密码:mysql

登录mysql 服务输入一下命令

创建一个账号,不创建可以不执行

Mysql>CREATE USER 'root '@'%' IDENTIFIED BY 'mysql';

授权给从库账号和密码


Mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.18.5' IDENTIFIED BY 'mysql';

Mysql>FLUSH PRIVILEGES;

3、配置主数据库

1)要主数据库,你必须要启用二进制日志(binary logging),并且创建一个唯一的Server ID,这步骤可能要重启MySQL。

2)主服务器发送变更记录到从服务器依赖的是二进制日志,如果没启用二进制日志,复制操作不能实现(主库复制到从库)。

3)复制组中的每台服务器都要配置唯一的Server ID,取值范围是1到(232)−1,你自己决定取值。

4)配置二进制日志和Server ID,你需要关闭MySQL和编辑my.cnf或者my.ini文件,在 [mysqld] 节点下添加配置。

5)下面是启用二进制日志,日志文件名以“master-bin”作为前缀,Server ID配置为1,如下:

    log-bin=mysql-bin

    #标识唯一id(必须),一般使用ip最后位

    server-id=100

    #不同步的数据库,可设置多个

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    binlog-ignore-db=mysql

    #指定需要同步的数据库(和slave是相互匹配的),可以设置多个

    binlog-do-db=mydb

4、重启mysql

5、查看主服务器状态:

  1. service mysqld restart

  2. mysql -uroot -p

  3. mysql> show master status;

 注意:记录好File和Position,后面要用

6、配置从数据库:
1)从服务器,同理,要分配一个唯一的Server ID,需要关闭MySQL,修改好my.cnf后再重启,如下:

    #开启二进制日志

    log-bin=mysql-bin

    server-id=101

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    binlog-ignore-db=mysql

    #与主库配置保持一致

    replicate-do-db=mydb

    replicate-ignore-db=mysql

    slave-skip-errors=all

    slave-net-timeout=60

2)在从服务器里配置连接主服务器的信息:
进入mysql:  master_log_file、master_log_pos一定要和主库保持一致

mysql -uroot -p


    Mysql>stop slave;

    Mysql>change master to master_host='192.168.18.4', master_port=3306, master_user='root',         master_password='mysql', master_log_file='master-bin.000008', master_log_pos=106;

说明:192.168.18.4是主服务器的id,master_log_file='master-bin.000008'是主服务器的File(你主服务器查出来的是什么就写什么),master_log_pos=106是主服务器的Position(你主服务器查出来的是什么就写什么);每次重新启动主服务器,master_log_file和master_log_pos都会变。


3)查看状态

mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.137.130

                  Master_User: zhu1

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: master-bin.000010

          Read_Master_Log_Pos: 591960

               Relay_Log_File: slave-relay-bin.000002

                Relay_Log_Pos: 592106

        Relay_Master_Log_File: master-bin.000010

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 


4)若 Slave_SQL_Running: no 请重复执行以下内容,直至yes:

    mysql>stop slave; 

    mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 

    mysql>start slave;

遇到问题解决

1、Mysql 配置主从时出现如下错误:The slave I/O thread stops because master and slave have equal MySQL server ids;


排查错误

分别在主从数据库中执行如下sql, 并必读两边的server_id 是否一样,一样则修改my.cnf设置成不一样:

    show variables like '%server_id%';

分别在主从数据库中执行如下sql, 并必读两边的server_uuid 是否一样,如果一样则删除从数据库的数据目录下的auto.cnf:

   show variables like '%uuid%';

确认主从数据库的数据host是否一样,如果主从数据库的host一样也会报这个错误。




上一篇:

Idea2020版本 svn文件修改后出现烦人的删除前后空格问题

下一篇:

linux虚拟机配置静态ip, 不能远程访问、ping不通解决方法

0 +1
打赏 ×

如果网站能给予您帮助,欢迎给网站捐助,给我打赏个吧!
您的支持是我的动力,让网站能一直陪伴着大家,共同学习进步。
捐助费用将用于网站日常运营(服务器租费、域名租费等)
捐助者请发送邮箱提供姓名至 zhaoqn@163.com 留言以表感谢。

网友评论


  • 验证码:

热门评论

本月热门

推荐资料

精彩评论

回到顶部